Debian

自宅サーバをSargeからEtchにアップグレードしてみたいと思う。たぶん出て来る問題と解決方法などなどのメモ

参考URL

現状

1)旧サーバ(Sarge: exim4, apache2,MySQL, kernel2.6)
Linux popo 2.6.8-3-386 #1 Wed Dec 6 00:38:53 UTC 2006 i686 GNU/Linux
2)現サーバ(Sarge: exim4, apache2, bind9, kernel2.6)
Linux candy 2.6.8-3-386 #1 Wed Dec 6 00:38:53 UTC 2006 i686 GNU/Linux

入ってるパッケージ

1)旧サーバsarge がetchになるなら?パッケージ一覧表

準備

  • データや設定情報のバックアップを取る。
    1. /etc
    2. /var/lib/dpkg の中身
    3. dpkg --get-selections "*"の出力
    4. /var/backupsなども
    5. 各userの隠しファイル/ディレクトリなどもバックアップ対象にしたほうがよい(ドットファイル)
  • パッケージ状態のチェック
    1. dpkg --audit
    2. dpkg -l | pager
    3. dpkg --get-selections "*" > ~/curr-pkgs.txt など
  • セッションの記録
    script -t 2>~/upgrade-etch.time -a ~/upgrade-etch.script
    (/tmp や /var/tmpなどには保存しない)
  • パッケージリストの更新(sarge上での)
    aptitude update
  • アップグレードするのに十分な領域があることを確認 aptitude -y -s -f --with-recommends dist-upgrade
    上記のコマンドで After unpacking XXXMB will be used.と出るので、容量を確認する。
    1. 容量を確保する為に、apt-get cleanで/var/cache/apt/archiveを綺麗にする
    2. popularity-contestでpopcon-largest-unused を見てもう使用しないであろうパッケージを削除する
    3. /var/log/以下のログを別の場所にバックアップか削除

おすすめアップグレード方法!
直接aptitude dist-upgradeとすると依存関係にひきずられて重要なパッケージが削除されたりする

  1. まずは/etc/apt/source.listをsargeのままで、更新(aptitude update/upgrade)をしてsargeで最新状態にしておく(serveの時は libapache-mod-php4 libapache2-mod-php4 libc6 libkrb53 libmagic1 locales man-db php4 php4-commが更新候補として出た)
  2. /etc/apt/source.listをstale(etch)にする
  3. aptitude upgrade
    1. 削除されたパッケージ:libruby1.6 ruby1.6
  4. aptitude install initrd-tools (すでに入っている場合もある)
    1. 新規に入ったパッケージ:libdevmapper1.02 libselinux1 libsepol1 tzdata
    2. 削除されたパッケージ:base-config
  5. デスクトップ環境があれば(dpkg -l libfam0c102 | grep ^ii や dpkg -l xlibmesa-glu | grep ^ii などで確認)
    aptitude install libfam0 xlibmesa-glu
    libfam0をいれると新規にgcc-4.1-base libstdc++6 lsb-baseが入る
  6. X のパッケージがいくつかインストールされてる場合(dpkg -l xfree86-common | grep ^iiで確認。また dpkg -l libfam0c102 | grep ^ii / dpkg -l xlibmesa-glu | grep ^ii などでも確認)
    aptitude install x11-common libfam0 xlibmesa-glu(インストールが確認された物だけ追加する)
    (xfree86-commonが入っていたので)x11-commonをいれると
    新規にlibfontenc1 libfs6 libx11-data libxau6 libxdmcp6 libxfont1 xbitmaps xcursor-themes xfonts-encodings xfonts-utils xutils-devが入り
    xfree86-commonは削除される
  7. カーネルのアップグレード
    aptitude install linux-image-2.6-フレーバー(すでに2.6系であれば後々時間があれば今すぐに更新をする必要は無い)
  8. aptitude dist-upgrade
    1. 使われてないから削除されたパッケージ: libfam0c102 libreadline4 ntp ntp-simple
    2. 新規インストールされたパッケージ:apache2.2-common courier-authlib courier-authlib-userdb cpp-4.1 debian-archive-keyring dmidecode gnupg gpgv laptop-detect libapr1 libaprutil1 libbind9-0 libdb4.3 libdb4.4 libdns22 libedit2 libfribidi0 libgnutls13 libisc11 libisccfg1 libltdl3 liblwres9 libncursesw5 libnewt0.52 libpcap0.8 libpci2 libpq4 libreadline5 libsigc++-2.0-0c2a libslang2 libsp1c2 libsqlite3-0 libssl0.9.8 libtasn1-3 mktemp modconf openbsd-inetd openssh-client openssh-server readline-common sysvinit-utils tasksel-data update-inetd
    3. 削除されたパッケージ:libnewt0.51 libsp1 netkit-inetd ntp-server apache2-common exim4-daemon-heavy
    4. いろいろ聞かれる。一通り確認、答える。upgrade終る
  9. /proc/mounts に 'devfs'があればdevfs スタイルのデバイス名の変更をする。(/etc/fstab、/etc/lilo.conf、/boot/grub/menu.lst、/etc/inittabなど)
  10. liloをブートローダーとして使用している場合、もう一度実行させておく
    /sbin/lilo
    実行中に問題があれば(1)vmlinuz と initrd へのシンボリックリンクが / 内に存在するか、(2)/etc/lilo.conf の内容に食い違いがないか確認
  11. /etc/kernel-img.conf の内容を調べ、do_bootloader = Yes と書かれていることを確認
  12. grubの場合、/etc/kernel-img.conf を編集してupdate-grub=[x]/sbin/update-grub を [o]/usr/sbin/update-grub に変更する
  13. 再起動

