Product SiteDocumentation Site

15.3. APT 用のパッケージリポジトリの作成

Falcot Corp の保守する Debian パッケージの数は次第に増えました。この中には、既存のパッケージから手元で修正したパッケージや、内部データとプログラムを配布するために最初から作成したパッケージなどがあります。
パッケージの配備を簡単にするために、管理者はこれらのパッケージを APT から直接使う事が可能なパッケージアーカイブに統合したいと思っています。明らかなメンテナンス上の理由により、管理者は内部パッケージと手元で再ビルドしたパッケージを別にしたいと思っています。目標は /etc/apt/sources.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 設定ファイルを使ってパッケージインストール優先度を管理することに役立ちます (詳細は「パッケージ優先度の管理」参照)。
mini-dinstall を実行すると、バックグラウンドでデーモンが開始されます。mini-dinstall デーモンが実行されている限り、デーモンは 30 分毎に incoming/ ディレクトリにアップロードされた新しいパッケージを確認します; 新しいパッケージがアップロードされると、パッケージはアーカイブに移動され、適切な Packages.gzSources.gz ファイルが再生成されます。デーモンの実行に問題がある場合、incoming/ ディレクトリにパッケージをアップロードしたら毎回、手作業で mini-dinstall をバッチモードで実行します (-b オプションを付けます)。mini-dinstall 他の使い方は mini-dinstall(1) マニュアルページで説明されています。