Wie erhalte ich eine Liste der verfügbaren (dh deinstallierten) Pakete in Debian?

19

Was ich im Wesentlichen suche, ist das Debian-Äquivalent von:

yum list available

um mir zu zeigen, welche Pakete verfügbar sind (obwohl sie derzeit nicht installiert sind). Ich würde etwas vorziehen, das von der Konsole ausgeführt werden kann, da dies auf einem Remote-Server ist. Vielen Dank.

Freakwincy
quelle

Antworten:

7

grep-dctrlund seine Derivate bieten eine großartige Möglichkeit, die apt-Cache-Dateien abzufragen. (Sie können diese Tools unter Ubuntu mit sudo apt-get install dctrl-tools installieren.)

Bei verfügbaren (aber nicht unbedingt installierten) Paketen können Sie verwenden grep-available. So listen Sie beispielsweise alle verfügbaren Pakete auf:

grep-available  -s Package .

Bearbeiten:

aptitude Sie können eine Liste der nicht installierten Pakete anzeigen, indem Sie sie einfach starten.

Sie können auch eine Liste nicht installierter Pakete abrufen, aptitudeindem Sie Folgendes verwenden:

aptitude -F "%p" search "?not(?installed)"

Beachten Sie, dass Sie mit den neuen Multi-Arch-Paketen Pakete für andere Architekturen erhalten, die in diesem Ergebnis aufgeführt sind. Zum Beispiel bekomme ich:

aptitude -F "%p" search "?not(?installed)"  | grep "^bash:"
bash:i386

Ich habe das bashPaket installiert, aber es ist die amd64-Version, da auf meinem Betriebssystem die amd64-Version von Ubuntu Precise installiert ist. Wenn Sie diese Pakete nicht für andere Architekturen anzeigen möchten, können Sie Zeilen ausschließen, die Folgendes enthalten ::

aptitude -F "%p" search "?not(?installed)"  | grep -v ':'
ℝaphink
quelle
Vielen Dank, aber das Problem dabei ist, dass ich die gesamten Paketlisten für meine ausgewählten Repositorys durchsuchen muss. Ein besserer Weg, das Problem zu visualisieren, wäre vielleicht: Stellen Sie sich vor, X sei die universelle Menge aller Pakete in den Debian-Paket-Repositorys, auf die mein Server verweist, und Y die Menge der Pakete, die ich auf diesem Server installiert habe; was ich im Wesentlichen suche, ist X - Y. Jetzt ist mir klar, dass ich dies programmatisch tun kann, aber ich hatte gehofft, dass es einen relativ einfachen Befehl geben würde, um dasselbe Ergebnis auf einem Debian-System zu erzielen.
Freakwincy
Hab gerade deine bearbeitete Antwort gesehen. Es ist genau das, wonach ich gesucht habe! Vielen Dank.
Freakwincy
PS Ich hätte Ihre Antwort hochgestuft, aber ich habe noch nicht genug Reputationspunkte gesammelt.
Freakwincy
Kein Problem. Willkommen in SU übrigens ;-)
ℝaphink
16

apt-cache wird zum Abfragen des Paket-Cache verwendet:

apt-cache pkgnames | Sortieren
Apt-Cache-Suche Sache
Apt-Cache-Suche - nur Namen Sache
Grawity
quelle
Danke, aber ich fürchte, das funktioniert nicht. Ich habe die vom ersten Befehl erzeugte Liste mit einer zuvor erzeugten Liste installierter Pakete verglichen, die ich folgendermaßen abgeleitet habe: code"dpkg --get-selections | grep '[[: space:]] install $' | awk '{print $ 1}' > built.txt "und Duplikate gefunden. Die beiden anderen Befehle , die Sie zur Verfügung gestellt wird nicht funktionieren , weil ich nicht für ein bestimmtes Paket bin auf der Suche , sondern jedem Paket , das derzeit nicht installiert ist.
Freakwincy
2

Verwenden Sie apt-cachefür diesen Zweck:

apt-cache search package

Da apt-cachenur der Paket-Cache auf dem System verwendet wird, stellen Sie sicher, dass dieser Cache auf dem neuesten Stand ist:

apt-get update

Sie können das Dienstprogramm auch verwenden, apt-filewenn Sie den Namen einer Datei kennen, nach der Sie suchen möchten. Dies muss jedoch zum System hinzugefügt werden. Beispielsweise:

apt-file search somefilename

Ich neige dazu, apt-cacheauf eine der folgenden Arten zu verwenden:

apt-cache search package | sort | grep item

(Dies zeigt Ihnen Dinge, die tatsächlich einen Gegenstand in ihrer Zusammenfassung oder in ihren Namen haben.)

apt-cache search thing | sort | less

(Diese sucht nach etwas und sortiert es dann für eine angenehme Betrachtung mit less.)

Mei
quelle
2

Mein Standpunkt ist es, mit standardmäßig installierten Befehlen zu arbeiten und zusätzliche Pakete zu vermeiden, wenn es keinen bestimmten Grund gibt.

In meinem Debian mit GNU bash diese einfachen Befehle

apt list
apt list --all-versions

gibt eine Liste von allem (installiert und nicht installiert). Ich kann dann die Ergebnisse einschränken, wenn grep "installiert" oder grep -v "installiert" ist. Es kann auch mit einem oder mehreren Paketnamen kombiniert werden (Platzhalter werden akzeptiert).

Der Schalter "-all-versions" stellt in der Ausgabe separate Zeilen für jede Paketversion bereit (stable, testing, unstable, experimental).

Einfache "Apt-Liste" gibt nur eine (die höchste Priorität) Version.

George Vasiliou
quelle
0

Nehmen Sie Ihre Frage genau (Sie möchten eine Liste der nicht installierten Pakete anzeigen), und versuchen Sie es mit

(bearbeitet nach Kommentaren unten)

# apt-get update
# dpkg -l '*' | egrep --invert-match '^i'

Ich bin mir jedoch der genauen Syntax nicht sicher, da ich dies auf eine Windows-Box schreibe und nicht überprüfen kann. Vielleicht versuchen Sie zu ändern, worauf Sie Lust haben

PPC
quelle
Hier werden installierte Pakete aufgelistet , die nicht deinstalliert wurden .
ℝaphink
@ Raphink: Entschuldigung, ich habe den Beitrag bearbeitet, um dies zu beheben
PPC
Kein Problem, aber Sie listen immer noch keine Pakete auf, die nicht installiert sind. Durch den Ausschluss ‚ii‘ Pakete (die eigentlich nicht wirklich , was ist Ihr Ausdruck der Fall ist, sollten Sie '^ii'nicht '[ii]'), sind Sie auf Pakete fehlen , die installiert sind , aber nicht zum Beispiel konfiguriert (wie iFoder iHzum Beispiel).
ℝaphink
@PPC: Leider funktioniert dies auch nicht, da dpkg -l nur installierte Pakete auflistet, dh allen Paketen wird "ii" vorangestellt, so dass das Weiterleiten der Ergebnisse an grep mit den Flags --invert-match oder -v nur a ergibt Reihe von Bindestrichen, die das Trennzeichen für die Listenkopfzeile darstellen. Danke trotzdem.
Freakwincy
@ freakwincy: Richtig! Es tut uns leid, dass Sie es vor dem Senden nicht getestet haben (Arbeiten unter Windows). Laut Manpage solltest du "dpkg -l '*'" verwenden, um alle Pakete aufzulisten.
PPC