メモ

アップグレードについての報告をするの際は

  1. アップグレード前後のパッケージデータベースの状態。
    1. /var/lib/dpkg/status にある dpkg の状態データベース
    2. /var/lib/aptitude/pkgstates にある aptitude のパッケージ状態情報
  2. セッションのログ
  3. aptitude のログ(/var/log/aptitude)

[o]アップグレード時にはsshなどでログインがよい
[x]telnet、rlogin、rsh を用いてアップグレードでは途中で接続が切断される
[x]アップグレードマシンの xdm、gdm、kdm などが管理している X セッションからのアップグレードも途中で接続が切れるのでよろしくない

2.2系カーネルの場合は、あらかじめ2.4系かもしくは2.6.8に移行させておき、それからetchにアップグレードしたほうがよい

サードパーティ製パッケージ(/usr/X11R6/binにインストールされているパッケージ)は出来るだけ事前に削除しておいた方がよい

aptではなくaptitudeを使ってアップグレードしたほうがよい
/etc/apt/souce.listのstableをsargeにして、パッケージを最新(sargeでapt-get update)にした後にアップグレードする

アップグレードに不可欠なパッケージが hold 状態にあるなら、アップグレードに失敗するのでholdだったら解除するようにする
調べる方法:aptitude search "~ahold" | grep "^.h"
調べる方法:dpkg --get-selections | grep hold 解除方法;aptitude unhold package

apache2 のアップグレード
1.3->2.0の場合
すべてのモジュールを再コンパイルが必要
認証モジュールについて、名前の変更や再分類あり
設定オプションの一部は名称変更
2.0->2.2の場合(参考URL)

以上を理解した上でやってみた!

  1. バックアップを取る
  2. souces.listがsargeのままで、aptitude update
  3. aptitude install inited-tools
  4. Xパッケージが入っていたので、個別対応
  5. aptitude dist-upgrade
    1. その間約15分?いろんな質問を答える
  6. 一応終了。こんな事を言われる
    以下のパッケージの処理中にエラーが発生しました:
    exim4-config
    postgresql-7.4
    postgresql-contrib-7.4
    tcsh-kanji
    postgresql
    exim4-base
    postgresql-contrib
    exim4-daemon-heavy
    mailagent
    at
    exim4
    qpopper
    amavisd-new 
    mutt
    spamassassin
  7. 怒られた! aptitude install tsch
    怒られた全文と言う訳でfixしてみた。
    原因
    1. debconf: unable to initialize frontend: Gnome => dpkg-reconfigure debconfにして設定をDialogに変更。Gnomeにしていたので、頑張って立ち上げようとして失敗してたのね。。。
    2. tcsh conflicts with tcsh-kanjiこれが原因?
      1. tcshとtcsh-kanjiがconflictsしているようなので、tcsh-kanjiをremove/purgeする
        aptitude remove tcsh-kanji / aptitude purge tchs-kanji
      2. /etc/exim4/update-exim4.conf.conf: line 32: acl_check_helo:: command not found=>削除してみた(apt-get -f installで言われたエラー)
        Errors were encountered while processing: exim4-config -> dpkg -l exim4-configでは Failed-configになっているのでdpkg --configure exim4-configをする
  8. 結果このようにしました!
    exim4-config -> dpkg-reconfigure exim4-config
    postgresql-7.4 -> remove (いらないので削除した)
    postgresql-contrib-7.4 -> 一緒に削除
    tcsh-kanji -> remove 
    postgresql ->remove
    exim4-base -> reinstall
    postgresql-contrib -> remove
    exim4-daemon-heavy -> do nothing (exim4-baseを直したら一緒に直った)
    mailagent -> remove
    at -> do nothing (exim4-baseを直したら一緒に直った)
    exim4 -> do nothing (exim4-baseを直したら一緒に直った)
    qpopper -> exim4-baseを直したら一緒に直った
    amavisd-new -> remove (いらないので削除した)
    mutt -> remove
    spamassassin -> do nothing

Last-modified: 2012-03-12 (月) 17:05:09 (166d)