Wie finde ich heraus, aus welchem ​​Repository ein Paket stammt?

147

Gibt es eine Methode oder einen Befehl, die bzw. der erkennen kann, aus welchem ​​Repository ein Paket stammt?

dfme
quelle
1
Das ist nicht eindeutig. Meinen Sie: Welche derzeit aktivierten Repositorys stellen ein Paket mit dem angegebenen Namen bereit, oder: Mit welchem ​​Repository wurde das Paket mit dem derzeit installierten Namen installiert? (Beide sind nützlich. Ich suche nach Letzterem, nicht
Reinier Post

Antworten:

112

Erforderliche Befehle:

  • dpkg -s <package>- Damit können Sie die Version finden, die Sie installiert haben. ( Quelle )
  • apt-cache showpkg <package>- zeigt eine Liste der verfügbaren Versionen des Pakets an. Für jede Version wird die Quelle des Pakets in Form eines Indexdateinamens angegeben.

Wenn Sie die Quelle des derzeit installierten Pakets ermitteln möchten, benötigen Sie die Ausgabe von dpkg -s <package>. Ansonsten können Sie sich einfach die neueste Ausgabe von ansehen apt-cache showpkg <package>.

Beispiel:

$ dpkg -s liferea
Package: liferea
Status: install ok installed
Priority: optional
Section: web
Installed-Size: 760
Maintainer: Ubuntu Developers <[email protected]>
Architecture: i386
Version: 1.6.2-1ubuntu6
...

$ apt-cache showpkg liferea
Package: liferea
Versions: 
1.6.2-1ubuntu6.1 (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid-updates_main_binary-i386_Packages)
 Description Language: 
                 File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid-updates_main_binary-i386_Packages
                  MD5: 557b0b803b7ed864e6d14df4b02e3d26

1.6.2-1ubuntu6 (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages) (/var/lib/dpkg/status)
 Description Language: 
                 File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages
                  MD5: 557b0b803b7ed864e6d14df4b02e3d26
...

Anhand des ersten Befehls kann ich erkennen, dass Liferea Version 1.6.2-1ubuntu6 installiert ist. Aus dem zweiten Befehl kann ich erkennen, dass diese Version in aufgeführt ist /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages.

Ohne zu viel Aufwand, kann ich ableiten , dass die Source - Leitung enthält archive.ubuntu.com, ubuntu, lucid, und main.

Und natürlich /etc/apt/sources.listenthält my die folgende Zeile.

deb http://archive.ubuntu.com/ubuntu lucid main universe restricted multiverse
Michael Crenshaw
quelle
mac, danke für deine ausführliche antwort! Leider hilft es mir bei der ersten Ausgabe eines nicht erfüllten Abhängigkeitsproblems nicht :-( Ich versuche, libqt4-opengl zu installieren, und es heißt: Die folgenden Pakete haben nicht erfüllte Abhängigkeiten: libqt4-opengl: Depends: libqtcore4 (= 4: 4.6.2-0ubuntu5.1) aber 4: 4.7.0 ~ beta1 + git20100522-0ubuntu1 ~ lucid1 ~ ppa1 + appmenu20100624 muss installiert werden Abhängig von: libqtgui4 (= 4: 4.6.2-0ubuntu5.1) aber 4: 4.7. 0 ~ beta1 + git20100522-0ubuntu1 ~ lucid1 ~ ppa1 + appmenu20100624 soll installiert werden
dfme 20.10.10
Es ist schwer zu erkennen, wo das Problem liegt. Sie sollten eine neue Frage öffnen, damit Sie alle Details angeben können. Wenn Sie dies tun, hinterlassen Sie einen Link in einem Kommentar. :-)
Michael Crenshaw
4
apt-cache policy <package name>(aus: superuser.com/a/236605/37279 )
franzlorenzon
Hat apt-cache {showpkg, Politik} tatsächlich zeigt , wo ein installiertes Paket installiert wurde , aus , oder einfach nur , wo es aus installiert werden würde zum Zeitpunkt abgefragt wird?
Croad Langshan
1
Letzteres. Wenn ich in der Regel Ubuntu- trustyPaketquellen verwende, dann füge utopicich vorübergehend meine hinzu sources.list, um Version 1.20ubuntu3 zu installieren, init-system-helpersund entferne dann das Repo wieder von meiner sources.list, apt-cache showpkg init-system-helperslüge nur über die ursprüngliche Paketliste und gebe apt-cache policy init-system-helpersnur das Offensichtliche an.
Blubberdiblub
103

Verwenden Sie den folgenden Befehl. Es hat eine bessere Ausgabe:

apt-cache policy <Package Name>

Für Ubuntu 16.04 und höher gibt es einen kürzeren Weg, dies zu tun:

apt policy <Package Name>
SuB
quelle
11
Das ist die richtige Antwort! Die Befehle in der Antwort von mac9416 müssen aufgrund ihrer Ausgabe mühsam interpretiert und erraten werden. Weitere Informationen zu apt-cache policysiehe auch superuser.com/a/236605/61370
pabouk
3
apt-cache policyist gut, aber manchmal müssen Sie apt-cache showpkgMD5-Summen aus dem Paket vergleichen. Siehe auchdebsums --changed
Gavenkoa
Diese policyOption ist am nützlichsten, wenn man sie mitsources.list
infinite-etcetera vergleicht.
Dies sollte die akzeptierte Antwort sein! @pabouk ist richtig. Diese Antwort ist für die Frage relevanter als die aktuell akzeptierte.
HEXcube
Wie @ pablo-bianchi in seiner Antwortapt policy <package-name> betont hat, kann ab 16.04LTS eine noch einfachere verwendet werden. Sobald 14.04LTS 2018 EOL-zertifiziert wurde, kann diese Antwort bearbeitet werden, um den neueren Befehl zu verwenden.
HEXcube
9

apt auf Ubuntu 16.04+

Neben apt-cache policy, showpkgund showjetzt haben wir ein einfacheren, mit einfachem Subbefehle zu erinnern: apt(nicht mit klassischen verwechseln apt-*):

apt policy <package> 

Oder die Alternative mit mehr Infos apt show <package>, Zeile beginnend mit "APT-Sources:" .

Beschreibung: Dieses Paket bietet Befehlszeilentools zum Suchen und Verwalten sowie zum Abfragen von Informationen zu Paketen als Low-Level-Zugriff auf alle Funktionen der Bibliothek libapt-pkg. Dazu gehören: apt-get, apt-cache, apt-cdrom, apt-config, apt-key.

Grundbefehle von apt --help

Andere auch leicht zu merkende Unterbefehle:

  • apt list - Liste Pakete basierend auf Paketnamen
  • apt search - Suche in Paketbeschreibungen
  • apt show - Paketdetails anzeigen
  • apt update - Liste der verfügbaren Pakete aktualisieren
  • apt install - Pakete installieren
  • apt remove - Pakete entfernen
  • apt purge- Pakete und Konfigurationsdateien entfernen :

    Durch das Entfernen eines Pakets werden alle gepackten Daten entfernt, es verbleiben jedoch normalerweise kleine (geänderte) Benutzerkonfigurationsdateien, falls das Entfernen versehentlich war. Wenn Sie nur eine Installationsanforderung für das versehentlich entfernte Paket absenden, wird die Funktion wie zuvor in diesem Fall wiederhergestellt. Andererseits können Sie diese Reste auch bei bereits entfernten Paketen durch Aufrufen von purge entfernen. Beachten Sie, dass dies keine Daten oder Konfigurationen beeinflusst, die in Ihrem Home-Verzeichnis gespeichert sind.

  • apt upgrade - Aktualisieren Sie das System, indem Sie Pakete installieren / aktualisieren

  • apt full-upgrade - Aktualisieren Sie das System durch Entfernen / Installieren / Aktualisieren von Paketen
  • apt edit-sources - Bearbeiten Sie die Quellinformationsdatei
Pablo A
quelle
apt policy xxxscheint identisch zu sein apt-cache policy xxx, vielleicht hätte dies stattdessen ein Kommentar sein sollen. Oder zumindest erwähnen, apt showdass der -aSchalter benötigt, um "zusätzliche Datensätze" aus anderen Quellen zu sehen
Xen2050
6

Leider werden diese Informationen während der Paketinstallation nicht aufgezeichnet. Sie können eine gute 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/*

Selbst Synaptic kann nicht erkennen, ob Sie das Repository deaktivieren und aktualisieren.

Kanaka
quelle
4
sudo grep *packagename* /var/lib/apt/lists/* | grep "Filename:"

Quelle

sBlatt
quelle
1

Das ist etwas genauer:

apt-cache show <packagename> | grep "Version:"

Die neueste Version wird normalerweise installiert, es sei denn, Sie haben apt-pinning festgelegt oder eine bestimmte Version explizit installiert.

mchid
quelle