Eu uso o dpkg -l
comando 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 o 0.8.3~git.20101118t223039
que está errado, porque trunca a versão (eu escolhi uma longa para os fins desta pergunta). A maneira que resolvi isso no passado é passar um argumento COLUMNS estupidamente longo para fazê-lo expandir:
COLUMNS=200 dpkg -l network-manager
o que me dá todo o número 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 eu posso ver o número da versão completa, que é 0.8.3~git.20101118t223039.d60a988-0ubuntu1
.
Tenho a sensação de que essa não é a maneira correta de encontrar o número da versão de um pacote instalado. Isso nunca foi realmente um problema no passado, mas com o uso do "ubuntu" nas versões e a proliferação de PPAs, essas seqüências estão ficando cada vez mais longas. Existe uma maneira mais fácil?
fonte
dpkg --info package.deb
funciona, apesar de-s
não terdpkg --info package.deb
opera em arquivos de pacotes,dpkg -s <packagename>
opera em nomes de pacotes - nenhum arquivo necessáriofonte
dpkg-query --showformat='${Package}\t${Version}\n' --show lsb-release coreutils ...
dpkg-query --showformat='${Version}\n' --show python3-lxml
,.Não está usando o
dpkg
comando, mas apt-show-versionsExemplo:
fonte
Acho que o aneeshep é a melhor resposta, conforme sua pergunta especifica o uso do dpkg. Mas, por uma questão de integridade, aqui está outra maneira:
Ou apenas para o número da versão:
fonte
apt-cache
depende da localidade atual. Por exemplo, na Alemanha, você precisagrep 'Installiert:'
. Para compensar isso, sempre use LocaleC.UTF-8
ao criar scripts. OuLC_ALL=C.UTF-8; export LC_ALL
no início do script ou, caso a caso, algo como:LC_ALL=C.UTF-8 apt-cache policy network-manager | grep 'Installed:' | awk '{print $2}'
Outro método para encontrar a versão de um pacote instalado,
dpkg
conforme abaixo,Exemplo:
Explicação:
dpkg -l
O comando lista todos os pacotes instalados. Esta saída padrão foi alimentada como entrada para oawk
comando.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 realmente representa a versão do pacote.De acordo com o exposto 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 a descrição do pacote .
fonte
dpkg
primeiro e depois permitir que o awk os filtre novamente? Você pode solicitar a listagem para um único pacote, bem como:dpkg -l <package-name>