dpkg -s <packagename> | grep '^Version:'
e. g .:
dpkg -s network-manager | grep '^Version:'
Exemplo de saída:
Version: 0.8.1+git.20100810t184654.ab580f4-0ubuntu2
Eu uso o comando dpkg -l
para descobrir qual versão de um pacote eu instalei. Por exemplo:
dpkg -l network-manager
retorna as informações no pacote:
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Description
+++-=========================-=========================-==================================================================
ii network-manager 0.8.3~git.20101118t223039 network management framework daemon
Como você pode ver, ele retorna 0.8.3~git.20101118t223039
, o que está errado porque trunca a versão (escolhi uma longa para o propósito desta questão). A maneira como resolvi isso no passado é passar um argumento COLUMNS estupidamente longo para expandi-lo:
COLUMNS=200 dpkg -l network-manager
que me dá o número inteiro da versão, mas também um monte de lixo:
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Description
+++-============================================-============================================-========================================================================================================
ii network-manager 0.8.3~git.20101118t223039.d60a988-0ubuntu1 network management framework daemon
Agora, posso ver o número completo da versão, que é 0.8.3~git.20101118t223039.d60a988-0ubuntu1
.
Tenho a impressão de que essa não é a maneira correta de encontrar o número da versão de um pacote instalado. Isso nunca foi um problema no passado, mas com o avanço do "ubuntu" nas versões e a proliferação de PPAs, essas strings estão ficando cada vez mais longas. Existe uma maneira mais fácil?
dpkg -s <packagename> | grep '^Version:'
e. g .:
dpkg -s network-manager | grep '^Version:'
Exemplo de saída:
Version: 0.8.1+git.20100810t184654.ab580f4-0ubuntu2
dpkg-query --showformat='${Version}' --show python3-lxml
Não está usando o comando dpkg
, mas apt-show-versions
Exemplo:
$ apt-show-versions network-manager
network-manager/maverick uptodate 0.8.1+git.20100810t184654.ab580f4-0ubuntu2
Eu acho que o aneeshep é a melhor resposta, pois sua pergunta especifica o uso do dpkg. Mas, por completo, aqui está outra maneira:
apt-cache policy network-manager
network-manager:
Installed: 0.8.1+git.20100810t184654.ab580f4-0ubuntu2
Candidate: 0.8.1+git.20100810t184654.ab580f4-0ubuntu2
Version table:
*** 0.8.1+git.20100810t184654.ab580f4-0ubuntu2 0
500 http://us.archive.ubuntu.com/ubuntu/ maverick/main i386 Packages
100 /var/lib/dpkg/status
Ou apenas para o número da versão:
apt-cache policy network-manager | grep 'Installed:' | cut -c 14-
0.8.1+git.20100810t184654.ab580f4-0ubuntu2
Outro método para encontrar a versão de um pacote instalado via dpkg
, conforme abaixo,
dpkg -l | awk '=="package-name" { print }'
Exemplo:
$ dpkg -l | awk '=="network-manager" { print }'
0.9.8.0-0ubuntu22
Explicação:
O comando dpkg -l
lista todos os pacotes instalados.Esta saída padrão foi alimentada como entrada para o comando awk
. awk
procura o nome do pacote correspondente na entrada padrão ( coluna 2 ) se encontrar, então pega a linha correspondente. E finalmente imprime o valor de ( coluna 3 ) que na verdade representa a versão do pacote.
$ dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
De acordo com o acima, a coluna 2 representa o nome do pacote , a coluna 3 representa a versão do pacote , a coluna 4 representa a arquitetura e a coluna 5 representa descrição do pacote .
Tags command-line dpkg