ローカルパッケージストアに「リリース」ファイルを生成する方法は?

ローカルパッケージストアに「リリース」ファイルを生成する方法は?

コンテキスト

ローカルパッケージリポジトリを介して、私が制御するサーバー上のパッケージと設定セットをAPTインスタンスに提供できます。これにより、すべてのクライアントは通常のコマンドのみを使用してこのソフトウェアをインストールできます(ストレージが追加されているapt install場合/etc/apt/sources.list{,.d/})。

ローカルパッケージリポジトリを作成するには、以下に従いました。このチュートリアルbipmedia.comのコンテンツには通常、次のものが含まれます。

  1. generate.deb
  2. Apache2 Webサーバーに.debを保存する
  3. 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

  1. aptftp.confリポジトリのルートディレクトリにファイルを作成します。

    APT::FTPArchive::Release {
      Origin "Your origin";
      Label "Your label";
      Suite "unstable";
      Codename "sid";
      Architectures "amd64 i386 source";
      Components "main";
      Description "Your description";
    };
    

    適切な値を使用してください(少なくとも「オリジナル」、「ラベル」、「説明」を変更し、ホスティングバイナリと一致するように「アーキテクチャ」を調整します)。

  2. 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必要でない場合は削除)。

  3. リポジトリからデータベースを消去します。

    rm -f packages-i386.db packages-amd64.db
    
  4. パッケージディレクトリの作成:

    apt-ftparchive generate -c=aptftp.conf aptgenerate.conf
    
  5. ファイルの生成Release:

    apt-ftparchive release -c=aptftp.conf dists/unstable >dists/unstable/Release
    
  6. 署名:

    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を再実行する必要があります。

おすすめ記事