wake-up-neo.net

Come posso verificare se è installato un pacchetto (senza privilegi di superutente)?

Nella nostra università possiamo ottenere quasi tutti i pacchetti Ubuntu che vogliamo, ma non siamo noi stessi dei superutenti (dobbiamo richiedere l'installazione dei pacchetti).

Con alcune librerie non è sempre facile sapere se il pacchetto è già installato o meno. C'è un modo/comando semplice per controllare questo?

56
Peter Smit
apt-cache policy <package name>
56
Oli

Lo uso sempre dalla riga di comando:

dpkg -l | grep mysql

quindi quanto sopra chiede a dpkg di elencare tutti i pacchetti installati e quindi grep solo per quelli che hanno mysql nel nome.

18
Rick

Un'altra variante, usando aptitude questa volta:

aptitude show <package>

Il completamento della scheda funziona anche qui.

7
Alexey Nedilko

Puoi usare dselect. Fornisce accesso non di sola lettura.

Inoltre, dpkg -s <package name> fornisce molti dettagli relativi a un pacchetto. Per esempio"

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

È possibile utilizzare dpkg-query -s <package> 2>/dev/null | grep -q ^"Status: install ok installed"$ negli script, poiché restituisce il codice di uscita 1, se <package> non è installato e 0 se <package> è installato.

4
jarno

Soluzione più semplice:

Ora esiste un comando apt list che elenca i pacchetti installati. Puoi anche cercare un pacchetto specifico con

apt list <package>

Vedere man apt per ulteriori informazioni.

2
sk8forether

Devi controllare lo stato stampato da dpkg -l, esempio:

$ 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

Qui sono installati sia vim che firefox-esr, quindi puoi digitare:

$ 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.
0
SebMa

dpkg -s utilizzo programmatico

Mi piace dpkg -s dato che esce con lo stato 1 se uno dei pacchetti non è installato, facilitando l'automazione:

pkgs='qemu-user pandoc'
if ! dpkg -s $pkgs >/dev/null 2>&1; then
  Sudo apt-get install $pkgs
fi

Guarda anche:

Testato su Ubuntu 18.10.

Esempio di utilizzo di un valore specifico come var negli script Shell (ad es. test.sh)

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

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

Renderlo eseguibile e iniziare con:

test.sh openssh-server

O fai quello che vuoi con i tuoi script

0
Lahmizzar