Debian sarge から etch へアップグレード

家のサーバを sarge から etch へアップグレードした。手順は以下のページを参考にした。
Debian GNU/Linux 4.0 リリースノート - 第4章 以前のリリースからアップグレードする
KeN's GNU/Linux Diary - Debian GNU/Linux 4.0 ("etch") 以前のリリースからのアップグレードの方法
Learn to Fish - sarge -> etch アップグレード


公式のレポジトリだけだったので、上記のページの通りにしたら問題なく作業終了!といきたかったのだが、やはりすんなりとはいかなかった。上記のページに書いてある以外のことでやったことと、はまったことをメモっとく。

カーネルを2.6へ

まず、今のサーバはカーネルが 2.4 なんだけど etch ではサポートされなくなるので、アップグレード前に事前にカーネルを 2.4 から 2.6 へ上げた。

■ バックアップ・インストール済みパッケージ一覧の取得

参考にしたページにも書いてあるけど、バックアップとインストール済みパッケージの一覧は必ず取っておくこと。私も実際にアップグレード後に参照したので。

# tar cvfz 20070514-etc.tar.gz /etc
# tar cvfz 20070514-dpkg.tar.gz /var/lib/dpkg/
# dpkg --get-selections "*"

■ アップグレード中のエラー

アップグレード途中でエラーになったパッケージが2つ。

  • smnpd

snmpd (5.2.3-7) を設定しています ...
Starting network management services:invoke-rc.d: initscript snmpd, action "start" failed.
dpkg: snmpd の処理中にエラーが発生しました (--configure):
サブプロセス post-installation script はエラー終了ステータス 1 を返しました
以下のパッケージの処理中にエラーが発生しました:
snmpd

  • snmptrapfmt

dpkg: 依存関係の問題により snmptrapfmt の設定ができません:
snmptrapfmt は以下に依存 (depends) します: snmpd ...しかし:
パッケージ snmpd はまだ設定されていません。
dpkg: snmptrapfmt の処理中にエラーが発生しました (--configure):
依存関係の問題 - 設定を見送ります
以下のパッケージの処理中にエラーが発生しました:
snmptrapfmt

どちらも snmpd 関連のパッケージ。作動中の snmpd を止めてから以下のようにしたら、問題なく完了。原因はわからず。

# dpkg --configure snmpd snmptrapfmt

ssh セッション切断

ssh でアップグレードをしていたんだけど、アップグレード作業中にセッションが切れて焦った。
参考にしたページには ssh + screen か、コンソールでやることって書いてあったんだけど ssh だけで screen を使ってなかった。
ssh のセッションが切れたのは、Debian マシンが DHCP サーバを兼ねていて、作業はそこから IP をもらってたマシンで行ってたんだけど、作業中に dhcp が再起動したことにより、IP が回収されたのが原因だったっぽい。


仕方がないので、再度 ssh で繋ぎなおして aptitude を再実行したら、続きから始めてくれてなんとかなった。

■ 公開カギの登録

dist-upgrade 後 update すると、例の公開鍵エラーになるので、いつもの手順で登録する。

# gpg --keyserver subkeys.pgp.net --recv-key EC61E0B0BBE55AB3
gpg: requesting key BBE55AB3 from hkp server subkeys.pgp.net
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key BBE55AB3: public key "Debian-Volatile Archive Automatic Signing Key (4.0/etch)" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1
# gpg --armor --export EC61E0B0BBE55AB3 | apt-key add -
OK

■ 動かなくなった物

アップグレードしたことにより、動かなくなったのは以下のもの。対応内容は後述。

qmail
削除された。
lm-sensors
/proc/sys/dev/sensors/(チップセット名) が消えていた。
postgresql
外部からの接続を受付けない。
ntpサーバ
ちゃんと動いてない。確認すると2つサーバが起動してた。
apache
tomcat との連携ができない。
analog, wwwstat
更新されない。
postgresql

設定ファイルが変更された (postmaster.conf --> postgresql.conf) ことにより、外部からの接続を受付けなくなっていた。設定ファイルを修正して再起動で問題解消。

■ ntpサーバ

再度 dist-upgrade することで ntp-server パッケージが削除されて ntp-simple が追加され正常に稼動し始めた。

qmail

qmailが削除されてexim4が入っていた。とりあえずexim4を削除。aptitude だと依存性の問題で別の物をインストールしようとするので apt-get で削除する。
この時に一緒に削除される物は後でインストールしなおす。(tripwire, mutt, mailx maildrop, logwatch等)


削除できたら build-qmailコンパイルしなおしてインストールする。
また、ucspi-tcp も同様にコンパイルしなおしてインストールする。

# build-qmail
# build-ucspi-tcp

apachetomcat 連携

apache2.0 -> 2.2 となったので jk2 -> proxy_ajp に変更。proxy_ajp モジュールを有効化。

# a2enmod proxy_ajp

/etc/apache2/cond.d にproxy_ajp 用の設定ファイルを作成して以下のように記入。


ProxyPass ajp://localhost:8009/hh-web/
Order allow,deny
Allow from all

proxy_ajpググると ProxyPass の行だけの設定が多いけど、うちは 2,3 行目を追加しないと 403 Forbidden になった。(参考:RFC-516 - Tomcat と連携できない… → 解決!)
設定ファイルを保存したらapache2 を再起動。

■ analog, wwwstat

apache のログが出力されてなかった。access.log の設定が apache2.conf から 各サイトの設定ファイル (site-available配下の設定ファイル) に移ったため。
設定を記述して、apache2 を再起動。