Ich benutze den dpkg -l
Befehl, um herauszufinden, welche Version eines Pakets ich installiert habe. Zum Beispiel:
dpkg -l network-manager
gibt die Informationen auf dem Paket zurück:
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
Wie Sie sehen, wird das Ergebnis 0.8.3~git.20101118t223039
falsch wiedergegeben, da die Version abgeschnitten wurde (für diese Frage habe ich eine lange ausgewählt). Die Art und Weise, wie ich das in der Vergangenheit gelöst habe, besteht darin, ein dummes langes COLUMNS-Argument zu übergeben, um es zu erweitern:
COLUMNS=200 dpkg -l network-manager
Das gibt mir die gesamte Versionsnummer, aber auch eine Menge Müll:
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
Jetzt kann ich die vollständige Versionsnummer sehen, die ist 0.8.3~git.20101118t223039.d60a988-0ubuntu1
.
Ich habe das Gefühl, dass dies nicht der richtige Weg ist, um die Versionsnummer eines installierten Pakets zu ermitteln. Dies war in der Vergangenheit nie wirklich ein Problem, aber mit dem Anheften von "Ubuntu" in den Versionen und der Verbreitung von PPAs werden diese Saiten immer länger. Gibt es einen einfacheren Weg?
quelle
dpkg --info package.deb
funktioniert,-s
aber nichtdpkg --info package.deb
arbeitet mit Paketdateien,dpkg -s <packagename>
arbeitet mit Paketnamen - keine Datei erforderlichquelle
dpkg-query --showformat='${Package}\t${Version}\n' --show lsb-release coreutils ...
dpkg-query --showformat='${Version}\n' --show python3-lxml
.Es benutzt nicht den
dpkg
Befehl, sondern apt-show-versionsBeispiel:
quelle
Ich denke, Aneesheps ist die beste Antwort, da Ihre Frage die Verwendung von dpkg spezifiziert. Der Vollständigkeit halber ist hier ein anderer Weg:
Oder nur für die Versionsnummer:
quelle
apt-cache
hängt vom aktuellen Gebietsschema ab. Zum Beispiel in Deutschland muss mangrep 'Installiert:'
. Um dies auszugleichen, verwenden SieC.UTF-8
beim Erstellen von Skripten immer das Gebietsschema . Entweder mitLC_ALL=C.UTF-8; export LC_ALL
zu Beginn des Skripts oder von Fall zu Fall etwas wie:LC_ALL=C.UTF-8 apt-cache policy network-manager | grep 'Installed:' | awk '{print $2}'
Eine andere Methode, um die Version eines installierten Pakets
dpkg
wie folgt zu finden:Beispiel:
Erläuterung:
dpkg -l
Befehl listet alle installierten Pakete auf. Diese Standardausgabe wurde als Eingabe in denawk
Befehl eingespeist .awk
Sucht nach dem entsprechenden Paketnamen in der Standardeingabe ( Spalte 2 ), wenn es gefunden wird, dann greift es nach der entsprechenden Zeile. Und schließlich wird der Wert von ( Spalte 3 ) ausgegeben, der tatsächlich die Paketversion darstellt.Entsprechend dem Obigen repräsentiert Spalte 2 den Paketnamen , Spalte 3 repräsentiert die Paketversion , Spalte 4 repräsentiert die Architektur und Spalte 5 repräsentiert die Paketbeschreibung .
quelle
dpkg
auflisten und awk sie dann erneut filtern lassen? Sie können die Auflistung auch für ein einzelnes Paketdpkg -l <package-name>