Vine Linux Magazine
apt リポジトリの作り方(基礎)
ここではapt-rpmのリポジトリ作成方法の基本の基本を紹介します。公式リポジトリには
投入しないパッケージやしたくないパッケージ、テスト用に仮につくったパッケージ、
個人/企業/学校用にカスタマイズしたパッケージなどを apt からアクセスできるリポジ
トリとして用意することができます。
apt-pinningのためのリポジトリの細かな設定などについては今回は省略しています。
標準的な構成の設定
基本的な APT-RPM 用リポジトリの作成方法:
[daisuke@hoge /home/ftp/pub]$ find . . ./Test/SRPMS.main ./Test/SRPMS.main/hoge-1.0-0vl1.src.rpm ./Test/i386/RPMS.main ./Test/i386/RPMS.main/hoge-1.0-0vl1.i386.rpm
[daisuke@hoge /home/ftp/pub]$ genbasedir /home/ftp/pub/Test/i386 Creating base directory... done Components: main Processing pkglists... main [done] Processing srclists... main [done] Creating component releases... main [done] Creating global release file... [done] Appending MD5Sum... main [done] All your base are belong to us!!!
[daisuke@hoge /home/ftp/pub]$ find . . ./Test/i386/base ./Test/i386/base/pkglist.main ./Test/i386/base/pkglist.main.bz2 ./Test/i386/base/release.main ./Test/i386/base/release ./Test/i386/base/srclist.main ./Test/i386/base/srclist.main.bz2 ./Test/i386/RPMS.main ./Test/i386/RPMS.main/hoge-1.0-0vl1.i386.rpm ./Test/SRPMS.main ./Test/SRPMS.main/hoge-1.0-0vl1.src.rpm
これで APT-RPM でアクセス可能なリポジトリが生成されます。ここで注意するのは、 通常はバイナリを置くディレクトリ RPMS.main とソースパッケージを置くディレクトリ SRPMS.main は階層が違うということです。SRPMS.xxx はバイナリよりも1段上の ディレクトリに置くことに注意しましょう。 このリポジトリを APT に認識させるためには、以下のような apt-line を /etc/apt/sources.list または /etc/apt/sources.list.d/test-repository.conf などに追加記述しましょう。
rpm file:/home/ftp/pub Test/i386 main rpm-src file:/home/ftp/pub Test/i386 main
HTTP でアクセスができるようになっている場合は /home/ftp が DocumentRoot の 場合には、以下のようにすることもできます。(FTPなども同様)
rpm http://hostname/pub Test/i386 main rpm-src http://hostname/pub Test/i386 main
フラットなディレクトリ構成
1つのアーキテクチャのバイナリしか置かない場合には、 バイナリパッケージディレクトリ RPMS.main とソースパッケージディレクトリ SRPMS.main を置く階層を同一にすることもできます。 この場合は、以下のように "--flat" オプションをつけることで同一階層にすることができます。
[daisuke@hoge /home/ftp/pub]$ find . . ./Test/SRPMS.main ./Test/SRPMS.main/hoge-1.0-0vl1.src.rpm ./Test/RPMS.main ./Test/RPMS.main/hoge-1.0-0vl1.i386.rpm
[daisuke@hoge /home/ftp/pub]$ genbasedir --flat /home/ftp/pub/Test Creating base directory... done Components: main Processing pkglists... main [done] Processing srclists... main [done] Creating component releases... main [done] Creating global release file... [done] Appending MD5Sum... main [done] All your base are belong to us!!!
[daisuke@hoge /home/ftp/pub]$ find . . ./Test/base ./Test/base/pkglist.main ./Test/base/pkglist.main.bz2 ./Test/base/release.main ./Test/base/release ./Test/base/srclist.main ./Test/base/srclist.main.bz2 ./Test/RPMS.main ./Test/RPMS.main/hoge-1.0-0vl1.i386.rpm ./Test/SRPMS.main ./Test/SRPMS.main/hoge-1.0-0vl1.src.rpm
ユーザとして見た場合は、apt-line にはアーキテクチャを指定しないため、 以下のような設定になります。
rpm file:/home/ftp/pub Test main rpm-src file:/home/ftp/pub Test main
複数コンポーネントによる構成
コンポーネント ( Vine Linux でいう main や plus など) を複数用意したい場合は ディレクトリを複数用意しましょう。 genbasedir コマンドは自動的にすべてのコンポーネントを見付けてリポジトリを構築してくれます。 suffix にコンポーネント名を付けることに注意しましょう。
[daisuke@hoge /home/ftp/pub]$ find . . ./Test/SRPMS.main ./Test/SRPMS.main/hoge-1.0-0vl1.src.rpm ./Test/SRPMS.test ./Test/SRPMS.test/fuga-1.0-0vl1.src.rpm ./Test/RPMS.main ./Test/RPMS.main/hoge-1.0-0vl1.i386.rpm ./Test/RPMS.test ./Test/RPMS.test/fuga-1.0-0vl1.i386.rpm
[daisuke@hoge /home/ftp/pub]$ genbasedir --flat /home/ftp/pub/Test Creating base directory... done Components: main Processing pkglists... main test [done] Processing srclists... main test [done] Creating component releases... main test [done] Creating global release file... [done] Appending MD5Sum... main test [done] All your base are belong to us!!!
[daisuke@hoge /home/ftp/pub]$ find . . ./Test/base ./Test/base/pkglist.main ./Test/base/pkglist.main.bz2 ./Test/base/pkglist.test ./Test/base/pkglist.test.bz2 ./Test/base/release.main ./Test/base/release.test ./Test/base/release ./Test/base/srclist.main ./Test/base/srclist.main.bz2 ./Test/base/srclist.test ./Test/base/srclist.test.bz2 ./Test/SRPMS.main ./Test/SRPMS.main/hoge-1.0-0vl1.src.rpm ./Test/SRPMS.test ./Test/SRPMS.test/fuga-1.0-0vl1.src.rpm ./Test/RPMS.main ./Test/RPMS.main/hoge-1.0-0vl1.i386.rpm ./Test/RPMS.test ./Test/RPMS.test/fuga-1.0-0vl1.i386.rpm
ここでは main と test の2つのコンポーネントを用意してみました。 apt-line では以下のように記述します。
rpm file:/home/ftp/pub Test/i386 main test rpm-src file:/home/ftp/pub Test/i386 main test
その他のオプション
genbasedir には他にも以下のようなオプションがあります。 いくつか簡単に紹介しておきましょう。
- -s, --sign
-
リポジトリに GnuPG で署名する。使用する鍵IDは "--default-key=ID" オプションで指定します。署名されたリポジトリにアクセスするには、 apt-line に、
rpm [vine] file:/home/ftp/pub Test/i386 main
等と指定し、/etc/apt/vendors.list に fingerprint と ID との対応を 記述します。
- --hashonly
- hash ファイルのみ更新する。
- --listonly
- pkglists と srclists のみを作成する。
- --bz2only
- pkglist/srclist/release ファイルを bzip2 圧縮されたもののみを作成します。 通常このオプションを指定しておいて問題ないでしょう。
- --progress
- リポジトリ作成過程のプログレスバーを表示する。
- --bloat
- リポジトリのパッケージデータに完全なファイルリストを収録します。 ファイル依存の解決に必要な場合がありますが、Vine Linux では推奨していません。