[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 次のページ ]


APT HOWTO (Obsolete Documentation)
第 3 章 - パッケージの管理


3.1 利用可能なパッケージの一覧を更新する

どのパッケージがインストール済で、どれが未インストールか、どのパッケージが インストール可能かについての記録用に、パッケージシステムはプライベートな データベースを使用します。apt-get プログラムは、ユーザが インストールを要求したパッケージを見つけたり、そのパッケージが適切に動作 するために必要な追加パッケージを見つけるのに、このデータベースを使います。

このデータベースを更新するには、apt-get update というコマンド を使います。このコマンドは /etc/apt/sources.list に記述されている アーカイブ内のパッケージ一覧を探します。このファイルに関する詳しい情報は /etc/apt/sources.list ファイル, 第 2.1 節 を参照してください。

可能なパッケージ更新についての情報を最新に保つために、このコマンドを 定期的に実行するのは良いアイデアです。セキュリティ関連のアップデートは なおさらです。


3.2 パッケージのインストール

ようやく、皆さんが待ち望んでいたプロセスです! sources.list を用意し、 利用可能なパッケージの一覧を更新したら、欲しいパッケージをインストール するには apt-get を実行するだけです。例えば次のように:

     apt-get install xchat

APT は指定されたパッケージの最新バージョンをデータベース中に探し、 sources.list に記載された対応するアーカイブから抽出します。 指定されたパッケージが他のパッケージに依存している場合 -- 以下の例のように -- 、APT は依存関係をチェックして必要なパッケージをインストールします。 以下の例を参照してください:

     [root]@[/] # apt-get install nautilus
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following extra packages will be installed:
       bonobo libmedusa0 libnautilus0 
     The following NEW packages will be installed:
       bonobo libmedusa0 libnautilus0 nautilus 
     0 packages upgraded, 4 newly installed, 0 to remove and 1  not upgraded.
     Need to get 8329kB of archives. After unpacking 17.2MB will be used.
     Do you want to continue? [Y/n]

nautilus パッケージは、上記に引用された共有ライブラリに 依存しています。そのため、APT はそれらをアーカイブからダウンロードします。 apt-get のコマンドラインにそれらのライブラリ名が指定されていれば、 APT は作業を継続していいか尋ねてきません - 関連全パッケージをインストール したいものと受け取るのです。

このことは、APT が確認を求めてくるのは依存関係を満たすために指定された 以外のパッケージをインストールする必要がある時だけ、ということを意味 しています。

ap-get には以下のオプションが使えます。

     -h  ヘルプを表示
     -d  ダウンロードのみ - インストールやアーカイブの解凍は行ないません
     -f  完全度チェックに失敗しても、作業を継続しようとします
     -s  何もしません。シミュレーションを行なうだけです
     -y  全ての問いに対する回答が Yes とみなし、尋ねてきません
     -u  アップグレードされるパッケージの一覧を表示します

インストールすべき複数のパッケージを 1 行中に指定できます。 ネットワークからダウンロードされたファイルは /var/cache/apt/archives/ ディレクトリに置かれ、 それからインストールされます。

同じコマンドライン内に、削除すベきパッケージも指定することができます。以下の 例のように、削除したいパッケージ名の直後に '-' を付けるだけです:

     [root]@[/] # apt-get install nautilus gnome-panel-       
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following extra packages will be installed:
       bonobo libmedusa0 libnautilus0 
     The following packages will be REMOVED:
       gnome-applets gnome-panel gnome-panel-data gnome-session 
     The following NEW packages will be installed:
       bonobo libmedusa0 libnautilus0 nautilus 
     0 packages upgraded, 4 newly installed, 4 to remove and 1  not upgraded.
     Need to get 8329kB of archives. After unpacking 2594kB will be used.
     Do you want to continue? [Y/n]

パッケージの削除に関する詳細は パッケージの削除, 第 3.3 節 を参照してください。

インストール済のパッケージが一部壊れてしまったり、同じバージョンの パッケージ中にあるファイルを再インストールしたいだけなら、以下の例の ように --resinstall オプションを使えます。

     [root]@[/] # apt-get --reinstall install gdm
     Reading Package Lists... Done
     Building Dependency Tree... Done
     0 packages upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 1  not upgraded.
     Need to get 0B/182kB of archives. After unpacking 0B will be used.
     Do you want to continue? [Y/n]

