Wie kann man auf einem Debian-basierten System, einschließlich Ubuntu, feststellen, aus welchem Repository ein Paket heruntergeladen wird, ohne den Download tatsächlich zu starten? aptitude show
und apt-cache info
zeigen das Abschnitt (z. B. Metapaket, Basis, Grafiken), aber nicht das Repository, zu dem ein Paket gehört (z. B. http: //ppa.launchpad) .net/mactel-support/ppa/ubuntu oder http://us.archive.ubuntu.com/ubuntu/ ).
Bei der Installation des Pakets wird das tatsächliche Repository während des Downloads angezeigt (es wird in der Ausgabe "Herunterladen von ..." von apt und ähnlichen Programmen ausgedruckt). Wie kann man jedoch Informationen über das Repository erhalten, das das Paket enthält (oder ein bestimmtes Repository)? Version eines Pakets) ohne zuerst herunterladen und installieren?
Wie kann das Quellrepository für ein bereits installiertes Paket ermittelt werden?
Ich führe apt-cache policy <package name>
aus:
$ apt-cache policy wajig
wajig:
Installed: 2.1
Candidate: 2.1
Version table:
*** 2.1 0
100 /var/lib/dpkg/status
2.0.47 0
500 file:/home/wena/.repo_bin/ squeeze/main i386 Packages
500 ftp://ftp.is.co.za/debian/ squeeze/main i386 Packages
Das bedeutet, dass es drei wajig
Pakete gibt:
Eine, die installiert ist (/var/lib/dpkg/status
)
Eine, die in einem lokalen Repository verfügbar ist (file:/home/wena/.repo_bin/
)
Eine, die in einem Remote-Repository (ftp://ftp.is.co.za/debian
) verfügbar ist, das zufällig auch die gleiche Version ( 2.0.47 ) hat wie die Version in einem lokalen Repository
Darüber hinaus zeigt apt-cache madison <package name>
ähnliche Informationen in einem Tabellenformat an.
wajig | 2.2 | mirror://mirrors.ubuntu.com/mirrors.txt/ precise/universe AMD64 Packages
wajig | 2.2 | mirror://mirrors.ubuntu.com/mirrors.txt/ precise/universe Sources
Aha! Anscheinend ist der richtige apt
-Befehl nicht apt-cache info
, sondern apt-cache showpkg
.
$ apt-cache showpkg linux-generic
Package: linux-generic
Versions:
2.6.31.19.32 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic-updates_main_binary-AMD64_Packages) (/var/lib/apt/lists/security.ubuntu.com_ubuntu_dists_karmic-security_main_binary-AMD64_Packages) (/var/lib/dpkg/status)
Description Language:
File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic-updates_main_binary-AMD64_Packages
MD5: 5d722da329763b9342d322f5a140005c
2.6.31.14.27 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_main_binary-AMD64_Packages)
Description Language:
File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_main_binary-AMD64_Packages
MD5: 5d722da329763b9342d322f5a140005c
Reverse Depends:
Dependencies:
2.6.31.19.32 - linux-image-generic (5 2.6.31.19.32)
2.6.31.14.27 - linux-image-generic (5 2.6.31.14.27)
Provides:
2.6.31.19.32 -
2.6.31.14.27 -
Reverse Provides:
Die Zeile File:
enthält die Repository-Informationen nach dem /var/lib/apt/lists/
.
Es gibt einen Fehlerbericht, dass aptitude
das Quell-Repository nicht anzeigen kann , aber es scheint, dass die Funktion derzeit noch auf der Wunschliste steht.
Das funktioniert bei mir (zeigt wo das 2vcard Paket ist):
$ grep 2vcard /var/lib/apt/lists/* | grep "Filename:"
/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_universe_binary-i386_Packages:Filename: pool/universe/2/2vcard/2vcard_0.5-3_all.deb
Sie können zusätzliche Filter anwenden, um Versionen usw. zu überprüfen, wenn mehrere Versionen verfügbar sind.
Ich frage mich, warum niemand aptitude
erwähnt hat. Ich benutze es die ganze Zeit.
Eignung ist:
Sudo apt install aptitude
auf andere (wie Ubuntu) installiert werdenncurses
GUI (wird aber meistens ohne verwendet)liefert eine wirklich hübsche Ausgabe. Verwenden Sie zum Anzeigen von Paketversionen den Befehl aptitude versions
:
[email protected]:~$ aptitude versions kde-standard
Package kde-standard:
i A 5:77+deb7u1 stable 500
p A 5:84 testing,unstable 130
hat keine Super Cow Powers
Der Buchstabe vor jeder Zeichenfolge gibt den Status des Pakets an. i ist installiert und p ist gelöscht (oder nie installiert), stabil, Test und instabil sind Repository-Definitionen, die Zahl am Ende ist eine PIN-Priorität .
Eine Einschränkung in Bezug auf neuere Versionen von aptitude, die hier erwähnt werden sollte: Standardmäßig werden alle Pakete angezeigt, die den von Ihnen gesuchten Namen enthalten. Verwenden Sie also ein wenig regex magic, um nach dem strengen Namen zu suchen, beispielsweise aptitude versions ^kde-workspace$
.
Leider werden diese Informationen während der Paketinstallation nicht aufgezeichnet. Sie können eine Vermutung anstellen, ob sich das Repository noch in der Quellliste befindet und das Repository noch das Paket enthält:
grep -l PKG /var/lib/apt/lists/*
apt-cache showpkg
zeigt Daten aus der Repository-Datenbank an (nicht die installierte), sodass es sich um eine andere Form der gleichen Informationen aus grep handelt.
Sogar Synaptic kann (im Origin-Bildschirm) nicht erkennen, ob Sie das Repository und das Update deaktivieren.
Oder, inspiriert von Sunny, probieren Sie:
# list installed restricted packages
for i in `dpkg --get-selections | awk '{ print $1 }'`; do egrep -lRI "^Filename: .*/${i}_[^/]+.deb" /var/lib/apt/lists/ | grep -q 'restricted' && echo $i; done
# list installed multiverse packages
for i in `dpkg --get-selections | awk '{ print $1 }'`; do egrep -lRI "^Filename: .*/${i}_[^/]+.deb" /var/lib/apt/lists/ | grep -q 'multiverse' && echo $i; done
ps. nicht 100% genau.