Debian7にてsslの問題修正などをアップデートするためにパッケージの更新をしていたところRedmineが動かなくなっていた。
Unicornを実行すると以下のようなエラーが出力されている。
Incorrect MySQL client library version! This gem was compiled for 5.5.35 but the client library is 5.6.17
mysqlもアップデートされていたけどちゃんと見ていなかった。調べてみると面倒なことになっている。
$ sudo dpkg -l | grep mysql
ii libdbd-mysql-perl 4.021-1+b1 amd64 Perl5 database interface to the MySQL database
ii libmysqlclient-dev 5.6.17-1~dotdeb.1 amd64 MySQL database development files
rc libmysqlclient16 5.1.66-0+squeeze1 amd64 MySQL database client library
ii libmysqlclient18:amd64 5.6.17-1~dotdeb.1 amd64 MySQL database client library
ii mysql-client 5.5.35+dfsg-0+wheezy1 all MySQL database client (metapackage depending on the latest version)
ii mysql-client-5.5 5.5.35+dfsg-0+wheezy1 amd64 MySQL database client binaries
ii mysql-common 5.6.17-1~dotdeb.1 all MySQL database common files, e.g. /etc/mysql/my.cnf
ii mysql-server 5.5.35+dfsg-0+wheezy1 all MySQL database server (metapackage depending on the latest version)
rc mysql-server-5.1 5.1.66-0+squeeze1 amd64 MySQL database server binaries and system database setup
ii mysql-server-5.5 5.5.35+dfsg-0+wheezy1 amd64 MySQL database server binaries and system database setup
ii mysql-server-core-5.5 5.5.35+dfsg-0+wheezy1 amd64 MySQL database server binaries
ii php5-mysql 5.5.11-1~dotdeb.1 amd64 MySQL module for php5
mysqlは5.5が入っているが、開発用ライブラリはdotdebの5.6が入ってしまっている。dotdebはNginxやPHPの新しいバージョンをリリースしているリポジトリ。(紛らわしいがphp5-mysql
が5.5なのはPHPの現行最新版が5.5.11なため)
mysqlパッケージを検索するとdotdebがmysql-server-5.6
を公開しているようなので5.6にあげてしまうことにした。
mysql-*-5.5
とmysql-*-5.6
は別パッケージでmysql-*-5.6
を入れようとしてもうまくアップグレードされないようなので、5.5を削除してから5.6を入れるみようとした。すると、そもそもmysql-client
とmysql-server
のバージョンもdotdebの5.6になっていたので、mysql-*-5.5
を削除しようとすると5.6が推薦されてインストールされた。apt-get upgrade mysql-client mysql-server
で良かったのかもしれない。
sudo apt-get remove mysql-client-5.5 mysql-server-5.5
...
The following packages will be REMOVED:
mysql-client-5.5 mysql-server-5.5
The following NEW packages will be installed:
mysql-client-5.6 mysql-server-5.6
The following packages will be upgraded:
mysql-client mysql-server
2 upgraded, 2 newly installed, 2 to remove and 0 not upgraded.
次にgemのmysql2
パッケージをビルドしなおすためにパッケージを入れなおした。
$ rm -rf vendor/bundle
$ bundle install --path=vendor/bundle
...
Installing mysql2 (0.3.15)
ちなみに今さくらのVPSの石狩リージョンの方に移行しようとしていてそちらはChef-Soloでセットアップしてみると綺麗に5.6になっていたのでやはりmysql-client mysql-server
をアップグレードすればよかったのかもしれない。
# default[:mysql][:packages] = %w(mysql-client mysql-server mysql-common mytop libmysqlclient-dev)
node[:mysql][:packages].each do |pkg|
package pkg do
action :install
end
end
$ sudo dpkg -l | grep mysql
ii libdbd-mysql-perl 4.021-1+b1 amd64 Perl5 database interface to the MySQL database
ii libmysqlclient-dev 5.6.17-1~dotdeb.1 amd64 MySQL database development files
ii libmysqlclient18:amd64 5.6.17-1~dotdeb.1 amd64 MySQL database client library
ii mysql-client 5.6.17-1~dotdeb.1 all MySQL database client (metapackage depending on the latest version)
ii mysql-client-5.6 5.6.17-1~dotdeb.1 amd64 MySQL database client binaries
ii mysql-client-core-5.6 5.6.17-1~dotdeb.1 amd64 MySQL database core client binaries
ii mysql-common 5.6.17-1~dotdeb.1 all MySQL database common files, e.g. /etc/mysql/my.cnf
ii mysql-server 5.6.17-1~dotdeb.1 all MySQL database server (metapackage depending on the latest version)
ii mysql-server-5.6 5.6.17-1~dotdeb.1 amd64 MySQL database server binaries and system database setup
ii mysql-server-core-5.6 5.6.17-1~dotdeb.1 amd64 MySQL database server binaries
ii php5-mysql 5.5.11-1~dotdeb.1 amd64 MySQL module for php5
Redmineは無事動いた。