MySQL5.1へのアップグレードメモ
amd64 な環境で、 MySQL が 5.0 → 5.1 系になってたので、メモ。正しいかどうかは知らない。
インストール前に
Gentoo からアップグレードに関するニュースが来ているので読んでおく。
ニュースの一覧の取得
eselect news list で取得できる。
$ eselect news list News items: [1] read 2010-03-25 Python 3.1 [2] read 2009-07-02 kdeprefix and monolithic ebuilds issues [3] read 2010-08-01 --as-needed enabled in default profiles [4] read 2010-02-21 MySQL 5.1 unmasking and upgrade procedures
ニュースを読んでみる
eselect news read 番号orタイトル で読むことができる。今回は4番を選択。
$ eselect news read 4 2010-02-21-mysql-upgrade Title MySQL 5.1 unmasking and upgrade procedures Author Robin H. JohnsonPosted 2010-02-21 Revision 4 The 5.1 series of MySQL is going to be unmasked at the same time as the release of this news item. When upgrading from an older major version (including 5.0), you will be required to rebuild everything linked to the libmysqlclient.so.15 and libmysqlclient_r.so.15. You can do this by installing app-portage/gentoolkit and running: # revdep-rebuild --library libmysqlclient.so.15 # revdep-rebuild --library libmysqlclient_r.so.15 If you use the Portage 2.2 series, you may also use: # emerge @preserved-rebuild The official upgrade documentation is available here: http://dev.mysql.com/doc/refman/5.1/en/upgrade.html Note that existing databases may need converting as well, again including those upgrading from 5.0 to 5.1. Details are in the update documentation.
サービスの停止
とりあえず MySQL のサービスを停止しておく。後でもいいとは思うし、全ての作業が終わった後 restart しても多分問題ないとは思う。
$ sudo /etc/init.d/mysql stop * Stopping ... * Stopping mysqld (0)
マージする
いつも通りマージする。今回 world で全部まとめてアップグレードされてる。
$ sudo emerge -vuND world とか $ sudo emerge -u1 mysql とか
コンフィグファイルを確認
dispatch-conf か etc-update をかける。
$ sudo dispatch-conf
ニュースの内容に従って作業する
先ほど読んだニュースの内容に従って作業する。 revdep-rebuild するだけ。インストールしてあるパッケージによっては、何個かリビルドがかかるはず。
$ sudo revdep-rebuild --library libmysqlclient.so.15 $ sudo revdep-rebuild --library libmysqlclient_r.so.15
一応書いておくけど、 revdep-rebuild は app-portage/gentoolkit に含まれているので、いれてない人はいれておく。
ちなみに、ライブラリに関してはこんな感じになってる。
$ ls /usr/lib64/libmysqlclient* /usr/lib64/libmysqlclient.so /usr/lib64/libmysqlclient.so.16.0.0 /usr/lib64/libmysqlclient_r.so.16.0 /usr/lib64/libmysqlclient.so.16 /usr/lib64/libmysqlclient_r.so /usr/lib64/libmysqlclient_r.so.16.0.0 /usr/lib64/libmysqlclient.so.16.0 /usr/lib64/libmysqlclient_r.so.16
新しいのしか入ってません。古いライブラリを参照しているやつをリビルドする必要があるのね。