第1章 全般

目次

1.1. パッケージシステムの構造

APT パッケージは現在、APT dselect メソッドと apt-get コマンドラインユーザインターフェイスの2つを収録しています。両方ともインターネットから新しいパッケージをダウンロードするのと同様、パッケージをインストール、削除する方法を提供しています。

Debian パッケージシステムには各パッケージに関連する膨大な情報があり、システムに手際良く簡単に統合することを支援します。その最も重要な機能は依存システムです。

依存システムにより、システムにあるライブラリ等の共有要素を個々のプログラムを使えるようになります。簡単に言うと、プログラムのうちまれに利用される部分を別個のパッケージに配置して、平均的ユーザがインストールを必要とするものの数を減らします。また、メール転送エージェントや X サーバ等の選択ができるようにもなります。

依存システムの理解はまず単純な依存の概念を把握することから始まります。単純な依存というのは、あるパッケージが適切に機能するためには別のパッケージが同時にインストールされている必要があるということです。

例えば mailcrypt は emacs を拡張するプログラムで、GPG によるメールの暗号化を支援します。GPGP がインストールされていなければ mailcrypt は役に立たないので mailcrypt には GPG に単純に依存しています。また、これは emacs の拡張なので emacs に単純に依存し、emacs がないと何の役にも立ちません。

理解しておかないといけないもう一つの重要な依存に競合する依存があります。これはあるパッケージが別のパッケージと同時にインストールされていると機能せず、システムにとってひどく有害なこともあります。例として sendmail や exim、qmail 等のメール転送エージェントで考えてみましょう。メール転送エージェントはどれもメールを受け取るのにネットワークを待ち受ける必要があるため、2つインストールすることは不可能です。複数インストールするとシステムに重大な被害を与える可能性があるため、メール転送エージェントはどれも他のあらゆるメール転送エージェントと競合依存となっています。

複雑な例としては、別のパッケージのように装うパッケージがあります。exim と sendmail について見てみると、その多くの目的は同一で、両方ともメールを配送し、一般的インターフェイスを解釈します。そこで、パッケージシステムにはどちらも mail-transport-agents だと宣言する方法があります。そうして exim と sendmail は両方とも mail-transport-agent を提供すると宣言し、他のメール転送エージェントを必要とするパッケージは mail-transport-agent に依存します。手作業によりパッケージを修正しようとしたときに多大な混乱が生まれる可能性があります。

既にインストールされている、あるいはされていないパッケージについて、1つの依存が生まれる可能性は常にあります。APT はインストールするパッケージの選択を支援する自動化でのアルゴリズムをいくつか提供することで依存問題の解決支援に努めます。