Ubuntu Weekly Recipe

第485回 aptlyで本格的なパッケージリポジトリを作る

この記事を読むのに必要な時間:およそ 11 分

ローカルパッケージのリポジトリを作る

ここまではすでに存在するリポジトリからパッケージを取得していました。aptlyでは単なるミラーだけでなく,独自のリポジトリを作ることも可能です。

$ aptly repo create -distribution=dorothy -component=main chise-repo

Local repo [chise-repo] successfully added.
You can run 'aptly repo add chise-repo ...' to add packages to repository.

-distribution「リポジトリを公開する」の項でも指定した公開時のディストリビューション名であり,Ubuntuのリポジトリで言うところの「xenial」「zesty」です。-componentはUbuntuで言うところのmain・universeのようにパッケージの種別ごとに別のディレクトリにしたいときに使用します。最後の「chise-repo」が内部的なリポジトリの名前になります。

さて,作ったリポジトリにパッケージファイルを追加しましょう。

$ aptly repo add chise-repo beatrice/
Loading packages...
[+] libkkc-common_0.3.5-1ubuntu1~1.gbp99dbf9_all added
[+] libkkc-dev_0.3.5-1ubuntu1~1.gbp99dbf9_amd64 added
[+] libkkc-utils-dbg_0.3.5-1ubuntu1~1.gbp99dbf9_amd64 added
[+] libkkc-utils_0.3.5-1ubuntu1~1.gbp99dbf9_amd64 added
[+] libkkc2-dbg_0.3.5-1ubuntu1~1.gbp99dbf9_amd64 added
[+] libkkc2_0.3.5-1ubuntu1~1.gbp99dbf9_amd64 added
[+] libkkc_0.3.5-1ubuntu1~1.gbp99dbf9_source added

$ aptly repo show chise-repo
Name: chise-repo
Comment:
Default Distribution: dorothy
Default Component: main
Number of packages: 7

$ aptly repo search chise-repo libkkc
libkkc_0.3.5-1ubuntu1~1.gbp99dbf9_source

beatrice/の部分にはいくつかの指定方法が存在します。まず拡張子が.deb.udeb.dscのファイルを指定すると,そのパッケージファイルをリポジトリに追加します。ソースパッケージである.dscの場合は,その中で指定されている他のソースアーカイブも一緒に追加してくれます。今回の例のようにディレクトリを指定した場合は,再帰的に拡張子が.deb.udeb.dscのファイルを探しすべて追加します。pbuilderやcowbuilderのようにビルドしたパッケージを一定の場所に集めている場合に便利です。-remove-filesオプションを付けると,取り込みが成功したら元のファイルを削除してくれます。

dputコマンドのように.changesファイルベースで取り込みたい場合は,aptly repo includeを使います。こちらは原則としてGPG鍵で署名済みである必要があります。詳しい使い方はmanページを参照してください。

aptly repo copyaptly repo moveコマンドを使うと,複数のローカルリポジトリ間でパッケージの移動を行えます。テストリポジトリから本番リポジトリに移動したい場合に使えるでしょう。ミラーリポジトリからパッケージを取得したい場合はaptly repo importコマンドを使います。

ローカルリポジトリはミラーリポジトリと異なり,aptly repo publichコマンドを使って直接リポジトリを公開することが可能です。もちろん一度スナップショットを取ってから公開する方法も使えます。スナップショット化しておけば,他のミラーリポジトリの依存パッケージ群をマージした独自のリポジトリを作れるため便利です。

社内開発リポジトリにaptlyはいかが?

ここまで紹介したように,aptlyを使えば独自のDebianパッケージリポジトリをとても簡単に運用できます。社内インフラ用に独自にパッチを当てたパッケージを配布したい,Ubuntu公式リポジトリの一部のパッケージのスナップショットを取りたいなどの用途に最適です。また,パッケージの作成・ビルド・テストリポジトリへのアップロード・各種CIツールによるテスト・本番リポジトリへの移動までのサイクルを機械的に行えるというメリットもあります。

社内開発用にパッケージリポジトリが欲しいと考えているのであれば,aptlyを試してみるのはいかがでしょうか?

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。

コメント

コメントの記入