15.3. APT 用のパッケージリポジトリの作成
Falcot Corp の保守する Debian パッケージの数は次第に増えました。この中には、既存のパッケージから手元で修正したパッケージや、内部データとプログラムを配布するために最初から作成したパッケージなどがあります。
パッケージの配備を簡単にするために、管理者はこれらのパッケージを APT から直接使うことが可能なパッケージアーカイブに統合したいと思っています。明らかなメンテナンス上の理由により、管理者は内部パッケージと手元で再ビルドしたパッケージを別にしたいと思っています。目標は /etc/apt/sources.list.d/falcot.list
ファイル内のエントリを以下のようにすることです。
deb http://packages.falcot.com/ updates/
deb http://packages.falcot.com/ internal/
このため、管理者は内部 HTTP サーバ上に仮想ホストを設定して、APT リポジトリのルートとして /srv/vhosts/packages/
を割り当てます。アーカイブ自体の管理は mini-dinstall
コマンド (よく似た名前のパッケージに含まれます) に委託されます。mini-dinstall
ツールは incoming/
ディレクトリ (今回の場合、/srv/vhosts/packages/mini-dinstall/incoming/
) を監視して、新しいパッケージがこのディレクトリにアップロードされることを待ちます。そしてパッケージがアップロードされたら、/srv/vhosts/packages/
の Debian アーカイブにインストールされます。mini-dinstall
コマンドは Debian パッケージが生成された時に作成される *.changes
ファイルを読みます。*.changes
ファイルには、パッケージのバージョンに対応するその他のファイル (*.deb
、*.dsc
、*.diff.gz
/*.debian.tar.gz
、*.orig.tar.gz
、他の圧縮ツールを使った場合の同等ファイル) のリストが含まれます。これらのファイルを使うことで、mini-dinstall
はインストールするファイルを把握します。さらに *.changes
ファイルの中で、最新の debian/changelog
エントリで対象ディストリビューションの名前 (通常 unstable
) が言及されています。mini-dinstall
はこの情報を使ってパッケージをインストールする場所を決めます。このため、管理者はパッケージをビルドする前にこのフィールドを必ず変更し、対象パッケージを配備する場所に従ってこのフィールドを internal
または updates
に設定しなければいけません。この後、mini-dinstall
は APT が必要とする Packages.gz
などのファイルを生成します。
mini-dinstall
を設定するには、~/.mini-dinstall.conf
ファイルのセットアップが必要です。そして Falcot Corp の場合、内容は以下の通りです。
[DEFAULT]
archive_style = flat
archivedir = /srv/vhosts/packages
verify_sigs = 0
mail_to = admin@falcot.com
generate_release = 1
release_origin = Falcot Corp
release_codename = stable
[updates]
release_label = Recompiled Debian Packages
[internal]
release_label = Internal Packages
各アーカイブに対して
Release
ファイルを作成することに決めた点は注目に値します。こうすることで、
/etc/apt/preferences
設定ファイルを使ってパッケージインストール優先度を管理することに役立ちます (詳細は
第 6.2.5 節「パッケージ優先度の管理」を参照してください)。
mini-dinstall
を実行すると、バックグラウンドでデーモンが開始されます。mini-dinstall
デーモンが実行されている限り、デーモンは 30 分ごとに incoming/
ディレクトリにアップロードされた新しいパッケージを確認します。そして新しいパッケージがアップロードされると、パッケージはアーカイブに移動され、適切な Packages.gz
と Sources.gz
ファイルが再生成されます。デーモンの実行に問題がある場合、incoming/
ディレクトリにパッケージをアップロードしたら毎回、手作業で mini-dinstall
をバッチモードで実行します (-b
オプションを付けます)。mini-dinstall
他の使い方は mini-dinstall(1) マニュアルページで説明されています。