諸事情で remi リポジトリから入れていた MySQL 5.5 を CentOS リポジトリの 5.1 に戻しました。
remi から MySQL をインストールする手順は下記の 方法2 標準リポジトリの優先度を remi より高く で行なっている前提です。
試行錯誤の跡
まずは yum リポジトリの設定を変更します。 php と mysql だけ CentOS の標準レポから除外していたので、php だけ除外するように修正します。
/etc/yum.repos.d/CentOS-Base.repo
- exclude=php* mysql* + exclude=php*
そしておもむろにダウングレード。
# yum downgrade mysql-libs mysql mysql-server
そんな簡単にいくわけがないですね。
Error: Package: php-mysql-5.4.13-1.el6.remi.x86_64 (@remi) Requires: libmysqlclient.so.18(libmysqlclient_16)(64bit) Removing: mysql-libs-5.5.30-1.el6.remi.x86_64 (@remi) libmysqlclient.so.18(libmysqlclient_16)(64bit) Downgraded By: mysql-libs-5.1.67-1.el6_3.x86_64 (updates) Not found Error: Package: php-mysql-5.4.13-1.el6.remi.x86_64 (@remi) Requires: libmysqlclient.so.18()(64bit) Removing: mysql-libs-5.5.30-1.el6.remi.x86_64 (@remi) libmysqlclient.so.18()(64bit) Downgraded By: mysql-libs-5.1.67-1.el6_3.x86_64 (updates) Not found Error: Package: php-mysql-5.4.13-1.el6.remi.x86_64 (@remi) Requires: libmysqlclient.so.18(libmysqlclient_18)(64bit) Removing: mysql-libs-5.5.30-1.el6.remi.x86_64 (@remi) libmysqlclient.so.18(libmysqlclient_18)(64bit) Downgraded By: mysql-libs-5.1.67-1.el6_3.x86_64 (updates) Not found
どうやら php-mysql-5.4.13-1
が libmysqlclient.so.18
を必要としており、libmysqlclient.so.18
が mysql-libs-5.5.30-1
含まれているため mysql-libs-5.5.30-1
を削除出来なかったようです。
ひとまず php-mysql
は後でどうにかすることにして削除します。
# yum erase php-mysql
そしておもむろに再試行。
# yum downgrade mysql-libs mysql mysql-server
やっぱりダメでした。。。
Transaction Check Error: file /usr/lib64/mysql/libmysqlclient.so.16.0.0 from install of mysql-libs-5.1.67-1.el6_3.x86_64 conflicts with file from package compat-mysql51-5.1.54-1.el6.remi.x86_64 file /usr/lib64/mysql/libmysqlclient_r.so.16.0.0 from install of mysql-libs-5.1.67-1.el6_3.x86_64 conflicts with file from package compat-mysql51-5.1.54-1.el6.remi.x86_64
今度は libmysqlclient.so.16
が mysql-libs-5.1.67-1
と compat-mysql51-5.1.54-1
で競合していることが原因です。
compat-mysql51-5.1.54-1
は名前の通り MySQL 5.1 の互換性用のパッケージです。
MySQL 5.5 をインストールしていたから必要だったのであり、MySQL 5.1 にダウングレードしようとしている今となっては不要なものです。
というわけで削除します。
# yum erase compat-mysql51
「cron とか postfix を削除するけどいいか?」的なプロンプトが表示されました。
「compat-mysql51
を削除 → mysql-libs
のダウングレード」の順番だと一時的に libmysqlclient.so.16
が無くなってしまうので、
それに依存しているパッケージは消えてしまいますねー。なのでその2つを一緒に行います。
まずは yum shell
で yum をシェルモードで起動します。
# yum shell
yum のシェルモードというのは yum をインタラクティブな感じにするモードで、複数の処理を一括で実行したり出来ます。 今回のような複数の処理(erase と downgrade)を同時にやりたいときに便利です多分。
> downgrade mysql-libs mysql mysql-server > erase compat-mysql51 > transaction > run > exit
仕上げ
ダウングレード成功しました! 最後に、削除した php-mysql をインストールしなおして完了です。
# yum install php-mysql
あっ(汗)
Error: Package: php-mysql-5.4.13-1.el6.remi.x86_64 (remi) Requires: libmysqlclient.so.18(libmysqlclient_16)(64bit) Error: Package: php-mysql-5.4.13-1.el6.remi.x86_64 (remi) Requires: libmysqlclient.so.18(libmysqlclient_18)(64bit) Error: Package: php-mysql-5.4.13-1.el6.remi.x86_64 (remi) Requires: libmysqlclient.so.18()(64bit)
大丈夫、予想通りです。何事もなかったかのように MySQL Native Driver を入れればおっけーです。
# yum install php-mysqlnd
まとめ
yum shell
超便利。