it-swarm-eu.dev

Wie kann ich überprüfen, ob ein Paket installiert ist (keine Superuser-Berechtigungen)?

An unserer Universität können wir fast jedes Ubuntu-Paket installieren, das wir möchten, aber wir sind selbst keine Superuser (wir müssen anfordern, dass Pakete installiert werden).

Bei einigen Bibliotheken ist es nicht immer einfach zu erkennen, ob das Paket bereits installiert ist oder nicht. Gibt es einen einfachen Weg/Befehl, um dies zu überprüfen?

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

Ich benutze das immer nur von der Kommandozeile aus:

dpkg -l | grep mysql

daher fordert der obige Befehl dpkg auf, alle installierten Pakete aufzulisten, und dann greife ich nur auf diejenigen zu, die mysql im Namen haben.

18
Rick

Eine weitere Variante, die diesmal aptitude verwendet:

aptitude show <package>

Die Tab-Vervollständigung funktioniert auch hier.

7
Alexey Nedilko

Sie können dselect verwenden. Es bietet nicht-su schreibgeschützten Zugriff.

Außerdem enthält dpkg -s <package name> viele Details zu einem Paket. Z.B"

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

Sie können dpkg-query -s <package> 2>/dev/null | grep -q ^"Status: install ok installed"$ in Skripten verwenden, da der Beendigungscode 1 zurückgegeben wird, wenn <package> nicht installiert ist, und 0, wenn <package> installiert ist.

4
jarno

Einfachere Lösung:

Es gibt jetzt einen apt list Befehl, der installierte Pakete auflistet. Sie können auch mit nach einem bestimmten Paket suchen

apt list <package>

Weitere Informationen finden Sie unter man apt.

2
sk8forether

Sie müssen den Status überprüfen, der von dpkg -l gedruckt wurde, Beispiel:

$ 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

Hier werden sowohl vim als auch firefox-esr installiert, daher können Sie Folgendes eingeben:

$ 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 programmatische Verwendung

Ich mag dpkg -s, da es mit dem Status 1 beendet wird, wenn eines der Pakete nicht installiert ist, was die Automatisierung vereinfacht:

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

Siehe auch:

Getestet unter Ubuntu 18.10.

Beispiel für die Verwendung eines bestimmten Werts als var in Shell-Skripten (z. B. test.sh)

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

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

Mach es ausführbar und beginne mit:

test.sh openssh-server

Oder machen Sie mit Ihren Skripten, was Sie wollen

0
Lahmizzar