Como posso verificar se um pacote está instalado (sem privilégios de superusuário)?


56

Em nossa universidade, podemos instalar praticamente qualquer pacote ubuntu que desejamos, mas não somos superusuários (precisamos solicitar a instalação de pacotes).

Com algumas bibliotecas, nem sempre é fácil saber se o pacote já está instalado ou não. Existe uma maneira / comando simples para verificar isso?

Respostas:



18

Eu sempre uso isso na linha de comando:

dpkg -l | grep mysql

então o acima pede ao dpkg para listar todos os pacotes instalados e então eu grep apenas para aqueles que possuem mysql no nome.


3
dpkg -l "*mysql*"também funciona e não oculta as linhas explicativas na saída.
Philipp Wendler

dpkg -l "*mysql*"(ou dpkg -l '*mysql*') também faz uma formatação especial da saída para caber em cada pacote em uma linha da janela do terminal (grep não). E este formulário permite que você escolha o formato curinga (prefixos ou sufixos) e se deseja usar curingas (em comparação com grep). Mas grep dá uma coloração agradável ..))
vstepaniuk 22/02

7

Mais uma variante, usando o aptitude desta vez:

aptitude show <package>

A conclusão da guia também funciona aqui.


6

Você pode usar o dselect. Ele fornece acesso somente leitura não-su.

Além disso, dpkg -s <package name>fornece muitos detalhes relacionados a um pacote. Por exemplo"

userme:~$ dpkg-query -s sl
Package: sl
Status: unknown ok not-installed
Priority: optional
Section: games

Isso também está disponível como justo dpkg -s. E, inversamente, dpkg-query -lfunciona tão bem quanto dpkg -loudpkg --list
Belacqua

4

Você pode usar dpkg-query -s <package> 2>/dev/null | grep -q ^"Status: install ok installed"$ em scripts, pois retorna o código de saída 1, se <package>não estiver instalado, e 0 se <package>estiver instalado.


4
Cuidado : se dpkg -sretornar 0, isso não significa necessariamente que o pacote está totalmente / corretamente instalado. dpkg -stambém retorna 0se o pacote está no estado half-configuredou no config-filesestado (e acho que também está half-installed, mas não verifiquei isso). Veja [a página de manual de dpkg( manpages.ubuntu.com/manpages/oneiric/man1/dpkg.1.html ) para outros estados "incompletos".
Ignitor

11
@ Ignitor, bom ponto. Minha resposta estava errada. O pacote pode até ser removido, mas não eliminado. Então eu acho que você precisa examinar a saída para verificar se o pacote está instalado ou não.
61314 jarno

2
Eu editei a resposta. Agora ele depende da saída do dpkg-query. Não sei o quão portátil é essa solução; por exemplo, o texto pode ser exibido em outro idioma em algum sistema?
61314 jarno

2

Solução mais simples:

Agora existe um apt listcomando que lista os pacotes instalados. Você também pode procurar um pacote específico com

apt list <package>

Veja man aptpara mais informações.


11
E apt showpara mais detalhes
wjandrea 25/01


0

Exemplo para usar um valor específico como var em scripts de shell (por exemplo test.sh)

#!/bin/sh
PACKAGE="${1}"
INSTALLED=$(dpkg -l | grep ${PACKAGE} >/dev/null && echo "yes" || echo "no")

echo "${PACKAGE} is installed ... ${INSTALLED}"

Torne-o executável e comece com:

test.sh openssh-server

Ou faça o que quiser nos seus scripts


0

Você precisa verificar o status impresso por dpkg -l, exemplo:

$ dpkg -l firefox-esr vim winff
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
+++-====================================-=======================-=======================-=============================================================================
hi  firefox-esr                          52.9.0esr+build2-0ubunt amd64                   Safe and easy web browser from Mozilla
ii  vim                                  2:8.1.1198-0york0~14.04 amd64                   Vi IMproved - enhanced vi editor
rc  winff                                1.5.3-3                 all                     graphical video and audio batch converter using ffmpeg or avconv

Aqui ambos vime firefox-esrestão instalados, você pode digitar:

$ dpkg -l firefox-esr | grep -q ^.i && echo This package is installed. || echo This package is NOT installed.
This package is installed.
$ dpkg -l vim | grep -q ^.i && echo This package is installed. || echo This package is NOT installed.
This package is installed.
$ dpkg -l winff | grep -q ^.i && echo This package is installed. || echo This package is NOT installed.
This package is NOT installed.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.