外部リポジトリを追加することで、標準リポジトリに登録されていないパッケージを導入することができます。
良く使うのはRepoforge(rpmforge),EPEL,ELRepo,Remiあたりでしょう。
※不慣れなうちはあっちにもこっちにも同じパッケージがあって混乱のもとにもなりかねないので、不要なリポジトリはインストールしないほうが良いかと思います。
が、リポジトリ登録の前にyum-plugin-prioritiesを導入しましょう。
リポジトリに優先順位をつけることができるパッケージで、CentOS標準のリポジトリからインストールされたパッケージが外部リポジトリにより勝手に更新されてしまったりすることを防ぐことができます。
逆に標準リポジトリより優先したいリポジトリがある場合はそういう設定も可能ですが、本項では前者の使い方を採用します。
1 |
yum install yum-plugin-priorities |
続いて標準リポジトリの優先順位を高く設定します。
1 |
vi /etc/yum.repos.d/CentOS-Base.repo |
1 2 3 4 5 6 7 8 9 10 11 |
[base] #追記 priority=1 [updates] #追記 priority=1 [extras] #追記 priority=1 |
そして、外部リポジトリ達を登録しましょう。
1 2 3 4 5 6 7 8 9 10 11 |
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm #epelはCentOS7標準リポジトリから入れられます!やったね! yum install epel-release rpm --import http://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm |
これ以降はお好みですが、
/etc/yum.repos.d/remi.repo
/etc/yum.repos.d/epel.repo
/etc/yum.repos.d/rpmforge.repo
/etc/yum.repos.d/remi.repo
のenabledを0に設定しておくのも良いかもしれませんが、最初にyum-plugin-prioritiesを導入してCentOS-Baseを最優先にしているのでデフォルト設定のまま使用しても問題は起こりにくいと思います。
enabled=0にすれば確かに細かな設定ができるのですが面倒でもあるので、標準リポジトリになかったら他のリポジトリから探してね!くらいの緩さがちょうどいいと思っています・・・。
ちなみにremiはデフォルトでenabled=0なので、remi内のパッケージを利用したい場合は明示的に記さないと使用されません。
remiを使いたい場合は下記のようにenablerepoオプションをつけることで対応できます。
1 |
yum --enablerepo=remi info php |
一歩進んだ使い方として、php関連のパッケージだけはremiを使いたい場合の設定方法は下記のとおりです。
(php55やphp56を使いたい場合は読み替えてください)
1 |
yum --enablerepo=remi install php |
1 |
/etc/yum.repos.d/CentOS-Base.repo |
1 2 3 4 5 6 7 8 9 10 11 |
[base] #追記(php関連のパッケージを除外する) exclude=php* [updates] #追記(php関連のパッケージを除外する) exclude=php* [extras] #追記(php関連のパッケージを除外する) exclude=php* |
1 |
vi /etc/yum.repos.d/remi.repo |
1 2 3 4 5 |
[remi] # 編集 enabled=1 # 追記 priority=2 |
優先度の高いCentOS-Baseのリポジトリからはphp関連のパッケージをインストール・アップデートしない設定に書き換え、remiリポジトリを無効->有効に変更することで、yum updateした際にphp関連だけremiに振られるようになります。
今回のように複数の外部リポジトリを導入している場合は、priority設定することで、別のリポジトリで勝手に上書きされることがないようにするのも忘れずに。