Como gerar o arquivo 'Release' em um repositório de pacotes local?

3

Contexto

Com o repositório local de pacotes, eu me refiro a um conjunto de software e configurações em um servidor que permite armazenar um software e qualquer cliente para instalar este software pelo comando normal apt-get (supondo que o repositório tenha sido adicionado a sources.list)

Para a criação de um repositório de pacotes local, segui este tutorial , que consistem em:

  1. gera o .deb
  2. Armazene o .deb no servidor apache2
  3. Gerar um arquivo Package.gz

1- Para gerar o .deb, os arquivos de software são necessários, uma pasta DEBIAN com metadados é gerada e o seguinte comando faz o trabalho:

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

2- Eu pulo esta parte como muito não relacionada

3- Com o diretório atual sendo a pasta do apache com o .deb , chame:

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

O problema

Chamando apt-get update pela máquina cliente, ele reclama com:

W: The repository 'http://example.com packages/ Release' does not have a Release file.

Este arquivo está efetivamente ausente em minha loja local e parece um registro de somas de verificação. Mas depois de pesquisar na Internet e, dada a minha baixa compreensão do tópico, não consegui descobrir como gerá-lo.

Nota: my sources.list tem a seguinte linha:

deb http://example.com packages/

A questão

Como gerar o arquivo Release para um repositório de pacotes local?

    
por Adrian Maire 09.11.2017 / 10:45

1 resposta

3

Existem várias maneiras de fazer isso; Eu uso apt-ftparchive .

  1. Crie um arquivo aptftp.conf na raiz do seu repositório:

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

    com os valores apropriados (altere “Origin”, “Label”, “Description” pelo menos e ajuste “Architectures” para corresponder aos binários que você hospeda).

  2. Crie um arquivo aptgenerate.conf correspondente ao lado de:

    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";
    };
    

    (removendo i386 se você não precisar disso).

  3. No seu repositório, limpe o banco de dados:

    rm -f packages-i386.db packages-amd64.db
    
  4. Gere os catálogos de pacotes:

    apt-ftparchive generate -c=aptftp.conf aptgenerate.conf
    
  5. Gere o arquivo Release :

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

    gpg -u yourkeyid -bao dists/unstable/Release.gpg dists/unstable/Release
    

    (com o id apropriado em vez de yourkeyid ).

Sempre que você fizer uma alteração no repositório, será necessário executar as etapas de 3 a 6 novamente.

    
por 09.11.2017 / 10:58