web-dev-qa-db-ja.com

ローカルパッケージリポジトリに `Release`ファイルを生成するにはどうすればよいですか?

コンテキスト

ローカルパッケージリポジトリでは、通常のapt-getコマンド(sources.listにリポジトリが追加されていると想定)でソフトウェアとこのソフトウェアをインストールするクライアントを格納できる、サーバー上のソフトウェアと構成のセットを参照します。

ローカルパッケージリポジトリを作成するために、私はこの tutorial に従いました。

  1. .debを生成する
  2. Apache2サーバーに.debを保存します
  3. Package.gzファイルを生成する

1- .debを生成するには、ソフトウェアファイルが必要です。メタデータを含むDEBIANフォルダーが生成され、次のコマンドでジョブを実行します。

dpkg-deb --build <software folder with DEBIAN>

2-この部分は非常に無関係なのでスキップします

3-現在のディレクトリが.debのApacheフォルダーである場合、次を呼び出します。

dpkg-scanpackages debian /dev/null | gzip -9c > debian/Packages.gz

問題

クライアントマシン上でapt-get updateを呼び出すと、次のような問題が発生します。

W:リポジトリ ' http://example.com packages /リリース'にはリリースファイルがありません。

このファイルはローカルストアに事実上存在せず、チェックサムのレジスタのように見えます。しかし、インターネットで検索した後、トピックについての理解が低いため、それを生成する方法を見つけることができませんでした。

注:sources.listには次の行があります。

deb http://example.com packages/

質問

ローカルパッケージリポジトリのReleaseファイルを生成するにはどうすればよいですか?

6
Adrian Maire

これに対処するにはいくつかの方法があります。 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";
    };
    

    適切な値を使用して(少なくとも「Origin」、「Label」、「Description」を変更し、「Architectures」を調整して、ホストするバイナリと一致させます)。

  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
    

    yourkeyidの代わりに適切なIDを使用)。

リポジトリに変更を加える場合は常に、手順3〜6を再度実行する必要があります。

6
Stephen Kitt