お使いのシステムをアップグレードする前に、フルバックアップをするか、 少なくとも失って困るようなあらゆるデータや設定情報をバックアップすることを 強くお勧めします。 アップグレードツールおよびプロセスには高い信頼性がありますが、 それでもアップグレード最中にハードウェアに問題が起きて 惨事が招かれるようなことはありうるのです。
お手持ちの i386 システムがまだ Debian 2.0 (hamm) にアップグレードされていない場合は、 `http://www.debian.org/2.0/autoup/' にある autoup.README の説明を読んで、まずは libc6 にアップグレードしなければなりません。 さらにこの README に加えて、autoup.sh と debfiles ディレクトリの全ファイルをダウンロードしなければなりません。
アップグレードに用いるメソッドに関わらず、
まず最初に全パッケージの状態をチェックすることをお勧めします。
そのチェックは、
dpkg -l | less や dpkg --get-selections > ファイル名
とすれば可能ですし、dselect
上でも行なえます。
またアップグレードする前に、
すべてのパッケージ保留 ``hold'' を解除しておくことが望ましいでしょう。
もしアップグレードが必要なパッケージが保留されていたならば、
アップグレードが失敗してしまいます。
パッケージ保留は dselect
上で解除することもできますし、
dpkg --get-selections > ファイル名 で生成されるファイル上の
"hold" を "install" に変えるよう編集しても解除できます。
後者の場合は、ルート権限で
dpkg --set-selections < ファイル名
を行なってください。
パッケージのインストール作業は、
スーパーユーザ特権で行なわなければなりませんので、
その特権を得るためには、ルートアカウントでログインするか、
su
あるいは sudo
を使ってください。
アップグレード作業の過程を写しに残しておくために、
/usr/bin/script
の利用を強くお勧めします。
-- 実際のところ、dselect
での作業
(および記録しておくことが望ましい他の作業すべて)
を記録するのに script
を利用するのもよい考えです。
こうしておけば、
問題が起きても何が起こったのか調べることが可能になります。
script
は、引数で指示されるファイル
(script ファイル名)
やデフォルトのファイル typescript
にその写しを書き込みます。
slink にアップグレードする方法には次の二つがあります。
一つは apt-get
を直接利用する方法、
もう一つは dselect
を利用する方法です。
apt-get
の利用
まだ apt
をインストールされていない場合は、
ftp://ftp.debian.org/debian/dists/slink/main/upgrade-2.0-i386/apt_0.1.8_i386.deb
をダウンロードしインストールしておくことをお勧めします。
お使いになっているブラウザによっては、
バイナリモードでそのまま直接ファイルにダウンロードするには
特別な操作が必要かもしれません。
例えばネットスケープナビゲータでファイルを取り寄せるためには、
シフトキーを押したままそのリンクをクリックする必要があります。
dpkg -i apt*.deb コマンドをルートアカウントで実行し、
ダウンロードしたパッケージをインストールしてください。
CD-ROM からインストールされている場合は、CD-ROM から直接それをインストールすることができます。 ルートアカウントで以下のコマンドを実行してください。
dpkg -i cd_mount_point/upgrade-2.0-i386/apt_0.1.8_i386.deb
このときに、apt-get(8)
および
sources.list(5)
の man ページをお読みになっておくことをお勧めします。
また、アップグレードを始める前に
apt
の設定ファイル
/etc/apt/sources.list
を編集しておかなければなりません。
デフォルトではインターネットからインストールするように設定されていますが、
他のミラーサイトや、ご自分のローカルミラーを利用できるように
/etc/apt/sources.list
を修正されても結構です。
なお CD-ROM からインストールされる場合は、CD-ROM からのアップグレード, Section 3.2
をご覧ください。
apt
の設定が終了したら、
(ルートアカウントで) 以下のコマンドを実行してください。
apt-get update apt-get -f dist-upgrade
何が起きるのかを確認するために、 apt-get -f dist-upgrade とする方法よりも apt-get -f --dry-run dist-upgrade | less とする方法を好まれる方もいるでしょう。 この方法だと若干時間はかかりますが、 不意の出来事を避けることができるでしょう。
現在インストールされているパッケージの新しいバージョンが利用できるならば、
apt-get dist-upgrade および apt-get upgrade
は入手可能なパッケージの一覧を更新し、
各パッケージをアップグレードします。
ただ、インストールされている現行パッケージを削除したり、
まだインストールされていないパッケージを
取り寄せてインストールしたりはしません。
また、インストールされている現行パッケージを新しいバージョンに
アップグレードする際に、他パッケージのインストール状態の変更を伴う場合は、
現行バージョンが維持されます。
そのため、dpkg
や dselect
を利用してパッケージの削除や再インストールを行ない、
壊れたパッケージや依存関係を修復する必要もあるでしょう。
apt-get -f dist-upgrade とした後に、
apt-get dselect-upgrade を使ってもよいでしょう。
(apt-get(8)
マニュアルページをご覧ください。)
オプション -f (fix) を用いると、apt
は、壊れた依存関係のあるシステムを適切に修正しようと試みます。
システムにあるパッケージの依存関係が壊れている場合
apt
は作業を行ないません。
手動で調整しなければならないほど、システムの依存構造が壊れている
かもしれないからです。
(手動での調整とは通常、
dselect
や dpkg --remove パッケージ
を用いて、問題のあるパッケージを除去することです。)
もし上記の二つのコマンドを実行した後に apt-get
が壊れたパッケージの存在を報告してきたならば、
(壊れたパッケージを削除したり、
依存状態の欠損を修復するためにパッケージをインストールするなどして)
システムを修復するよう努めてください。
システムを修復できず apt-get
が作業を行なえるようにならなかった場合には、dselect
メソッドを
(apt
以外のバックエンドで)
利用しアップグレードを行なってください。
複数の CD を扱う apt
のコードは
slink リリースの時点では完全なものではありませんが、
別の方法が利用できます。
まず /etc/apt/sources.list
の説明用コメントの
次の最初の一行に、以下の指定を追加してください。
deb file:cd_mount_point/debian stable main
他の `deb' から始まる行は、その行頭に # をおいてコメントアウトしてください。
一枚目のバイナリ CD を挿入、マウントし、 ルートアカウントで以下のコマンドを実行してください。
apt-get update apt-get dist-upgrade
既に述べたように、 意図しない出来事を避けるために、 apt-get dist-upgrade を実行する前に apt-get -f --dry-run dist-upgrade | less を実行することも可能です。
一枚目の CD がマウントされている間に、 apt-get install dpkg-multicd としておくこともよい考えです。
次に、一枚目のバイナリ CD をアンマウントし、その代わりに二枚目のバイナリ
CD をマウントします。
先ほど指定した /etc/apt/sources.list
の行を
deb file:cd_mount_point/debian stable main contrib
に変更し、先ほどと同様に update と dist-upgrade を繰り返します。
アップグレードが終了したら、最後にいれた CD-ROM をアンマウントします。
ただその CD-ROM はドライブには入れたままにしておきます。
それから dselect
を起動します。
[A]ccess のところで、新たに加わった multi_cd
インストールメソッドを選択し、デバイス名を正確に入力し、
そのあとに続く質問では全て Enter を押します。
(このとき、二枚目のバイナリ CD-ROM がドライブに入っていなければなりません!)
次に [U]pdate を選びます。
さらに [S]elect を選び、スペースキーを押してヘルプ画面を抜けます。
パッケージセレクションの画面では、まず Shift-D
を押し、続いてすぐに Enter を押します。
このときに依存関係の衝突が起こることは十分に考えられますが、
この場合はヘルプ画面が表示されるでしょう。
スペースキーを押してヘルプ画面を終了し、
表示されるパッケージ一覧を確認してください。
この設定されている状態に変更を加えたいとお考えになるかも知れませんが、
それはお勧めできません。
Enter を押して、全ての依存関係の衝突を十分に解決してください。
次に [I]nstall を選んでください。
[I]nstall のあとには、通常さらに [C]onfigure を行なう必要があります。
そうしたら、一枚目のバイナリ CD を挿入して、
同じプロセスを繰り返してください。
(二枚目の CD に収録されている xbase
が依存しているパッケージが、一枚目の CD に収録されているために、
dselect
ではこのような手続きが必要になります。)
公式 Debian CD セットには、二枚のバイナリ CD があります。
ただ、ベンダによっては non-free や non-US
パッケージの全部もしくは一部を収録し、
三枚のバイナリ CD をセットで提供している場合もあります。
もし三枚目のバイナリ CD があるならば、
二枚目の CD をアンマウントし、
三枚目の CD を挿入、マウントしてください。
さらに、先ほど加えた /etc/apt/sources.list
の行を
deb file:cd_mount_point/debian stable non-free non-US
のように変更します。 (もし non-free や non-US がその CD に収録されていない場合、 その指定は削除してください。)
そうしたら、先ほどと同じように、update と
dist-upgrade を繰り返してください。
そのあと dselect
では、前述の通りに [A]ccess および [U]pdate
をやり直す必要があることには注意してください。
非公式な三枚目のバイナリ CD のバージョンによっては、
[A]ccess や [U]pdate を行なう際に、その CD
を入れたままにしておけるような構造を持つものもあります。
もしこのような CD をお持ちの場合は、
dselect
から三枚の CD に収録されているパッケージ全てに、
同時にアクセスできるでしょう。
「非公式な代替案」として
potato バージョンの apt
バージョン 0.3.x
を利用することもできます。
ただ 0.3.x の apt
が未だベータであり、
バグが十分にありうることは、心に留めておいてください。
apt
の主要開発者の一人である
Jason Gunthorpe は以下のように述べています。
ちゃんとした解決方法は、potato から `apt' 0.3 をインストールして、 `apt-cdrom' からそのビルトイン CD 処理機能を利用することです。これ に関しては私がそれ用の特別コードを書きましたので、`sources.list' に ``deb http://www.debian.org/~jgg apt/' という行を追加すればそれにア クセスできます。そうしたら、`apt-get update; apt-get install apt' を実行してください。 このバージョンは `apt v 3.x.' にリンクされた 最新の glibc 2.0 を含 んでいます。利用できる `apt' なら何でもいいので、まずそれをインストー ルし、ご自分の `sources.list' 上記の行 (と、おそらく第一 CD-ROM の ために、間に合わせの ``file:'' uri) を追加してください。それから `apt-get install apt' を実行してください。 次に一枚目のディスクを挿入して `apt-cdrom add' を実行します。それか ら二枚目のディスクを挿入して `apt-cdrom add' を実行し、さらに、 `apt-get dist-upgrade -u' を 2 回 (あるいは 3 回?) 実行します。
dselect
の利用
この節は、dselect
に関するある程度の知識を前提としています。
ともあれ、こちらをお読みの方は、ご自分のシステムがインストール済みで、
それをアップグレードなさろうとしているのですよね?
dselect
に関する記憶を呼び起こす必要のある場合、
初心者向けの dselect
に関する解説が
http://www.jp.debian.org/releases/2.1/i386/dselect-beginner
にあります。
さて、dselect
利用の第一段階は、``Access''
メソッドを選択することです。
アクセスメソッドに関するより詳しい情報や、
どのアクセスメソッドを用いるべきかについても、
上記の「初心者のための dselect 入門
」
をご覧ください。
dselect
用の apt
アクセスメソッドは、
現在利用できるメソッドのうち、最も速く作業を進めることができます。
こちらはパッケージを適切な手順でインストールし設定します。
パッケージの展開時にすべての依存関係が解決されますので、
その作業は一度で済みます。
ただ、 apt
アクセスメソッドは、
まだ複数の CD を適切に扱うことができません。
また、お使いになるシステムに壊れたパッケージがあって、
apt-get upgrade が利用できない場合は、
apt
アクセスメソッドも失敗してしまいます。
dselect
用 `mounted' アクセスメソッドは、
まず最初に必要なインストール作業を減らすよう、
先行依存するパッケージをインストールし設定します。
`mountable' アクセスメソッドも、
まず最初に先行依存するパッケージをインストールし設定しようと試みますので、
比較的作業を速く進めることができます。
(これらのアクセスメソッドには、先行依存の扱いに関する既知の問題があります。
この問題が起きた場合には、上記の説明にしたがい
apt
メソッドを利用してください。)
複数の CD を利用する際に推奨されるアクセスメソッドは
multi_cd メソッドです。
このメソッドを利用するためには、
まず最初に dpkg-multicd
を
dpkg -i cd_mount_point/dists/slink/main/binary-i386/base/dpkg-multicd
あるいは
apt-get install dpkg-multicd
としてインストールします。
このメソッドの利用については、一枚目の CD にある
README.multicd
と、
インストール後に利用できる /usr/doc/dpkg-multicd/readme.txt.gz
を参照してください
hamm バージョンの `http' アクセスメソッドは、
先行依存を適切には扱いませんので、お勧めできません。
このバージョンの dpkg-http をアップグレードに利用した場合は、
各先行依存を見つけたときに Abort automatic installation (Y/n)?
というプロンプトが表示されます。
hamm バージョンの dpkg-http にはバグがありますので、
このときは Y の代わりに Ctrl-C を入力し、
必要なパッケージを手動でインストール (dpkg -i) してください。
そうしたら dselect
が次の先行依存を見つけるよう再開されるでしょう。
時間を節約するためには、
libc6
、
libncurses4
、 libreadlineg2
、
libstdc++2.9
、 slang1
、
libhtml-parser-perl
の各 slink
パッケージを手動でインストールしておくとよいでしょう。
なお、どんなアクセスメソッドを利用される場合も、
新たなパッケージを追加する前に、
まずは既存のパッケージをアップグレードすることをお勧めします。
初めは、dselect
の [A]ccess、[U]pdate
および [S]elect の各作業段階を行なってください。
そして、``Select'' の作業段階に入ったらすぐに `D' (shift-D)
続いて Enter を押します。
競合および依存解決に関する画面が表示されるでしょう。
それらの競合を解決 (通常は単に Enter を押すだけで結構です)
した後で、[I]nstall を実行し、
さらにインストールした全パッケージを単にアップグレードするよう
[C]onfigure を実行してください。
このあとで、お望みならば
[Select] および [Install] モジュールを用いて、
追加するパッケージをインストールしてください。
たくさんのパッケージを dpkg
や dselect
でインストールする場合は通常、システム全体の設定が終了するまでに、
インストールおよび設定の作業を何回か繰り返すことが必要になります。
選択されるアクセスメソッドにもよりますが、インストールの過程の間
[U]pdate の作業を繰り返すことが望ましいでしょう
また [U]pdate の作業の前に、dselect
を終了させ、
それをすぐに再起動することも有益でしょう。
アップグレードするマシン上では、アップグレード作業を xdm
で管理される X セッションから行なってはいけません。
アップグレード時 xdm
および xfs
は停止されますので、X が突然シャットダウンして
アップグレードが半ばにして中断してしまいます。
もしそのマシンがブート時に自動的に X
を起動するように設定してあった場合、その修正は困難です。
また、もし使用中の X サーバが xfs
フォントサービスのためにアップグレード中のホストを参照している場合は、
xfs
が停止したとき フォントサーバへの接続が切れてしまいます。
このことは致命的なことではありませんが、煩わしいことでしょう。
なお、お使いになっている X セッションが xdm
に制御されているかどうかはっきりしない場合は、
Linux の仮想コンソールからご自分のマシンをアップグレードしてください。
また、まず最初に slink から netstd
および
telnetd
パッケージをインストールしておかない限り、
アップグレードを telnet 接続による遠隔操作で行なうべきではありません。
旧 netstd
パッケージが削除された時点で、
telnet 接続が切れてしまい、telnetd
パッケージをインストールするまで再接続できなくなります。
なお、Debian-JP for 2.0 の xfree86-freetype
パッケージをインストールされている場合、
X パッケージ群のアップグレードには注意が必要です。
Hamm から Slink への upgrade における xfree86-freetype パッケージの移行についての注意
をお読みください。
hilliard@debian.org