dpkg-parsechangelog
funciona, e a resposta anterior, canalizando a saída através de sed / grep deve ser totalmente robusta. Se você quiser saber detalhes precisos do formato da dpkg-parsechangelog
saída e a maioria dos outros arquivos de controle no estilo debian, consulte RFC 822 . Nunca é aceitável que uma versão do pacote deb contenha uma nova linha, espaço ou qualquer outro caractere especial ou de controle (consulte man deb-version
" Version: blah
" ), portanto, a linha " " na saída estará sempre presente e sempre será uma única linha em seu próprio.
No entanto, dpkg-parsechangelog
é um programa muito pesado para ser executado apenas para obter o número da versão atual de um registro de alterações. Ele precisa executar o Perl e carregar um número impressionante de bibliotecas para fornecer um resultado, a maioria dos quais você não usará. Em plataformas mais lentas, ou com mídia de armazenamento lenta de arquivos, ou quando você precisar fazer esta versão analisando muitas vezes, será muito dolorosamente lento. Em vez disso, basta usar o que estiver dentro do primeiro conjunto de parênteses na primeira linha:
head -1 debian/changelog | awk -F'[()]' '{print $2}'
Isso fornecerá a versão correta do pacote atual com qualquer changelog
arquivo válido usando o formato padrão (e debian/changelog
formatos fora do padrão , para todos os efeitos práticos gerais, nunca são usados).