アップグレード顛末記
(1)testingの恐怖
「testingにはこれまでひどい目にあったことはない。不気味だw」などと余裕ぶっこいてたらmysql-server-5.0(ほとんど使ってないけど)のアップグレードでなにやら問題が。
mysqldプロセスが立ち上がってるのにmysqld.sockもmysqld.pidも作成されないという意味不明の状態に。
そのためmysqldをkill -9でしか止められなくなってアップグレードに失敗…
ちなみにカーネルが2.4.33.3のときにこの現象が発生。2.6.20.6(詳細は後述)では発生しませんでした。
- ↓その際挙動を調べようとしてmysqld_safeを実行したときのログ。この後、mysqldは終了せず生き残ってました。
# mysqld_safe --log-error=./mysql.log Starting mysqld daemon with databases from /var/lib/mysql mysqld_safe[2651]: started (Ctrl-C) /usr/bin/mysqladmin: connect to server at 'localhost' failed error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)' Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists! STOPPING server from pid file /var/run/mysqld/mysqld.pid mysqld_safe[2663]: ended
- etchなら問題なかったので、/etc/apt/preferencesに以下のエントリーを追加してmysqldだけetchでのバージョンに戻しました。(どんな副作用が起きるかわからんので責任は負いません…)
Package: mysql-server Pin: release a=stable Pin-Priority: 1001 Package: mysql-server-5.0 Pin: release a=stable Pin-Priority: 1001
参考:http://debian.fam.cx/index.php?AptGet
- 最後にバグレポート。
#416841 - mysql postinst hangs on kernel 2.4 systems? - Debian Bug report logs
(2)カーネル2.6の恐怖・序章?
上記(1)の問題解決の過程でカーネル2.6.20.6をソースからmake-kpkgしたところ、ブート後にdaemontools(ソースからコンパイルして導入)が立ち上がらなくなりました。
svscan: relocation error: svscan: symbol errno, version GLIBC_2.0 not defined in file libc.so.6 with link time reference
対策として、以下の環境変数を設定すると無事起動する模様です。
LD_ASSUME_KERNEL=2.4.33.3
2.6に移行したらこういうことが他のソフトでも起こるんでしょうか…
コンパイル時に事前に上記の現象を防ぐ方法はないものか?
ちなみに、debから入れたものは問題ないのでは、と推測しています。確証はないですが。