本マニュアル執筆時点で使った APT のバージョンは 0.5.3 であり、これは Debian の 'unstable' (sid) の最新版でした。このバージョンが インストールされていれば、追加機能を使うこともできます。特定の ディストリビューション内のパッケージをインストールするのに apt-get install package/distribution としたり、 apt-get install package=version のようなコマンドラインを 使えます。例えば:

     apt-get install nautilus/unstable

この例では、あなたが 'stable' を使っていても 'unstable' ディストリ ビューション内の nautilus をインストールします。 'ディストリビューション' として指定できるのは stable, testing, unstable の 3 つです。

重要: Debian の 'unstable' 版は、Debian パッケージが最初に アップロードされる最新版です。このディストリビューションは、パッケージに 加えられたあらゆる変更を、些細なものから多数のパッケージやシステム全体に 影響を及ぼす大掛かりなものまで受け付けます。このため、経験の浅いユーザや 確固たる安定性が必要な人は、使用するべきではありません

'testing' ディストリビューションは、安定性という点では 'unstable' よりも わずかに優れていますが、業務上のシステムには 'stable' ディストリビューション を使うべきです。


3.3 パッケージの削除

あるパッケージをもはや使いたくないのなら、APT を使ってシステムから 取り除くことができます。そのためには apt-get remove package と タイプするだけです。例えば:

     [root]@[/] # apt-get remove gnome-panel
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following packages will be REMOVED:
       gnome-applets gnome-panel gnome-panel-data gnome-session 
     0 packages upgraded, 0 newly installed, 4 to remove and 1  not upgraded.
     Need to get 0B of archives. After unpacking 14.6MB will be freed.
     Do you want to continue? [Y/n]

上記の例でわかるように、APT は削除を要求したパッケージに依存している他の パッケージも削除するようにしてくれます。依存している他のパッケージを削除 せずに、あるパッケージを削除することは、APT には不可能です。

上記のように apt-get を使うとパッケージは削除されますが、 そのパッケージの設定ファイルがあれば完全な形でシステム内に残ります。 パッケージを完全に削除するには、次のようにしてください:

     [root]@[/] # apt-get --purge remove gnome-panel
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following packages will be REMOVED:
       gnome-applets* gnome-panel* gnome-panel-data* gnome-session* 
     0 packages upgraded, 0 newly installed, 4 to remove and 1  not upgraded.
     Need to get 0B of archives. After unpacking 14.6MB will be freed.
     Do you want to continue? [Y/n]

パッケージ名の後の '*' に注意してください。これは各パッケージの設定 ファイルも併せて削除されることを示しています。

install 指定を行なった時のように、特定のパッケージに対する指示を remove と逆転させるための記号を使えます。削除の際に、'+' を パッケージ名の直後に付ければ、そのパッケージは削除の代わりにインストール されます。

     [root]@[/] # apt-get --purge remove gnome-panel nautilus+
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following extra packages will be installed:
       bonobo libmedusa0 libnautilus0 nautilus 
     The following packages will be REMOVED:
       gnome-applets* gnome-panel* gnome-panel-data* gnome-session* 
     The following NEW packages will be installed:
       bonobo libmedusa0 libnautilus0 nautilus 
     0 packages upgraded, 4 newly installed, 4 to remove and 1  not upgraded.
     Need to get 8329kB of archives. After unpacking 2594kB will be used.
     Do you want to continue? [Y/n]

apt-get の表示が、追加でインストールされるパッケージ (つまり、 インストールを要求したパッケージを適切に機能させるためにインストール しなければならないパッケージ)、削除されるパッケージ、インストールされる パッケージ (再び追加パッケージ) であることに注意してください。


3.4 パッケージのアップグレード

パッケージのアップグレードは、APT システムの偉大な成果です。 たった一つのコマンド - apt-get upgrade で実施可能です。この コマンドは同じディストリビューション中のパッケージをアップグレード する際も、新たなディストリビューションにアップグレードする際にも 使えます。ですが後者の場合は apt-get dist-upgrade コマンドを 使用したほうがよいでしょう。詳細については 新リリースへのアップグレード, 第 3.5 節 を 参照してください。

