ステージング環境でローカルaptリポジトリを作成する

ステージング環境でローカルaptリポジトリを作成する

私は 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 地獄に耐える必要はありません。

関連情報