CentOS6 で remi から php や mysql をインストールするための yum の設定

:これは Qiita に投稿した内容と同じです

epel リポジトリを追加します(remi-release-6 が依存している)。

rpm --import http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/RPM-GPG-KEY-EPEL-6
rpm -ivh http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-7.noarch.rpm

remi リポジトリを追加します。

rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

yum リポジトリにプライオリティを指定するためのプラグインをインストールします(方法その1では不要)。

yum install yum-plugin-priorities

方法1 remi はデフォルト無効、インストール時だけ有効に

色々なサイトやブログで見かける方法ですが、remi リポジトリをデフォルトでは無効にしておいて、phpmysql のインストール時だけコマンドラインオプションで有効にします。

/etc/yum.repos.d/remi.repo

※デフォルトで無効だったと思います。

[remi]
 :
enabled=0
 :

コマンドラインで remi を有効にして phpmysql をインストール(あるいはアップデート)します。

yum --enablerepo=remi install php mysql-server
yum --enablerepo=remi update php mysql-server

この方法だと yum update では phpmysql がアップデートされません。 かといって yum --enablerepo=remi update すると関係無いパッケージまで remi のパッケージで上書きされてしまいます。

方法2 標準リポジトリの優先度を remi より高く

/etc/yum.repos.d/CentOS-Base.repo

標準リポジトリのプライオリティを 10 にします(未指定のデフォルトは 99)。そして、phpmysql 関連のパッケージを標準リポジトリから除外します。

[base]
priority=10
exclude=php* mysql*
 :

[updates]
priority=10
exclude=php* mysql*
 :

[extras]
priority=10
 :

/etc/yum.repos.d/remi.repo

remi リポジトリを有効にします。有効にしても優先度が低いので重複するパッケージは標準リポジトリが使われます(phpmysql 関連を除く)。

[remi]
 :
enabled=1
 :

インストールなりアップデートなりします。

yum install php mysql-server
yum update

方法3 remi を最優先、ただし phpmysql に限る

標準リポジトリのプライオリティはデフォルトのままで、remi リポジトリのプライオリティを高くして最優先にします。 さらに、remi リポジトリからは phpmysql 関連だけのパッケージをインストールするように設定します。

/etc/yum.repos.d/remi.repo

enabled=1
priority=10
includepkgs=php* mysql*

インストールなりアップデートなりします。

yum install php mysql-server
yum update

この状態で remi から phpmysql 以外のパッケージをインストールする場合は、次のように includepkgs を無効化します。

yum --setopt remi.includepkgs= install hogehoge