技術者になりたい何か

技術者になりたい何かの覚書的な何かです

パッケージ管理しりーず リポジトリについて(Red Hat系)

リポジトリとは

リポジトリとはネットワーク上のソフトウェアの倉庫のようなもの。
デフォルトで置いてあるリポジトリに追加することによって、参照する倉庫が増える(=使用可能なソフトが増える)。
だがやたら増やし過ぎると依存関係でエラーが出たり、yum の読み込みがやたら遅くなったりするのでそのあたりはお好みで。


追加と削除

リポジトリは追加と削除が可能。
CentOSの場合、リポジトリは/etc/repos.d/にある。
.repoというのがリポジトリ

$ ls -la /etc/yum.repos.d/
合計 60
drwxr-xr-x.   2 root root  4096  4月 11 05:51 2016 .
drwxr-xr-x. 114 root root 12288  5月  7 11:54 2016 ..
-rw-r--r--    1 root root  1991  8月  4 01:13 2015 CentOS-Base.repo
-rw-r--r--    1 root root   647  8月  4 01:13 2015 CentOS-Debuginfo.repo
-rw-r--r--    1 root root   630  8月  4 01:13 2015 CentOS-Media.repo
-rw-r--r--    1 root root  6259  8月  4 01:13 2015 CentOS-Vault.repo
-rw-r--r--    1 root root   289  8月  4 01:13 2015 CentOS-fasttrack.repo
-rw-r--r--    1 root root   180  9月 30 16:30 2014 WANdisco.repo
-rw-r--r--    1 root root   183  4月  2 02:00 2011 adobe-linux-x86_64.repo
-rw-r--r--    1 root root   193  4月 11 05:51 2016 emacs.repo
-rw-r--r--    1 root root  1056 11月  5 12:52 2012 epel-testing.repo
-rw-r--r--    1 root root   957 11月  5 12:52 2012 epel.repo

 

追加したいリポジトリがある場合、基本的にはDLしてここに突っ込めばいい。


実行例

CentOS6系のemacsは23系しかなく、24系を入れるにはリポジトリ追加か自前ビルドしかない。
ちなみにemacsは24系で新機能がたくさん搭載されてて24系が使いたい。

$ cd /etc/yum.repos.d/
$ sudo wget https://gist.githubusercontent.com/AaronTheApe/5540012/raw/5782a8d6a95f76daeed6073dc0c90612fefe2fb3/emacs.repo
$ sudo yum install emacs --nogpgcheck
$ emacs --version
GNU Emacs 24.5.1
Copyright (C) 2015 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of Emacs
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.

 
なお、追加したリポジトリを削除したいときは単純に/etc/yum.repos.d/hoge.repoを削除すればよい。
また、リポジトリをいじったおかげでなんだかyumの動きがおかしくなった(エラーが出るようになった)際には
デフォルトに戻す→キャッシュクリア→check-update→updateで通ることを確認すると良いだろう。

$ sudo mv /etc/yum/repos.d/emacs.repo ~/emacs.repo.bac
$ sudo yum clean
$ sudo yum check-update
$ sudo yum update

 


リポジトリファイルの中身


なんのことはない。参照するリポジトリのURLとgpg公開鍵情報が書いてあるだけ。

$ cat /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 6 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 6 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1

 

リポジトリ追加するたびにyum実行時に読み込みに行くURLが増えるため、追加しすぎるとyumが遅くなる。
ちなみにgpgは公開鍵。鍵が無いと認証エラーが出ることがあるが、--nogpgcheckで飛ばすことが可能。
ただしこれをやると、配布元が信頼できないときにおかしなパッケージ混ぜられたりすることがあるかもしれない。


yumの設定ファイル


/etc/yum.conf

$ cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

cachedir=/var/cache/yum/$basearch/$releasever

 


 キャッシュおいておくディレクトリ。この場合、/var/cache/yum/配下に
 $basearch(x86_64 or i386)ディレクトリ/リリース番号(CentOS 6.xなら6)というディレクトリが作られ、
 そこにキャッシュが保存される。

$ ls /var/cache/yum/x86_64/6
WANdisco  adobe-linux-x86_64  base  emacs  epel  extras  pjku  timedhosts.txt  updates

keepcache=0

 
 インストール成功後、ヘッダーとパッケージのキャッシュを保持しない。
 0⇒1にすると保持するようになる。

logfile=/var/log/yum.log

 
 ログファイルの保管場所。上記場合は/var/log/yum.logがログファイルになる。

gpgcheck=1

 
 GPG署名(リポジトリが本物であるか)のチェック。0で無効。

plugins=1

 
 プラグイン有効。0で無効。
 yumプラグインはシステム根幹に大きくかかわる為有効が推奨。

distroverpkg=centos-release

 
 デストリビューション判別する項目。