私は reprepro を使用して apt リポジトリを作成しようとしていますが、これは大部分で非常に簡単です。ステージング ツリーの構造が気に入ったので、この記事を参考にしています。
http://vincent.bernat.im/en/blog/2014-local-apt-repositories.html
しかし、おそらく非常に単純なことが、私には理解できないようです。以下の記事の conf/distributions の例を使用すると、パッケージをインポートすると常に main にしか移動しないという事実に困惑しています。precise-staging や precise-prod というディレクトリはありませんか? 私がやろうとしているのは、同じリポジトリ内に、テストされていないパッケージを置く場所と本番用の別の場所を用意することです。(/opt/packages/pool/trusty-prod、/opt/packages/pool/trusty-stage)
必要に応じて、puppet を使用して /etc/apt/sources.list.d/ 経由でクライアントをどちらかに向けることができます。
私はこれをどうやって行うのか、あるいはこの記事を全く理解していないのでしょうか?
Dailymotion Precise packages (staging)
Origin: Dailymotion
Label: dm-staging
Suite: precise-staging
Codename: precise-staging
Architectures: i386 amd64 source
Components: main role/dns role/database role/web # ➊
Description: Dailymotion Precise staging repository
Contents: .gz .bz2
Tracking: keep
SignWith: yes
NotAutomatic: yes # ➋
Log: packages.dm-precise-staging.log
--type=dsc email-changes
Dailymotion Precise packages (prod)
Origin: Dailymotion # ➌
Label: dm-prod # ➌
Suite: precise-prod
Codename: precise-prod
Architectures: i386 amd64 source
Components: main role/dns role/database role/web # ➊
Description: Dailymotion Precise prod repository
Contents: .gz .bz2
Tracking: keep
SignWith: yes
Log: packages.dm-precise-prod.log
答え1
自分用のシンプルなリポジトリを設定するには4つのステップがあります
1.dpkg-devをインストールする
2.パッケージをディレクトリに置く
3.パッケージをスキャンしてapt-get updateが読み取れるファイルを作成するスクリプトを作成する
4.リポジトリを指す行をsources.listに追加する
dpkg-devをインストールする
ターミナルに入力
sudo apt-get install dpkg-dev
ディレクトリ
パッケージを保存するディレクトリを作成します。この例では、
/usr/local/mydebs.
sudo mkdir -p /usr/local/mydebs
次に、作成したディレクトリにパッケージを移動します。
以前にダウンロードしたパッケージは通常、システムの /var/cache/apt/archives ディレクトリに保存されます。apt-cacher をインストールしている場合は、追加のパッケージが /packages ディレクトリに保存されます。
スクリプト update-mydebs
シンプルな3行です:
#! /bin/bash
cd /usr/local/mydebs
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
上記を gedit にコピーして貼り付け、update-mydebs として ~/bin に保存します。(チルダ '~' はホーム ディレクトリを意味します。~/bin が存在しない場合は作成します。Ubuntu はそのディレクトリを PATH に追加します。個人用スクリプトを配置するのに適した場所です)。次に、スクリプトを実行可能にします。
chmod u+x ~/bin/update-mydebs
スクリプトの動作方法: dpkg-scanpackages は mydebs 内のすべてのパッケージを調べ、出力は圧縮されて apt-get update が読み取れるファイル (Packages.gz) に書き込まれます (これを非常に詳細に説明しているリファレンスについては、以下を参照してください)。/dev/null は空のファイルです。これは、パッケージに関する追加情報を保持するオーバーライド ファイルの代わりであり、この場合、実際には必要ありません。これについて詳しく知りたい場合は、deb-override(5) を参照してください。
ソースリスト
行を追加する
deb file:/usr/local/mydebs ./
/etc/apt/sources.list に追加すれば完了です。
CDオプション
debsを含むディレクトリをCDに書き込んで、それをリポジトリとして使用することもできます(コンピュータ間で共有するのに適しています)。CDをリポジトリとして使用するには、次のコマンドを実行します。
sudo apt-cdrom add
リポジトリの使用
mydebsディレクトリに新しいdebを置くたびに、
sudo update-mydebs
sudo apt-get update
これで、ローカル パッケージを Synaptic、aptitude、apt コマンド (apt-get、apt-cache など) で操作できるようになりました。apt-get install を実行すると、依存関係が満たされている限り、依存関係が自動的に解決されます。
下手に作られたパッケージはおそらく失敗するでしょうが、dpkg 地獄に耐える必要はありません。