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/
) を監視して、新しいパッケージがこのディレクトリにアップロードされることを待ちます。そしてパッケージがアップロードされたら、mini-dinstall
は /srv/vhosts/packages/
のパッケージアーカイブにパッケージをインストールします。mini-dinstall
コマンドは Debian パッケージが生成された時に作成される *.changes
ファイルを読みます。*.changes
ファイルには、パッケージのバージョンに対応するその他のファイル (*.deb
、*.dsc
、*.diff.gz
/*.debian.tar.gz
、*.orig.tar.gz
、その他の圧縮ツールを使った場合の同等ファイル) のリストが書かれており、mini-dinstall
はこのリストに従ってインストールするファイルを把握します。さらに *.changes
ファイルの Distribution
ヘッダフィールドには、debian/changelog
ファイル内の最新エントリに書かれた対象ディストリビューションの名前 (通常 unstable
) が書かれており、mini-dinstall
はこの名前に従ってパッケージのインストール先を決めます。このため、管理者は対象パッケージをビルドする前に debian/changelog
ファイル内の最新エントリに書かれた対象ディストリビューションの名前を必ず変更し、対象パッケージのインストール先に従ってその名前を 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 = [email protected]
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) マニュアルページで説明されています。