Lenny amd64版をSqueezeにアップグレード

■Lenny amd64版をSqueezeにアップグレード

 バックアップやディスクの空き容量、使用するサービスの把握等や、
 環境によって異なる事についてはここでは述べない。
 様々な役割を割り当てているサーバなので、
 最小構成からブログで紹介するテスト用の環境を構築した仮想マシンよりも時間はかかるはず。

 仮想マシンでもssh経由でアップグレードのテストを行ったので、
 同じ方法で行う。

 ※コンソールからシングルユーザモードで作業する事をお勧めします。

■アップグレード手順については以前にも書いた。
 今回は結構多くの役割が載っているサーバが対象なので、もう少し詳しく書こうと思う。

 Lenny Squeeze Wheezy
 http://d.hatena.ne.jp/labunix/20120125/1327418778

■「sources.list」の変更
 以下の2つで異なる設定を行っている為、「sources.list」は必ず内容を確認する。

 Lennyのapt-get(sources.list)をアーカイブ参照に変更する
 http://d.hatena.ne.jp/labunix/20120328

 Lennyのセキュリティサポート終了後の「sources.list」の設定
 http://d.hatena.ne.jp/labunix/20120211

# dpkg --audit
# cp -pi /etc/apt/sources.list /etc/apt/sources.list.lenny
# sed s/"lenny"/"squeeze"/g /etc/apt/sources.list.lenny > /etc/apt/sources.list
# sed s/"lenny"/"squeeze"/g /etc/apt/source.list_support_end > /etc/apt/sources.list

# grep -v ^# /etc/apt/sources.list | awk '{print $2}' | grep ^http | sort | uniq
http://ftp.jp.debian.org/debian/
http://security.debian.org/

■URLの存在確認

# w3m -dump_head http://ftp.jp.debian.org/debian/ | head -1
HTTP/1.0 200 OK

# w3m -dump_head http://security.debian.org/ | head -1
HTTP/1.0 200 OK

■ssh経由なので、もうひとつの端末からtailで監視しながら行います。

 ※ログ取得、作業側

# script -t 2>~/upgrade-lenny.time -a ~/upgrade-lenny.script

 ※待ち受け、監視側

$ sudo tail -f /root/upgrade-lenny.script

■作業側の初期アップデートの開始
 ※2回確実に行う
 
# apt-get clean && apt-get update && apt-get install apt

■監視側のチェック

$ grep -i --color "warn\|error\|crit" /root/upgrade-lenny.script

■作業側チェック

# aptitude search "?false" && echo "ok"
ok

■安全にアップデートを行う
 ※2回確実に行う
 キーボードもマウスも刺さっていない環境で行ったので、若干後で修正が必要だった。
 apacheのmrtgの場所の指定は後で修正した。

  私はdashは使わない。
  grub2の設定は事前に理解していた方が良い。
  pamを使うデーモンにはsshがあるはずだが、再起動はしない
   ※再起動リストにsshはデフォルトで含まれていない。
  「sysv-rc」は移行する
 ※日本語キーボードのモデルをGeneric 102 Keyを選択。(jp106はリストに無い)
 ※Sambaの差異は問題なし
 ※ディスクデバイスIDは移行する
 ※ファームウエア(tg3)が含まれていない可能性を警告される
 ※rsyslog.confは引き継げる
 ※ntp.confは引き継げる
 ※snmpd.confは差異が大きく、仮想マシンのテストで引き継げなかった為、システムの設定を使用
 ※snort.confの設定は修正が必要
  /usr/sbin/snort -T -c /etc/snort/snort.conf
 ※apacheはビデオサーバにする設定やmrtgの設定があったが、
  現在ビデオサーバは使用していない為、デフォルトに戻した。
 ※squidGuardの設定は引き継げる

# aptitude safe-upgrade3つのパッケージについては再インストールを行った
 snortはHOME_NETの設定を正しく行えばよい。

 snort
 snmpd
 snmptrapfmt

# apt-get purge snort snmpd snmptrapfmt
# apt-get install snort snmpd snmptrapfmt
# /usr/sbin/snort -T -c /etc/snort/snort.conf 2>&1 | grep --color -i "error\|warn\|crit"
Warning: /etc/snort/rules/dos.rules(42) => threshold (in rule) is deprecated; 
 use detection_filter instead.
ERROR: /etc/snort/rules/community-virus.rules(19) => !any is not allowed
Fatal Error, Quitting..

以下の行を設定すれば、とりあえずOK。
DEBIAN_SNORT_HOME_NET=

■再度安全にアップグレードを行う
 ※エラーも無く正常に完了

# aptitude safe-upgrade

■「aptitude」もアップグレード、再度安全にアップグレード
 ※「aptitude はすでに最新バージョンです。」となる。

# apt-get clean && apt-get update && apt-get install apt aptitude
# aptitude search "?false" && echo "ok"
ok
# aptitude safe-upgrade && echo "ok"
インストール・削除・更新されるパッケージがありません。
更新: 0 個、新規インストール: 0 個、削除: 0 個、保留: 17 個。
0 B のアーカイブを取得する必要があります。展開後に 0 B のディスク領域が新たに消費されます。

ok
# cat /etc/debian_version
6.0.4

■保留は「dist-upgrade」で実行される。一度再起動しておく。

# exit
exit
Script done, file is /root/upgrade-lenny.script
# exit
$ sudo shutdown -r now && exit

■再度監視スクリプトを起動して、安全なアップグレード結果が変わらないことを確認

# mv upgrade-lenny.script upgrade-lenny.script1
# mv upgrade-lenny.time upgrade-lenny.time1
# script -t 2>~/upgrade-lenny.time2 -a ~/upgrade-lenny.script2
Script started, file is /root/upgrade-lenny.script2

# apt-get clean && apt-get update && apt-get install apt aptitude
# aptitude search "?false" && echo "ok"
ok
# aptitude safe-upgrade && echo "ok"
インストール・削除・更新されるパッケージがありません。
更新: 0 個、新規インストール: 0 個、削除: 0 個、保留: 17 個。
0 B のアーカイブを取得する必要があります。展開後に 0 B のディスク領域が新たに消費されます。

ok
# cat /etc/debian_version
6.0.4

■いよいよ「dist-upgrade」を行う。
 ※2回行ってすべてのアップグレードが完了したことを確認する。

# apt-get dist-upgrade
# apt-get dist-upgrade 2>&1 | tail -1
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。

■各デーモンの確認等を行い、以下のapt-get関連を実行、アップグレード作業は完了となる。

# apt-get autoremove && apt-get autoclean && apt-get clean && apt-get update && apt-get upgrade && echo "ok"
ok
# exit
exit
Script done, file is /root/upgrade-lenny.script2
# exit
$ sudo shutdown -r now && exit

■LennyとSqueezeではiptablesの「!」の位置が異なるのでご注意を。

  Lenny : -d ! 192.168.1.0/24
  Squeeze: ! -d 192.168.188.0/24