コンテキスト
ローカルパッケージリポジトリを介して、私が制御するサーバー上のパッケージと設定セットをAPTインスタンスに提供できます。これにより、すべてのクライアントは通常のコマンドのみを使用してこのソフトウェアをインストールできます(ストレージが追加されているapt install
場合/etc/apt/sources.list{,.d/}
)。
ローカルパッケージリポジトリを作成するには、以下に従いました。このチュートリアルbipmedia.comのコンテンツには通常、次のものが含まれます。
- generate.deb
- Apache2 Webサーバーに.debを保存する
- Package.gz ファイルの生成
私の試み
バイナリパッケージファイルの生成
.debを生成するにはソフトウェアファイルが必要で、メタデータを含むDEBIANフォルダを作成し、次のコマンドを使用してコードをコンパイルしてパッケージをアセンブルします。
dpkg-deb --build [
source code tree with DEBIAN directory
]
Apache2サーバーを使用したストレージファイルの提供
この部分は私が解決しようとしている問題とは関係がないのでスキップします。
Packages.gzファイルの生成(リポジトリメタデータ)
.deb
作業ディレクトリが上記のファイルを含むApacheサーバーのルートフォルダであるオープンシェルインスタンスの場合は、次のように呼び出しました。
dpkg-scanpackages debian /dev/null | gzip -9c >debian/Packages.gz
質問
apt update
クライアントシステムを呼び出すと、次のように文句を言います。
W: The repository 'http://example.com packages/ Release' does not have a Release file.
この必要なファイルは私のローカルリポジトリにありません。それはパケットチェックサムのための登録のように見えますが、インターネットで検索した後、そのトピックに関する知識が非常に不足しているため、これを生成する方法が見つかりません。
メモ:私の/etc/apt/sources.list
ファイルには次の行があります。
deb http://example.com packages/
質問
Release
ローカルAPTパッケージストア用のファイルを生成する方法は?
答え1
この問題を解決する方法はいくつかありますapt-ftparchive
。
aptftp.conf
リポジトリのルートディレクトリにファイルを作成します。APT::FTPArchive::Release { Origin "Your origin"; Label "Your label"; Suite "unstable"; Codename "sid"; Architectures "amd64 i386 source"; Components "main"; Description "Your description"; };
適切な値を使用してください(少なくとも「オリジナル」、「ラベル」、「説明」を変更し、ホスティングバイナリと一致するように「アーキテクチャ」を調整します)。
aptgenerate.conf
次の横に一致するファイルを作成します。Dir::ArchiveDir "."; Dir::CacheDir "."; TreeDefault::Directory "pool/"; TreeDefault::SrcDirectory "pool/"; Default::Packages::Extensions ".deb"; Default::Packages::Compress ". gzip bzip2"; Default::Sources::Compress ". gzip bzip2"; Default::Contents::Compress "gzip bzip2"; BinDirectory "dists/unstable/main/binary-amd64" { Packages "dists/unstable/main/binary-amd64/Packages"; Contents "dists/unstable/Contents-amd64"; SrcPackages "dists/unstable/main/source/Sources"; }; BinDirectory "dists/unstable/main/binary-i386" { Packages "dists/unstable/main/binary-i386/Packages"; Contents "dists/unstable/Contents-i386"; SrcPackages "dists/unstable/main/source/Sources"; }; Tree "dists/unstable" { Sections "main"; # contrib non-free"; Architectures "amd64 i386 source"; };
(
i386
必要でない場合は削除)。リポジトリからデータベースを消去します。
rm -f packages-i386.db packages-amd64.db
パッケージディレクトリの作成:
apt-ftparchive generate -c=aptftp.conf aptgenerate.conf
ファイルの生成
Release
:apt-ftparchive release -c=aptftp.conf dists/unstable >dists/unstable/Release
署名:
gpg -u yourkeyid -bao dists/unstable/Release.gpg dists/unstable/Release gpg -u yourkeyid --clear-sign --output dists/unstable/InRelease dists/unstable/Release
(適切なIDと交換
yourkeyid
)
リポジトリを変更するたびに、手順3〜6を再実行する必要があります。