Wie liste ich unter Ubuntu Linux Pakete auf, die aus dem "Universum" -Repositor installiert wurden?


8

Auf einem Ubuntu 10.04 LTS-Server möchte ich installierte Pakete auflisten und sehen, aus welchem ​​Repository sie stammen.

Es ist einfach, installierte Pakete aufzulisten, enthält jedoch nicht den Namen des Repositorys (z. B. "Haupt" oder "Universum"). Und diese Informationen sind nicht enthalten /var/lib/dpkg/statusund werden dpkg-queryauch nicht angezeigt.

Ich möchte eine Liste mit "nicht unterstützter" Software erhalten, dh Software, die nicht aus dem "Haupt" -Repository stammt und für die Ubuntu keine Sicherheitsupdates garantiert.

Hinweis: Dies ist ein Server. X, GNOME oder KDE sind nicht installiert.

Antworten:


13

Okay, ich habe herausgefunden, wie das geht:

aptitude search "~i" -F "%s# %p"

Was natürlich leicht zu finden ist, um Elemente aus dem "Universum" -Repository zu finden:

aptitude search "~i" -F "%s# %p" | grep universe

2
+1. Ich war dort, aber ich bin überrascht, dass dies weder in der Ubuntu-Dokumentation noch auf der Debian-Website besser dokumentiert ist. Es ist etwas, das ich die ganze Zeit in Synaptic mache, aber ich habe es noch nie von CLI gebraucht.
Richard Holloway

aptitude search -F "%s# %p" "~i ?section(universe)"
jarno

1

Sie können ein benutzerdefiniertes Format für die Ausgabe des Befehls dpkg angeben (mit der Option -f). Versuchen Sie etwas Ähnliches mit der Origin-Variablen:

dpkg-query -f='${Package} ${Version}\t${Origin}\n' --get-selections

Weitere Informationen zum Formatierungsargument finden Sie auf dieser Seite: http://www.tin.org/bin/man.cgi?section=1&topic=dpkg-query

Die Standardformatzeichenfolge lautet "$ {Package} \ t $ {Version} \ n". Tatsächlich können auch alle anderen in der Statusdatei gefundenen Felder (dh benutzerdefinierte Felder) angefordert werden. Sie werden unverändert gedruckt, es werden jedoch keine Konvertierungen oder Fehlerprüfungen durchgeführt. Um den Namen des dpkg-Betreuers und die installierte Version abzurufen, können Sie Folgendes ausführen:

dpkg-query -W -f = '$ {Paket} $ {Version} \ t $ {Maintainer} \ n' dpkg


2
Leider weder ${Origin}noch ${Source}eine Ausgabe geben. Beispielabfrage : dpkg-query -W -f='${Package} ${Version}\t${Origin}\n' 'apache2*'. Wenn dpkg-querydie Daten /var/lib/dpkg/statusabgerufen werden, werden die Informationen nicht angezeigt, da diese Datei das Ursprungsrepository nicht identifiziert.
Nate

1
Das funktioniert nicht. --get-selectionsist kein gültiges Argument für dpkg-query.
Reinderien

1

Ich habe versucht, die Eignung zu suchen ~ i -F "% s #% p"

in Ubuntu 12.04 und 14.04, aber es wurden keine Repositorys angezeigt.

Also habe ich dieses kleine Skript geschrieben:

# more origins.sh
#!/bin/bash
for i in $(dpkg -l |grep ^ii |awk -F' ' '{print $2}'); do
  apt-cache showpkg "$i"|head -3|grep -v '^Versions'|cut -d'(' -f2|cut -d')' -f1|sed -e 's/^Package: //;' | paste -d '\t' - -
done

Dann

bash origins.sh|grep universe

Die aus der showpkgAusgabe extrahierte Version ist nicht unbedingt die installierte Version, daher funktioniert dies möglicherweise für Sie. Wenn jedoch ein Paket aus mehr als einem Repository in verfügbar ist sources.list(z. B. wenn Backports aktiviert sind), wird Ihnen nicht angezeigt, aus welchem ​​Repository Das Paket wurde installiert.
Aryeh Leib Taurog

Das ist wirklich cool. Eigentlich ist es wirklich hilfreich und wichtig, weil das Universum im Gegensatz zu main :( Weitere Informationen: wilderssecurity.com/threads/…
therealmarv

0

Dies ist nicht gerade eine Antwort, kann aber verwendet werden, um zu helfen. Ein Kollege hat mir das neulich gezeigt. Mit diesem Befehl können Sie herausfinden, woher ein Paket stammt:

apt-cache policy <package-name>

Zum Beispiel:

 apt-cache policy xterm  
 xterm:  
 Installed: 271-1ubuntu2.1    
 Candidate: 271-1ubuntu2.1  
 Version table:    *** 271-1ubuntu2.1 0  
         500 http://mirror.internode.on.net/pub/ubuntu/ubuntu/ precise-updates/main amd64 Packages  
         100 /var/lib/dpkg/status  
      271-1ubuntu2 0  
         500 http://mirror.internode.on.net/pub/ubuntu/ubuntu/ precise/main amd64 Packages
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.