このコマンドには -u オプションを付けて実行されると便利です。 このオプションにより、APT はアップグレードされる全パッケージの一覧を 表示します。もし付けなければ、何が起きているのかわからないまま アップグレードすることになります。APT は各パッケージの最新バージョンを ダウンロードし、適切な順番でインストールします。アップグレードを実行する 前に、必ず apt-get update を実行しておくことが重要です。 利用可能なパッケージの一覧を更新する, 第 3.1 節 を参照してください。以下は例です:

     [root]@[/] # apt-get -u upgrade
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following packages have been kept back
       cpp gcc lilo 
     The following packages will be upgraded
       adduser ae apt autoconf debhelper dpkg-dev esound esound-common ftp indent
       ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0 libesd0-dev
       libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev liborbit0
       libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit procps psmisc 
     29 packages upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
     Need to get 5055B/5055kB of archives. After unpacking 1161kB will be used.
     Do you want to continue? [Y/n]

プロセスは非常に単純です。最初の 2, 3 行で、apt-get がいくつかの パッケージをkept back (保持)すると言っていることに注意して ください。これは、何らかの理由でインストールされない新バージョンのパッケージ があることを意味しています。考えられる理由としては、壊れた依存関係 (依存先のパッケージの適正バージョンがダウンロードできない) や、 新たな依存関係 (依存するパッケージが新たに登場した) などがあります。

最初のケースを手際よく解決する方法はありません。2 番目のケースに対しては、 問題となっているパッケージに対して apt-get install を実行するだけで 充分であり、依存対象となっているパッケージをダウンロードしてくれます。 さらに手際のよい解決方法は dist-upgrade を使用することです。 新リリースへのアップグレード, 第 3.5 節 を参照してください。


3.5 新リリースへのアップグレード

APT の本機能により、インターネットあるいは新 CD (購入したものか、ISO イメージと してダウンロードしたもの) を使って、全 Debian システムを一度にアップグレード することができます。

さらにインストール済パッケージ間の関係に変化があった際にも使います。 apt-get upgrade では、これらのパッケージは何も変更されないまま 保持 (kept back) されるのです。

例えば、Debian の安定版リビジョン 0 を使っていて、リビジョン 3 の CD を 買ってきたとします。この CD を元に APT を使って、システムをアップグレード できます。その為には、apt-cdrom (sources.list ファイルに CD-ROM を追加する, 第 2.4 節 を参照) を使って CD を /etc/apt/sources.list に追加し、それから apt-get dist-upgrade を実行します。

APT は常に最新バージョンのパッケージを探すことに注意してください。 したがって、etc/apt/sources.list に CD よりも新しいバージョンの パッケージを含むアーカイブが記述されていれば、APT はそこからパッケージを ダウンロードします。

パッケージのアップグレード, 第 3.4 節 の節で示した例では、いくつかのパッケージが kept back されているのがわかります。この問題は、 dist-upgrade によって解決できます。

     [root]@[/] # apt-get -u dist-upgrade
     Reading Package Lists... Done
     Building Dependency Tree... Done
     Calculating Upgrade... Done
     The following NEW packages will be installed:
       cpp-2.95 cron exim gcc-2.95 libident libopenldap-runtime libopenldap1
       libpcre2 logrotate mailx 
     The following packages have been kept back
       lilo 
     The following packages will be upgraded
       adduser ae apt autoconf cpp debhelper dpkg-dev esound esound-common ftp gcc
       indent ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0
       libesd0-dev libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev
       liborbit0 libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit
       procps psmisc 
     31 packages upgraded, 10 newly installed, 0 to remove and 1 not upgraded.
     Need to get 0B/7098kB of archives. After unpacking 3118kB will be used.
     Do you want to continue? [Y/n]

