[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 次のページ ]

Debian GNU/Linux 3.0 (`woody') リリースノート ( Intel x86 用)
第 3 章 - 以前のリリースからアップグレードする


3.1 システムの変更の詳細


3.1.1 重要なプログラム作法の変更

Debian は、できるだけ上流のパッケージを改変しないようにしています。 したがってオリジナルのパッケージでなされた変更は、 Debian GNU/Linux にも存在することになります。

Debian GNU/Linux 2.2 'Potato' リリースでは、 tarbzip 圧縮に

     -I

スイッチを用いていました。 しかし現在では

     -j

スイッチが使われています。 必要に応じて、全てのスクリプトを変更してください。


3.2 アップグレードの準備

システムをアップグレードする前に、完全なバックアップを取っておくよう 強くおすすめします。少なくとも、 失いたくないデータや設定情報だけでもバックアップしておきましょう。 アップグレードのツールや処理は極めて信頼性の高いものですが、 アップグレードの最中にハードウェア障害が起こると、 システムに大きなダメージを与えることがありえます。

特にバックアップしておくべきものとしては、 /etc/var/lib/dpkg の中身、 dpkg --get-selections \* の出力などが挙げられます。

アップグレードの前には、その予定を全てのユーザに知らせると良いでしょう。 しかしシステムに ssh などでアクセスしてきているユーザは、 アップグレードの最中にもそうとは気付かず、 作業を続行してしまうかもしれません。 万一の用心をしたければ、アップグレードの前に ユーザのパーティション (/home) をバックアップして、 アンマウントしてしまいましょう。通常は再起動は必要ないでしょう。

ディストリビューションのアップグレードは、 ローカルのテキストモードの仮想コンソール (あるいは直接接続されたシリアル端末) から行うか、 リモートなら ssh リンク経由で行いましょう。

重要: telnet, rlogin, rsh を用いてアップグレードをしては いけません。 アップグレードマシンの xdm が管理している X セッションからのアップグレードも行うべきではありません。 これらのサービスはアップグレードの最中に切断されてしまう可能性が高く、 するとアップグレード途中のシステムへの 接続が不可能になってしまう からです。


3.2.1 パッケージの状態をチェックする

アップグレードにどんな方法を取るにせよ、 まず全てのパッケージの状態をチェックし、 アップグレード可能な状態になっているかどうか調べましょう。 以降のコマンドを用いると、不完全インストール (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

を行うことでも変更できます。


3.2.2 SSH ユーザ向けの注意

release 2.2 より前の ssh や release 2.2 での ssh-nonfree に入っていた商用 SSH は、 このリリースから DFSG フリーの ssh パッケージ (OpenSSH) に置き換えられました。商用 SSH のツール類はもう存在しません。 ssh パッケージでは、 OpenSSH 互換の設定を再生成するかどうかの質問を Debconf で行うようになっています。


3.2.3 注意が必要なディレクトリ

アップグレードの前には、必ず /etc/rcS.d ディレクトリが存在しなければなりません。これがないと libc6 パッケージのインストールに失敗します。

/usr/share/doc ディレクトリ (が既に存在している場合) はシンボリックリンク (例えば /usr/doc への) であってはなりません。 こうなっているといくつかのパッケージで問題が起こります。 しかし /usr/doc/usr/share/doc へのシンボリックリンクになっているのは構いません。 このようなシンボリックリンクを使っていると、 /usr/doc ディレクトリが削除できない、 というメッセージを大量に見ることになります。 これらは問題なく、単に無視して全く問題ありません。


3.3 APT の取得先 (ソース) の準備

推奨されるアップグレード方法は、dselect と共に apt を 用いる方法で、ここでそのやり方を説明します。組み込まれた依存関係解析によって、 アップグレードとインストールがスムーズに行えます。

dselectapt 以外のアクセスメソッドを用いて メジャーアップグレードを行ってはなりません。 apt はインストール中にパッケージの順序を依存関係にしたがって 並び替えるのですが、この機能が apt 以外のアクセスメソッドにはないため、 安全性が低いからです。 また、apt 以外を用いたアップグレードはあまりテストされていませんし、 Debian ではサポートしていません。

パッケージインストール作業は、すべてスーパーユーザ権限で行ってください。 root としてログインするか、su または sudo を用いて、 必要なアクセス権限を得てください。

アップグレードをはじめる前に、apt の設定ファイル /etc/apt/sources.list を編集して、 パッケージの取得先を決める必要があります。

apt は、"deb" 行にある全てのパッケージを見比べ、 最も大きなバージョン番号のパッケージをインストールします。 同じパッケージが取得可能な場合は、先に現れた行を優先します (つまり、複数のミラーを指定している場合は、 最初にローカルのハードディスクを、次に CD-ROM を、 最後に HTTP/FTP ミラーを指定するといいでしょう)。


3.3.1 APT の Internet ソースの追加

デフォルトの設定では、メインの 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-i386/...
                  http://mirrors.kernel.org/debian/dists/woody/contrib/binary-i386/...

このミラーを apt で使うには、次の行を sources.list ファイルに追加します。

                
                  deb http://mirrors.kernel.org/debian woody main contrib

`dists' は書かなくても暗黙のうちに追加されます。 そしてリリース名の後の引き数がそれぞれ用いられ、 複数のディレクトリの各々のパス名に展開されます。

これらの新たなソースを追加したら、それまでの sources.list にあった "deb" 行の先頭に シャープ記号 (#) を置き、それらを無効にしてください。

インストールに必要なパッケージのうち、 ネットワークから取得されたものは、 /var/cache/apt/archives ディレクトリ (およびダウンロード中のものは partial/ サブディレクトリ) に置かれます。したがって、インストールを行う前には、 充分な領域があるかどうか確認しなければなりません。 割に大きめのインストールを行う場合には、 ダウンロードデータとして少なくとも 300MB 程度を考慮しておきましょう。

注意: スタティックな aptdpkg を使う場合は、ホスト名の解決ができません (このためネットワーク経由のアップグレードでは 通常の apt の利用をおすすめしています)。 これを解決するには、"deb" 行で、 ミラーの IP アドレスを使うようにしてください (nslookup some-server としましょう)。


3.3.2 APT のローカルミラーソースの追加

HTTP や FTP のパッケージミラーを使うのではなく、 ローカルディスク (多分 NFS マウントされたもの) にあるミラーを使うよう、 /etc/apt/sources.list を変更したいこともあるかもしれません。

例えばパッケージのミラーが /var/ftp/debian/ にあり、 main などのディレクトリが次のように配置されているとします。

                
                  /var/ftp/debian/dists/woody/main/binary-i386/...
                  /var/ftp/debian/dists/woody/contrib/binary-i386/...

これを apt から使うには、次の行を sources.list ファイルに追加します。

                  deb file:/var/ftp/debian woody main contrib

`dists' は書かなくても暗黙のうちに追加されます。 そしてリリース名の後の引き数がそれぞれ用いられ、 複数のディレクトリの各々のパス名に展開されます。

これらの新たなソースを追加したら、それまでの sources.list にあった "deb" 行の先頭に シャープ記号 (#) を置き、それらを無効にしてください。


3.3.3 APT の CD-ROM ソースの追加

上記のように、最新版の aptdpkg パッケージをインストールする必要がある場合は、 上述の説明に従ってください。

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 のデータベースに追加されます。


3.4 dselect を用いたアップグレード

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" です。 これらは新しいパッケージを設定し、また不要なパッケージを削除して、 アップグレード処理の締めくくりをします。


3.5 apt-get を直接用いたアップグレード (非推奨)

まず、必要なパーティションが read-write モードで マウントされていることを忘れずに確認しましょう (特にルートと /usr 各パーティション)。 次のようなコマンドラインが使えます。

                 mount -o remount,rw /mountpoint

上述の aptsources.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" と表示されます)。 したがって壊れたパッケージや依存関係を、 dpkgdselect を使って削除したり 再インストールしたりする必要が生じるかもしれません。 あるいは、apt-get -f dist-upgrade の後に apt-get dselect-upgrade を使ってもいいかもしれません (apt-get(8) のマニュアルページを見てください)。

--fix-broken (または単に -f) オプションを与えると、 apt はシステムに存在する壊れた依存関係を修復しようとします。 apt は、壊れたパッケージ依存関係がシステムに存在するのを 許しません。


3.5.1 アップグレード中・アップグレード後の注意点

場合によっては衝突や依存関係のループのために、 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 ファイルを検索すれば、 アップグレードの最中に画面に表示された情報を見直すこともできます。


3.5.2 リブート前にすべきこと

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-devmanpage から分離されました。

以前のリリースで分割されたパッケージに関して もっと情報が必要な場合は、そのリリースのリリースノート文書を参照してください。 このリリースで分割されたパッケージについては、 名前が変わったパッケージ, 第 6.1 節分割されたパッケージ, 第 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) マニュアルページも読んでおく方がいいでしょう。

Debian GNU/Linux version 1.x (つまり 2.0 より前) から アップグレードした場合は、 古いシステムでは `libc5' ライブラリが使われていたのに対し、 アップグレードされたシステムでは `libc6' 版になっています。 新しいライブラリでは utmp ファイルと wtmp ファイルのフォーマットが変わっています。 これは last コマンドで確認できます。 これを解決するには、再起動が必要となります。 しかしその前に、古いファイルをコピーして、 新しく空のファイルを作ってください。次のコマンドを使います。

                
                cd /var/log
                mv wtmp wtmp.libc5
                touch wtmp
                cd /var/run
                cp /dev/null utmp

この後でシステムを再起動してください (注意: Debian release 2.0 以降では必要ありません!)。 一度再起動したら、last コマンドは 再び正しいデータを表示するようになります。

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 システムをお楽しみください! :-)


[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 次のページ ]

Debian GNU/Linux 3.0 (`woody') リリースノート ( Intel x86 用)

$Id: release-notes.ja.sgml,v 1.1 2003/01/04 00:37:57 joy Exp $

Josip Rodin, Bob Hilliard, Adam Di Carlo, Anne Bezemer, Rob Bradford
debian-doc@lists.debian.org