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
.