パッケージがアップグレードされると共に、新たなパッケージが (パッケージ間の 新たな依存関係に応じて) インストールされていることに注意してください。 さらに、lilo が依然として kept back されていることにも注意して ください。これはおそらく、新たな依存関係を超える深刻な問題があるからで しょう。次の例によって原因がわかります:

     [root]@[/] # apt-get -u install lilo
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following extra packages will be installed:
       cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2
       logrotate mailx 
     The following packages will be REMOVED:
       debconf-tiny 
     The following NEW packages will be installed:
       cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2
       logrotate mailx 
     The following packages will be upgraded
       lilo 
     1 packages upgraded, 9 newly installed, 1 to remove and 31 not upgraded.
     Need to get 225kB/1179kB of archives. After unpacking 2659kB will be used.
     Do you want to continue? [Y/n]

上記に示されているように、lilo には debconf-tiny パッ ケージと新たに衝突しています。この事は、debconf-tiny を除去しなければ lilo をインストール (あるいはアップグレード) できないことを意味しています。


3.6 APT を dselect と一緒に使う

dselect は、インストールする Debian パッケージを選択する際の 手助けとなるプログラムです。やや複雑でうんざりさせられるプログラムだと 考えられていますが、練習すればそのコンソールベースの ncurses インター フェイスを操作するコツを掴むことができます。

dselect の機能の一つに、ある Debian パッケージをインストールするにあたって 他のパッケージを "recommending" したり "suggesting" するという能力を 活用できるということがあります。このプログラムを使うには、root になって 'dselect' と実行してください。それからアクセス方法として、 'apt' を選択してください。この手順は実のところ不要なのですが、CD-ROM を 使わずにインターネットからパッケージをダウンロードしたいのであれば、 dselect を使うにあたって最善の方法です。

dselect の使用方法についてさらに理解したければ、Debian のホームページ http://www.debian.org/doc/ddp にある dselect のドキュメントを読んでください。

deselect を使って選択が終われば、次のようにしてください:

     apt-get -u dselect-upgrade

すると以下の例のようになります:

     [root]@[/] # apt-get -u dselect-upgrade
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following packages will be REMOVED:
       lbxproxy 
     The following NEW packages will be installed:
       bonobo console-tools-libs cpp-3.0 enscript expat fingerd gcc-3.0
       gcc-3.0-base icepref klogd libdigest-md5-perl libfnlib0 libft-perl
       libgc5-dev libgcc300 libhtml-clean-perl libltdl0-dev libsasl-modules
       libstdc++3.0 metamail nethack proftpd-doc psfontmgr python-newt talk tidy
       util-linux-locales vacation xbill xplanet-images 
     The following packages will be upgraded
       debian-policy 
     1 packages upgraded, 30 newly installed, 1 to remove and 0  not upgraded.
     Need to get 7140kB of archives. After unpacking 16.3MB will be used.
     Do you want to continue? [Y/n]

同じシステムで apt-get dist-upgrade を実行した場合と比べてみてください。

     [root]@[/] # apt-get -u dist-upgrade   
     Reading Package Lists... Done
     Building Dependency Tree... Done
     Calculating Upgrade... Done
     The following packages will be upgraded
       debian-policy 
     1 packages upgraded, 0 newly installed, 0 to remove and 0  not upgraded.
     Need to get 421kB of archives. After unpacking 25.6kB will be freed.
     Do you want to continue? [Y/n]

他のパッケージが "suggested" したり "recommended" している多くのパッケージが インストールされようとしていることに注意してください。他のパッケージは、 dselect の一覧表示を通じて選択したパッケージ毎にインストールされたり 削除 (lbxproxy の場合など) されたりしようとしています。APT と組み合わせて 使用すると、dselect は強力なツールとなるのです。


3.7 インストール済パッケージを特定バージョンのまま保持する方法

パッケージに何らかの修正を行なった後、そのプログラムの新バージョンに 反映させる時間がなかったり、反映させるのを望まないことがあるかもしれません。 あるいは例えば、Debian ディストリビューションを 3.0 にアップグレードしたも のの、特定パッケージのバージョンだけは Debian 2.2 のものを使用したいことが あるかもしれません。インストールしたパッケージがアップグレードされないよう、 "ピン" で止めることができます。

この目的で使うリソースは単純です。/etc/apt/preferences ファイルを 編集するだけです。

フォーマットは簡単です:

     Package: <package>
     Pin: <pin definition>
     Pin-Priority: <pin's priority>

