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になるなら?パッケージ一覧表
準備 †
おすすめアップグレード方法!
直接aptitude dist-upgradeとすると依存関係にひきずられて重要なパッケージが削除されたりする
- まずは/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が更新候補として出た)
- /etc/apt/source.listをstale(etch)にする
- aptitude upgrade
- 削除されたパッケージ:libruby1.6 ruby1.6
- aptitude install initrd-tools (すでに入っている場合もある)
- 新規に入ったパッケージ:libdevmapper1.02 libselinux1 libsepol1 tzdata
- 削除されたパッケージ:base-config
- デスクトップ環境があれば(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が入る
- 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は削除される
- カーネルのアップグレード
aptitude install linux-image-2.6-フレーバー(すでに2.6系であれば後々時間があれば今すぐに更新をする必要は無い)
- aptitude dist-upgrade
- 使われてないから削除されたパッケージ: libfam0c102 libreadline4 ntp ntp-simple
- 新規インストールされたパッケージ: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
- 削除されたパッケージ:libnewt0.51 libsp1 netkit-inetd ntp-server apache2-common exim4-daemon-heavy
- いろいろ聞かれる。一通り確認、答える。upgrade終る
- /proc/mounts に 'devfs'があればdevfs スタイルのデバイス名の変更をする。(/etc/fstab、/etc/lilo.conf、/boot/grub/menu.lst、/etc/inittabなど)
- liloをブートローダーとして使用している場合、もう一度実行させておく
/sbin/lilo
実行中に問題があれば(1)vmlinuz と initrd へのシンボリックリンクが / 内に存在するか、(2)/etc/lilo.conf の内容に食い違いがないか確認
- /etc/kernel-img.conf の内容を調べ、do_bootloader = Yes と書かれていることを確認
- grubの場合、/etc/kernel-img.conf を編集してupdate-grub=[x]/sbin/update-grub を [o]/usr/sbin/update-grub に変更する
- 再起動
メモ †
アップグレードについての報告をするの際は
- アップグレード前後のパッケージデータベースの状態。
- /var/lib/dpkg/status にある dpkg の状態データベース
- /var/lib/aptitude/pkgstates にある aptitude のパッケージ状態情報
- セッションのログ
- 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)
以上を理解した上でやってみた! †
- バックアップを取る
- souces.listがsargeのままで、aptitude update
- aptitude install inited-tools
- Xパッケージが入っていたので、個別対応
- aptitude dist-upgrade
- その間約15分?いろんな質問を答える
- 一応終了。こんな事を言われる
以下のパッケージの処理中にエラーが発生しました:
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
- 怒られた!
aptitude install tsch
怒られた全文と言う訳でfixしてみた。
原因
- debconf: unable to initialize frontend: Gnome => dpkg-reconfigure debconfにして設定をDialogに変更。Gnomeにしていたので、頑張って立ち上げようとして失敗してたのね。。。
- tcsh conflicts with tcsh-kanjiこれが原因?
- tcshとtcsh-kanjiがconflictsしているようなので、tcsh-kanjiをremove/purgeする
aptitude remove tcsh-kanji / aptitude purge tchs-kanji
- /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をする
- 結果このようにしました!
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