Gerar dpkg .deb filename

0

Nós temos um projeto de software, que lançamos como um pacote debian. O projeto tem uma pasta / debian que contém arquivos como changelog compat control copyright rules . Estamos criando pacotes debian com o comando:

dpkg-buildpackage -us -uc -b --changes-option=-u./dist

, que imprime um fluxo de saída. O que precisamos saber, para a próxima etapa do processo, é o nome do arquivo .deb criado.

Eu sei que os debians têm uma estrutura de nome de arquivo previsível como [package name]_[version]_[architecture].deb , mas eu não tenho como obter esses parâmetros de qualquer maneira.

Deve haver outro comando do dpkg que possa gerar o nome do pacote em potencial a partir da procura na pasta debian?

    
por Tom Viner 02.04.2015 / 18:54

1 resposta

4

Como você aponta, todos os arquivos .deb gerados compartilham um formato comum: ${package}_${version}_${arch}.deb .

O nome do pacote vem das entradas Package: em debian/control ; para uma compilação completa, um arquivo .deb será gerado para cada entrada Package: . Você pode recuperar os valores com

awk '/^Package:/ { print $2 }' debian/control

A versão é baseada por padrão no valor dado em debian / changelog; você pode extrair isso com

dpkg-parsechangelog -S version

(É possível que uma compilação especifique uma versão diferente, mas isso é incomum.)

Por fim, a arquitetura será all (para um pacote Architecture: all ) ou por padrão, para o seu sistema de criação (para qualquer outro Architecture: , normalmente Architecture: any ). Você pode determinar a arquitetura do seu sistema de compilação usando

dpkg-architecture -qDEB_BUILD_ARCH

(Estritamente falando, deve ser -qDEB_HOST_ARCH , mas no caso geral, BUILD e HOST são iguais. Também estou ignorando a compilação cruzada aqui; se isso for um problema, use DEB_TARGET_ARCH em vez de DEB_BUILD_ARCH .)

Assim, para uma solução totalmente genérica, você precisaria analisar o arquivo control para determinar qual pacote combina com qual arquitetura; Se o seu arquivo control só cria um pacote que não é necessário.

dpkg-parsechangelog e dpkg-architecture são fornecidos pelo pacote dpkg-dev .

    
por 06.04.2015 / 11:39

Tags