Debian は、できるだけ上流のパッケージを改変しないようにしています。 したがってオリジナルのパッケージでなされた変更は、 Debian GNU/Linux にも存在することになります。
Debian GNU/Linux 2.2 'Potato' リリースでは、 tar
は
bzip
圧縮に
-I
スイッチを用いていました。 しかし現在では
-j
スイッチが使われています。 必要に応じて、全てのスクリプトを変更してください。
システムをアップグレードする前に、完全なバックアップを取っておくよう 強くおすすめします。少なくとも、 失いたくないデータや設定情報だけでもバックアップしておきましょう。 アップグレードのツールや処理は極めて信頼性の高いものですが、 アップグレードの最中にハードウェア障害が起こると、 システムに大きなダメージを与えることがありえます。
特にバックアップしておくべきものとしては、 /etc
と
/var/lib/dpkg
の中身、 dpkg --get-selections \*
の出力などが挙げられます。
アップグレードの前には、その予定を全てのユーザに知らせると良いでしょう。
しかしシステムに ssh などでアクセスしてきているユーザは、
アップグレードの最中にもそうとは気付かず、 作業を続行してしまうかもしれません。
万一の用心をしたければ、アップグレードの前に ユーザのパーティション
(/home
) をバックアップして、
アンマウントしてしまいましょう。通常は再起動は必要ないでしょう。
ディストリビューションのアップグレードは、
ローカルのテキストモードの仮想コンソール (あるいは直接接続されたシリアル端末)
から行うか、 リモートなら ssh
リンク経由で行いましょう。
重要: telnet
, rlogin
, rsh
を用いてアップグレードをしては いけません。 アップグレードマシンの
xdm
が管理している X
セッションからのアップグレードも行うべきではありません。
これらのサービスはアップグレードの最中に切断されてしまう可能性が高く、
するとアップグレード途中のシステムへの 接続が不可能になってしまう
からです。
アップグレードにどんな方法を取るにせよ、 まず全てのパッケージの状態をチェックし、 アップグレード可能な状態になっているかどうか調べましょう。 以降のコマンドを用いると、不完全インストール (Half-Installed) 状態や 設定に失敗 (Failed-Config) 状態など、 エラー状態にあるパッケージが表示されます。
# dpkg --audit
システムの全てのパッケージの状態は dselect
でも調査できます。 また
# dpkg -l | pager
や
# dpkg --get-selections > ~/curr-pkgs.txt
のようなコマンドでも可能です。
パッケージの hold は、アップグレードの前に外しておく方が良いでしょう。 アップグレードに必要不可欠なパッケージが hold されていると、 アップグレードは失敗します。 hold されているパッケージは次のコマンドでわかります。
# dpkg --audit
パッケージをローカルで変更して再コンパイルしており、
パッケージ名を変更したり、パッケージのバージョンに epoch
フィールドを追加したりしていない場合には、 それらのパッケージを hold
しないとアップグレードされてしまいます。 パッケージの `hold'
状態は、dselect
で変更できます (「選択」メニューから hold には `H'
キー、解除には `G' キーを用います)。 また
dpkg --get-selections > ~/curr-sels.txt
の出力を編集して "hold" を "install" に (あるいはその逆に) 変更し、root 権限で
dpkg --set-selections < ~/curr-sels.txt
を行うことでも変更できます。
release 2.2 より前の ssh
や release 2.2 での
ssh-nonfree
に入っていた商用 SSH は、 このリリースから DFSG
フリーの ssh
パッケージ (OpenSSH) に置き換えられました。商用 SSH
のツール類はもう存在しません。 ssh
パッケージでは、 OpenSSH
互換の設定を再生成するかどうかの質問を Debconf で行うようになっています。
アップグレードの前には、必ず /etc/rcS.d
ディレクトリが存在しなければなりません。これがないと libc6
パッケージのインストールに失敗します。
/usr/share/doc
ディレクトリ (が既に存在している場合)
はシンボリックリンク (例えば /usr/doc
への) であってはなりません。
こうなっているといくつかのパッケージで問題が起こります。 しかし
/usr/doc
が /usr/share/doc
へのシンボリックリンクになっているのは構いません。
このようなシンボリックリンクを使っていると、 /usr/doc
ディレクトリが削除できない、 というメッセージを大量に見ることになります。
これらは問題なく、単に無視して全く問題ありません。
推奨されるアップグレード方法は、dselect
と共に apt
を
用いる方法で、ここでそのやり方を説明します。組み込まれた依存関係解析によって、
アップグレードとインストールがスムーズに行えます。
dselect
で apt
以外のアクセスメソッドを用いて
メジャーアップグレードを行ってはなりません。 apt
はインストール中にパッケージの順序を依存関係にしたがって
並び替えるのですが、この機能が apt
以外のアクセスメソッドにはないため、 安全性が低いからです。
また、apt
以外を用いたアップグレードはあまりテストされていませんし、 Debian
ではサポートしていません。
パッケージインストール作業は、すべてスーパーユーザ権限で行ってください。 root
としてログインするか、su
または sudo
を用いて、
必要なアクセス権限を得てください。
アップグレードをはじめる前に、apt
の設定ファイル
/etc/apt/sources.list
を編集して、
パッケージの取得先を決める必要があります。
apt
は、"deb"
行にある全てのパッケージを見比べ、
最も大きなバージョン番号のパッケージをインストールします。
同じパッケージが取得可能な場合は、先に現れた行を優先します
(つまり、複数のミラーを指定している場合は、
最初にローカルのハードディスクを、次に CD-ROM を、 最後に HTTP/FTP
ミラーを指定するといいでしょう)。
デフォルトの設定では、メインの Debian インターネットサーバを
使ってインストールするようになっています。ですがここでは、
/etc/apt/sources.list
を編集して、 他のミラーを
(できればネットワーク的に最も近いミラーを) 使うようにする方が良いでしょう。
ミラーの場所がわからない場合は、 http://www.debian.org/distrib/ftplist
に Debian HTTP / FTP ミラーのアドレスが書かれています。 一般には HTTP
ミラーのほうが ftp ミラーよりも高速です。
例えば、一番近くにある Debian ミラーが http://mirrors.kernel.org/debian/ だったとしましょう。 このミラーを web ブラウザや FTP プログラムで見てみると、 main などのディレクトリが以下のように構成されていることがわかります。
http://mirrors.kernel.org/debian/dists/woody/main/binary-m68k/... http://mirrors.kernel.org/debian/dists/woody/contrib/binary-m68k/...
このミラーを apt
で使うには、次の行を sources.list
ファイルに追加します。
deb http://mirrors.kernel.org/debian woody main contrib
`dists' は書かなくても暗黙のうちに追加されます。 そしてリリース名の後の引き数がそれぞれ用いられ、 複数のディレクトリの各々のパス名に展開されます。
これらの新たなソースを追加したら、それまでの sources.list
にあった
"deb" 行の先頭に シャープ記号 (#)
を置き、それらを無効にしてください。
インストールに必要なパッケージのうち、 ネットワークから取得されたものは、
/var/cache/apt/archives
ディレクトリ (およびダウンロード中のものは
partial/
サブディレクトリ)
に置かれます。したがって、インストールを行う前には、
充分な領域があるかどうか確認しなければなりません。
割に大きめのインストールを行う場合には、 ダウンロードデータとして少なくとも
300MB 程度を考慮しておきましょう。
注意: スタティックな apt
と dpkg
を使う場合は、ホスト名の解決ができません
(このためネットワーク経由のアップグレードでは 通常の apt
の利用をおすすめしています)。 これを解決するには、"deb"
行で、 ミラーの IP アドレスを使うようにしてください (nslookup
some-server としましょう)。
HTTP や FTP のパッケージミラーを使うのではなく、 ローカルディスク (多分 NFS
マウントされたもの) にあるミラーを使うよう、 /etc/apt/sources.list
を変更したいこともあるかもしれません。
例えばパッケージのミラーが /var/ftp/debian/
にあり、 main
などのディレクトリが次のように配置されているとします。
/var/ftp/debian/dists/woody/main/binary-m68k/... /var/ftp/debian/dists/woody/contrib/binary-m68k/...
これを apt
から使うには、次の行を sources.list
ファイルに追加します。
deb file:/var/ftp/debian woody main contrib
`dists' は書かなくても暗黙のうちに追加されます。 そしてリリース名の後の引き数がそれぞれ用いられ、 複数のディレクトリの各々のパス名に展開されます。
これらの新たなソースを追加したら、それまでの sources.list
にあった
"deb" 行の先頭に シャープ記号 (#)
を置き、それらを無効にしてください。
上記のように、最新版の apt
と dpkg
パッケージをインストールする必要がある場合は、 上述の説明に従ってください。
CD だけでインストールをしたい場合は、 sources.list
にあった "deb" 行の先頭に シャープ記号 (#)
を置き、それらを無効にしてください。
CD-ROM ドライブをマウントポイント /cdrom
にマウントすることを許可している行が /etc/fstab
にあるかどうかを確認してください (apt-cdrom
を使う場合は、マウントポイントを /cdrom
以外にはできません)。
例えば /dev/hdc
が CD-ROM ドライブなら、 /etc/fstab
には次のような行が必要です。
/dev/hdc /cdrom auto defaults,noauto,ro 0 0
第 4 フィールドの defaults,noauto,ro の間には スペースがあってはいけません。
これが正しく機能しているか調べるには、 CD を挿入して以下を実行してみてください。
mount /cdrom (CD をマウントポイントにマウントします) ls -alF /cdrom (その CD のルートディレクトリを表示します) umount /cdrom (CD をアンマウントします)
問題がなければ
apt-cdrom add
を、Debian Binary CD-ROM それぞれに対して実行してください。 各 CD に関するデータが APT のデータベースに追加されます。
Debian GNU/Linux 3.0 へのアップグレード方法のお勧めは、 パッケージ管理ツール
dselect
を用いる方法です。 このツールはパッケージに関する判断を
apt-get
よりも安全に行います。
dselect
がインストールされていない場合は、 現在の
(アップグレード前のマシンの) Debian GNU/Linux リリースのバージョンの
dselect
をインストールしてください。
アーカイブへのアクセスメソッドは、 すでに APT を用いるように設定されているはずですが、 メニューから "アクセス ([A]ccess)" を選べばこの設定は変更できます。 アクセス設定が OK なら、メニューから"更新 ([U]pdate)" を選んで 次の段階に進みましょう。これによってパッケージのデータベースが更新されます。
この更新の段階で問題が起きなければ、 メニューから "選択 ([S]elect)"
を選んでください。 dselect
は現在利用可能なパッケージを調べ、
更新が必要なパッケージはどれか、
それらの更新のために新たにインストールが必要となるパッケージはどれか、
をインテリジェントに決定します。
さらに、削除すべきパッケージも提案してくれます。
パッケージ選択画面でリターンを押すと、 「衝突/依存性の解決」の画面となるか
(この場合はここで選択をやり直して、再度リターンを押す必要があります)、
あるいはメインメニューに戻ります。
パッケージの選択段階に置けるヘルプは、"?" を押せば表示されます。
これでパッケージ選択が決まったので、 新しいパッケージをインストールしましょう。 メインメニューから "導入 [I]nstall" を選んでください。 すると、以前に選択したメディアから、 パッケージが APT によってダウンロードされ、インストールされます。 選んだら、とっておきのアール・グレイを一杯飲むことにしましょう。 この作業はかなり時間がかかります。
最後の二段階は、"設定 [C]onfig" と "削除 [R]emove" です。 これらは新しいパッケージを設定し、また不要なパッケージを削除して、 アップグレード処理の締めくくりをします。
まず、必要なパーティションが read-write モードで
マウントされていることを忘れずに確認しましょう (特にルートと /usr
各パーティション)。 次のようなコマンドラインが使えます。
mount -o remount,rw /mountpoint
上述の apt
の sources.list
の設定は、
既にすんでいるとします。次のコマンドを root 権限で実行します。
apt-get update
するとパッケージの概要が書かれたファイルを それぞれのソースから取得してローカルのものと同期し、 新パッケージや更新パッケージの情報を最新のものにします。
ここで強くお勧めしたいのですが、 /usr/bin/script
プログラムを使って、 このアップグレード作業の記録を取るようにしましょう。
こうすれば何らかの問題が生じたときに、 何が起こったかを記録しておくことができ、
バグ報告の必要が生じた場合に、その正確な情報を提供できます。
記録を開始するには次のように入力します。
script -a ~/upgrade-to-woody.typescript
typescript ファイルは /tmp
や /var/tmp
のような一時ディレクトリには置かないでください
(これらのディレクトリのファイルは
アップグレードや再起動の際に削除されることがありますから)。
アップグレードのメインの作業をはじめる前に、 まず apt, dpkg, debconf を更新するのが重要です。 apt はこれまでのリリースに比べてかなり改善されています。 debconf は最近のパッケージで非常によく用いられている 基本ツールです。
apt-get install dpkg apt debconf
これによって dpkg
, apt
, debconf
の最新版がインストールされます。 これらが残りのアップグレードに必要となります。
またこの際には、必要なシステムライブラリも最新のものに更新されます。
debconf が質問の種類について尋ねてきた場合は、 'critical' を選ばないようにしてください。 これだと重要な質問がなされないかもしれません。
実際のアップグレードの前に、次のコマンドによって リハーサルを行ってみると良いでしょう。
apt-get --fix-broken --show-upgraded --simulate dist-upgrade | pager
多少時間がかかりますが、これによってびっくりすることが 少なくなるかもしれません。このコマンドは、 システムに問題があるかどうか (ある場合はその解決法) や、 あるいはアップグレードの最中に実際に何が起こるかを示してくれます (大抵の場合は後者でしょうが)。 "REMOVED" されることになるパッケージに特に注意してください。 これらに必須パッケージが含まれていてはなりません。
apt-get
がうまく動くであろうことが確認できたら、 次を実行します。
apt-get --fix-broken --show-upgraded dist-upgrade
これによってシステムの完全なアップグレードを行います。 すなわち全てのパッケージの最新版を入手し、 パッケージのリリースが変わったことによって生じる 依存関係の変更すべてを解決します。 必要に応じて、新しいパッケージ (通常は更新版のライブラリや、 名前の変わったパッケージ) をインストールしたり、 衝突している古いパッケージを削除したりもします。
CD-ROM のセットからアップグレードする場合には、 アップグレード作業の最中に CD を交換するよう、 数回指定されることになります。 同じ CD を複数回入れなければならないかもしれません。 これはパッケージ間の相互依存関係のせいで、 これらのパッケージは別々の CD に入っていることもあるからです。
現在インストールされているパッケージの更新版が、
他のパッケージのインストール状態を変更しなければならないような場合には、
そのパッケージは現在の状態のままにされます ("held back"
と表示されます)。 したがって壊れたパッケージや依存関係を、 dpkg
や
dselect
を使って削除したり
再インストールしたりする必要が生じるかもしれません。 あるいは、apt-get -f
dist-upgrade の後に apt-get dselect-upgrade
を使ってもいいかもしれません (apt-get(8)
のマニュアルページを見てください)。
--fix-broken (または単に -f) オプションを与えると、
apt
はシステムに存在する壊れた依存関係を修復しようとします。
apt
は、壊れたパッケージ依存関係がシステムに存在するのを
許しません。
場合によっては衝突や依存関係のループのために、 APT の APT::Force-LoopBreak
オプションを有効にして、
必須パッケージを一時的に削除しなければならないかもしれません。 その場合
apt-get
はこのことを警告してアップグレードを中断します。
apt-get
のコマンドラインに -o APT::Force-LoopBreak=1
を指定すれば、 この状態を回避できます。
システムの依存関係の構造が非常に混乱していて、
手動での介入が必要となることもあります。 通常これは dselect
を用いるか、あるいは
dpkg --remove packagename
として、目ざわりなパッケージを消す作業になります。 または次の作業でも良いかもしれません。
apt-get --fix-broken --show-upgraded install dpkg --configure --pending
極端な場合には、コマンドラインから
dpkg --install /path/to/packagename.deb
のように入力して、再インストールしなければならないかもしれません。
問題が修正できたら、先に示したように dist-upgrade コマンドを繰り返し入力すれば、 アップグレードを再開できます。
アップグレードの最中に、
いくつかのパッケージの設定・再設定に関する質問が表示されます。
/etc/init.d
と /etc/terminfo
ディレクトリに置かれるファイルと /etc/manpath.config
に関しては、
パッケージメンテナのバージョンに置き換えるようにしてください。
システムの整合性を保つためには `yes' と答えることが必要になります。
古いバージョンも .dpkg-old という拡張子で
保存されていますので、戻すのはいつでもできます。
どうすればよいか分からなくなったら、 そのパッケージやファイルの名前を書き留めておいて、 その問題解決は後回しにしましょう。 typescript ファイルを検索すれば、 アップグレードの最中に画面に表示された情報を見直すこともできます。
apt-get dist-upgrade が終了したら、 「公式」にはアップグレードは終了したことになります。 しかし次にリブートする前に、 面倒を見てやらなければならないことがいくつかあります。
最も重要なのは、 locales
パッケージと util-linux
パッケージのインストールです。 これは次のようにして行えます。
apt-get install locales util-linux
Debian version 2.0 以前からアップグレードした場合は、 これによって
getty
パッケージが削除されます。 getty
は現在は
util-linux
パッケージに入っています。
他にもいくつかインストールの必要なパッケージがあるかもしれません。
apt-get
は他から依存されていないパッケージ (例えば Recommends: や
Suggests: フィールドのパッケージ全部)
を自動的には選択しないので、これらに気付かないことがあります。 これらを探すのは
dselect
(やその他のビジュアルなフロントエンド) を使えば簡単です。
dselect
なら、「アクセス([A]ccess)」画面で `apt' メソッドを
(まだそうなってなければ) 選び、 「更新 ([U]pdate)」を使って
データベースを新しいパッケージの情報に更新してください。 その後「選択
([S]elect)」スクリーンで `o', `o', `v', Shift-d の順に入力し、
--- Obsolete and local packages present on system ---
というヘッダを探してください。
このセクションには、そのようなパッケージがすべて表示されます。 例えば古い
gimp
パッケージは gimp1.2
に置き換えられています。新しいパッケージは dselect
でインストールすることもできます (すると「依存関係の衝突の解決 (dependency
conflict resolution)」 の画面で古いパッケージを削除するよう表示されます)。
あるいは
apt-get install gimp1.2
とすれば古いバージョンも同時に削除されます (確認を求められるだけです)。
他の例としては、これは dselect
にも表示されないのですが、 telnet
と talk のクライアントとサーバ、 NFS サーバなどがあります。 これらは以前の
netstd
パッケージから分離されたものです。
これらをインストールするには次のコマンドラインを使います。
apt-get install telnet telnetd talk talkd nfs-server
同様に manpages-dev
は manpage
から分離されました。
以前のリリースで分割されたパッケージに関して もっと情報が必要な場合は、そのリリースのリリースノート文書を参照してください。 このリリースで分割されたパッケージについては、 名前が変わったパッケージ, Section 6.1 と 分割されたパッケージ, Section 6.2 に戻って、 そこを見てください。
Debian version 2.0 以前からアップグレードする場合で、 かつ X Window System がインストールされている場合は、 次のコマンドを入力してください。
apt-get remove xbase apt-get install xfonts-base xfonts-75dpi xfonts-100dpi xfonts-scalable
また xdm
をブート時に起動 ("X autostart")
したくない場合は、次も実行してください。
apt-get remove xdm
X Window System 関連のパッケージの アップグレードに関する詳しい情報は、
/usr/share/doc/xfree86-common/README.Debian-upgrade
を読んでください。これは以前の Debian リリース全てのユーザに
当てはまります。要するに、読め、ということです。
カーネルモジュールの設定システムは Debian GNU/Linux release 2.0
以降に変更されました。 Debian 2.0 以前からアップグレードする場合は、
リブートの前にシステムを変換しなければなりません。 通常は update-modules
force とするだけで大丈夫です。 でも update-modules(8)
マニュアルページも読んでおく方がいいでしょう。
Linux カーネルは、以上の手続きによっては更新されません。
そのようにしたい場合は、kernel-image-*
パッケージの
どれかひとつをインストールするか、
カスタマイズしたカーネルをソースからコンパイルするかします。
Debian GNU/Linux には 2.2.20 が含まれています。 これは 2.2 系の、やや古くて安定したカーネルシリーズです。 2.4 系のカーネルはハードウェアのサポートも性能も改善されているので、 こちらを使いたい人もいるかもしれません。 3 番目の CD-ROM で起動すると、これを自動的に行ってくれます。 あるいはビルド済みのものをインストールしても構いません。
apt-get install kernel-image-2.4.18-{386,586tsc,686}
もうちょっと冒険したい人には、 自分のカスタムカーネルをコンパイルする方法も
Debian GNU/Linux は提供しています。 kernel-package
ツールをインストールして、 /usr/share/doc/kernel-package
の文書を読んでみてください。
では新しい Debian GNU/Linux 3.0 システムをお楽しみください! :-)
Debian GNU/Linux 3.0 (`woody') リリースノート ( Motorola 680x0 用)
$Id: release-notes.ja.sgml,v 1.37 2002/08/19 10:00:41 joy Exp $debian-doc@lists.debian.org