例えば sylpheed パッケージのバージョン 0.4.99 に "reply-to-list" を使うように修正して、それを保持するためには、次のように します。

     Package: sylpheed
     Pin: version 0.4.99*

* (アスタリスク) を使っていることに注意してください。これは "ワイルドカード" であり、0.4.99 で始まる全バージョンを "ピン" で固定 したいということです。なぜこのようなことをするかというと、Debian は パッケージのバージョンに "Debian リビジョン" を付加するからであり、 これらのリビジョンがインストールされるのを避けたいからです。さもないと、 バージョン 0.4.99-1 や 0.4.99-10 が利用可能になるとすぐに インストールされてしまいます。修正を加えたパッケージを使い続けたいのなら、 このような動作を望まないでしょう。

Pin-Priority フィールドはオプションです。特に指定がなければ、 デフォルト値は 989 となります。

Pin-Priority がどのように働くかを見てみましょう。値が 0 未満の場合、 そのパッケージは絶対にインストールされません。値が 0 以上 100 未満だと、 パッケージはインストールされておらず利用可能なバージョンもありません。これらのパッケージ はバージョン選択プロセスにも現れません。100 の値は、インストール済の パッケージに当てはめられます - 他のバージョンによって置き換え可能であり、 置き換える側の値は 101 以上でなければなりません。

101 以上の値は、そのパッケージがインストールされるべきであることを 示しています。よくあるのは、あるパッケージのインストール済バージョンが より進んだバージョンにのみアップグレードされる場合です。100 以上 1000 以下のあらゆる値は、この典型的な動作をすることを示しています。 このような値を持つパッケージは、利用可能であっても古いバージョンには ダウングレードされません。例えば sylpheed 0.5.3 をインストーしてから、 sylpheed 0.4.99 の priority 値を 999 に設定しても、0.4.99 は その設定によってインストールされません。あるパッケージを ダウングレード可能にするには、値を 1001 以上に設定しなければなりません。

このダウングレードという概念により、強力な応用が可能となります。 たとえば Debian の stable 版を testing 版にアップグレード したものの、それを取りやめたくなったと想像してください - たぶん、 testing はあなたに合うほどにはテストされていなかったのでしょう。 そこでパッケージ名にワイルドカードを用いてピン設定をすることにより、 stable に戻ることができます。例えば:

     Package: *
     Pin: release a=stable
     Pin-Priority: 1001

上記のように設定したあとで、apt-get -u dist-upgrade とすれば、 stable 版にシステムをダウングレードすることができます。

このピンの設定は、パッケージの version, release, origin に対して行なうことができます。

version に対するピン設定は、上記の例のように、ワイルドカードを 使って複数バージョンを一度に指定することも、特定のバージョンだけを 指定することもできます。

release オプションは、CD 内にある APT レポジトリのリリース ファイルに依存します。このファイルを提供していないパッケージレポジトリを 使っているなら、このオプションは全く役に立ちません。/var/lib/apt/lists/ 内にあるレポジトリファイルの中身を見ることができます。リリースの パラメータとしては: a (archive), c (components), v (version), o (origin) そして l (label) があります。

以下は例です:

     Package: *
     Pin: release v=2.2*,a=stable,c=main,o=Debian,l=Debian
     Pin-Priority: 1001

この例では、Debian バージョン 2.2* (2.2r2 や 2.2r3 が対象となります -- これは "ポイントリリース" のことで、セキュリティフィックスや他の極めて重要な アップデートを含む際によく使われます) で、stable レポジトリ、 (contribnon-free に対して) main セクション、 origin と label は Debian をそれぞれ選択しています。origin (o=) はリリース ファイルの製作者を、label (l=) はディストリビューション名を表わします。 例えば Debian は Debian 自体であり、Progeny は Progeny Debian を意味します。 リリースファイルの例を以下に示します:

     $ cat /var/lib/apt/lists/ftp.debian.org.br_debian_dists_potato_main_binary-i386_Release
     Archive: stable
     Version: 2.2r3
     Component: main
     Origin: Debian
     Label: Debian
     Architecture: i386

[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 次のページ ]


APT HOWTO (Obsolete Documentation)

1.7.6 - 2002 年 1 月

Gustavo Noronha Silva kov@debian.org