今回はDebain GNU 5.0 lennyから6.0 squeezeへのバージョンアップで起きたちょっとした事件を書いてみたいと思います。
数台他の環境ではlenny→squeezeへの変更は経験があったので、下記の手順でさくさくと進めました。
/etc/apt/sorce.listを編集してsqueeseへ切替。
deb http://cdn.debian.or.jp/debian/ squeeze main contrib non-free
deb-src http://cdn.debian.or.jp/debian/ squeeze main contrib non-free
deb http://security.debian.org/ squeeze/updates main
次にアップグレードを開始します。
# aptitude update
# aptitude install aptitude
# aptitude full-upgrade
何度かダイアログが開きますが、普通はOKを押していれば大丈夫の筈(謎ww)
※鵜呑みにしてはいけません。ちゃんとダイアログののメッセージを読みませふ。
するとasteriskのsetupでなにやらエラーが…
数秒待っていると抜けてくるが、FATAL: Module dahdi not found. とか言ってきます。
しばらくするとアップグレードが終わるので気にせずサーバの再起動!
新しいgrub2も問題無く動き、起動シーケンスがスタートします。
fsckのくるくるを眺めていると…次にするするとinitが走りますが、最後でまたしてもFATAL: Module dahdi not found.の文字が!
一応asteriskは動いてるっぽいのですが、このまま放置はまずいので対策を練ります。
# aptitude remove dahdi
これをやると依存関係でasteriskもremoveされてしまいます。
# aptitude install dahdi
# aptitude install dahdi-firmware-nonfree
# aptitude install asterisk
これでも、エラーがとれません。
次に、
# aptitude remove asterisk
# aptitude purge dahdi
# aptitude install dahdi
# aptitude install asterisk
これでもダメですorz.
たしかに、/devの下にdahdiがいません。
kernelモジュールなので手動でコンパイルしてみることにしました。
もちろんお作法通りdebパッケージのソースを使います。
# aptitude install linux-headers-`uname -r` build-essential
# aptitude remove dahdi
# aptitude install dahdi-source
# cd /usr/src
# tar jxvf dahdi.tar.bz2
# cd modules/dahdi
# make
# make install
# aptitude install asterisk
これでFATAL: Module dahdi not found.のエラーは出なくなりました。
こうやってまとめるとなんだか簡単のように見えるのですが、ここまでの調査や試行錯誤に随分時間を取られてしまいました。
※久しぶりに変な汗をかいてしまいました(苦笑)。
■もし、もっとエレガントな手順があった教えてください>高位wizardの方々
【追記】Twitterのお友達から指摘がありまして、今回のlennyからsqueezeへのアップグレードはaptitudeではなくapt-getが推奨されているとの事です。上記手順は、apt-getに読み替えてください。