概要 †
Debian Lennyからsqueezeへのアップデートを行います。
今回使用したのは構築概要(Debian)のような、GUIを含まず、apt-getのみで構築したほぼ最小構成のマシンです。
手順 †
- バックアップ
不測の事態に備えるため、バックアップを取ります。
ファイルベースでとっても良いですが、フルイメージを取っておいたほうがより安心です。
私の場合は定期的にイメージバックアップが走っているので、何もせずに次へ進みます。
- 前準備
1
2
3
4
5
6
| -
!
-
!
-
!
| apt-get purge splashy
dpkg --audit
dpkg --get-selections | grep hold
|
- /etc/apt/sources.listを編集
「lenny」となっている箇所を「squeeze」へ変更します。
代わりに「stable」とすると、安定版が切り替わったときに自動で移行しますが、メジャーバージョンアップは気軽に行う作業ではないため、私はコードネームを指定します。
必要な方は、「main」のあとに、「contrib」や「non-free」も追記してください。
また、lennyで「volatile」が終了し、「szueeze-update」に置き換わっているので、修正します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| -
|
!
-
!
-
|
|
|
!
|
deb http://ftp.jp.debian.org/debian/ squeeze main
deb-src http://ftp.jp.debian.org/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main
deb http://ftp.jp.debian.org/debian squeeze-updates main
deb-src http://ftp.jp.debian.org/debian squeeze-updates main
|
- セッションの記録を開始
1
|
| script -t 2>~/upgrade-squeeze1.time -a ~/upgrade-squeeze1.script
|
- パッケージ更新
ここで、自分が変更したファイルと新しいファイルが競合すると、どちらを使うのか、またはマージするかを逐一確認してきます。
内容を比較しつつ慎重に選択しましょう。
決断できない場合は、元のファイルを使う[N]で進めます。
1
2
3
4
5
6
| -
!
-
!
-
!
| apt-get update
apt-get -o APT::Get::Trivial-Only=true dist-upgrade
apt-get upgrade
|
- カーネル更新
1
2
3
4
5
6
| -
!
-
!
-
!
| dpkg -l "linux-image*" | grep ^ii
apt-get install linux-image-2.6-686
apt-get install udev
|
- 再起動
- セッションの記録を開始
1
|
| script -t 2>~/upgrade-squeeze2.time -a ~/upgrade-squeeze2.script
|
- システムのアップグレード
- 再起動
以上でアップグレードは終了です。
あとは、今まで動いていたものが正常に動いているかを確認していきます。
必要ならば、記録したセッションのログも確認します。
また「*.dpkg-dist」というファイルが、ファイルの競合時に元ファイルを使用するとした場合の、新しい方のファイルです。中身を確認し、不要ならば削除します。
- エラー例1
私の場合mysqlが起動しなくなっていました。
ファイル競合確認では、元ファイルを使用するにしています。
1
2
3
4
5
6
7
8
9
| -
!
-
!
-
|
| cp /etc/mysql/my.cnf /etc/mysql/my.cnf_original
cp /etc/mysql/my.cnf.dpkg-dist /etc/mysql/my.cnf
apt-get install mysql-server
|
- エラー例2
アップデート途中で、システムshellをdashへ置き換えることを勧められたので、dashにしたところ一部の自前スクリプトが動かなくなっていました。
見つけたケースでは、bashと違い配列が使えないためエラーになっていました。
今回はシバンの置き換えで対応しましたが、動かないスクリプトが多いのであれば、シンボリックリンクを貼り戻したほうが良いかもしれません。
1
2
3
4
5
6
| -
!
-
|
!
| シェルスクリプトのシバンを「
ln -s -f /bin/bash /bin/sh
|
- 不要なパッケージをパージ
検証時の環境 †
参考 †