[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 次のページ ]
どのパッケージがインストール済で、どれが未インストールか、どのパッケージが
インストール可能かについての記録用に、パッケージシステムはプライベートな
データベースを使用します。apt-get
プログラムは、ユーザが
インストールを要求したパッケージを見つけたり、そのパッケージが適切に動作
するために必要な追加パッケージを見つけるのに、このデータベースを使います。
このデータベースを更新するには、apt-get update
というコマンド
を使います。このコマンドは /etc/apt/sources.list に記述されている
アーカイブ内のパッケージ一覧を探します。このファイルに関する詳しい情報は /etc/apt/sources.list ファイル, 第 2.1
節 を参照してください。
可能なパッケージ更新についての情報を最新に保つために、このコマンドを 定期的に実行するのは良いアイデアです。セキュリティ関連のアップデートは なおさらです。
ようやく、皆さんが待ち望んでいたプロセスです! 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' ディストリビューション を使うべきです。
あるパッケージをもはや使いたくないのなら、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
の表示が、追加でインストールされるパッケージ (つまり、
インストールを要求したパッケージを適切に機能させるためにインストール
しなければならないパッケージ)、削除されるパッケージ、インストールされる
パッケージ (再び追加パッケージ) であることに注意してください。
パッケージのアップグレードは、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 節 を参照してください。
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
をインストール (あるいはアップグレード) できないことを意味しています。
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 は強力なツールとなるのです。
パッケージに何らかの修正を行なった後、そのプログラムの新バージョンに 反映させる時間がなかったり、反映させるのを望まないことがあるかもしれません。 あるいは例えば、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 レポジトリ、 (contrib や non-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 月kov@debian.org