Suchen von Paketen in verschiedenen Zuständen über Aptitude

Suchen von Paketen in verschiedenen Zuständen über Aptitude

Ich suche nach Paketen, die folgende Situationen aufweisen:

  1. Gelöscht, aber nicht bereinigt
  2. Installiert, aber nicht konfiguriert

Ich habe Dinge ausprobiert wie

aptitude search '~id'

Und

aptitude search "~iuA"

aber nichts hat funktioniert.

Irgendwelche Ideen?

Update - einer der Befehle funktioniert nicht -

[$] dpkg-query -Wf '${db:Status-Abbrev} ${Package}\n' | grep ^i[^i]

zsh: no matches found: ^i[^i]

Irgendwelche Ideen, ob zsh oder etwas anderes schuld ist?

Antwort1

Bei Ihren aptitudeVersuchen ist es wichtig zu beachten, dass ~nicht bedeutet, „nach den folgenden Flags im Status eines Pakets zu suchen“. ~iist eine Abkürzung für ~installed, und dann dasDwird wörtlich interpretiertD, d. h. Pakete, deren Namen den Buchstaben enthaltenDaptitude. Ich habe die Dokumentation für ( /usr/share/doc/aptitude/html/en/index.htmlauf meinem System) nach einem Suchmuster durchgesehen , das Ihre Frage beantworten würde, aber ich bin nicht sicher, ob das möglich ist. ~actionVielleicht kommen Sie damit schon zur Hälfte ans Ziel, aber ich bin mir nicht sicher, ob ich auch den Status bekomme.


Eine Alternative zur Verwendung aptitudeist die Verwendung dpkg-querymit grep.

dpkg-query -Wf '${db:Status-Abbrev} ${Package}\n' | grep ^r

Dadurch werden Pakete gesucht, die sich imENTFERNTZustand, aber nicht gelöscht.

dpkg-query -Wf '${db:Status-Abbrev} ${Package}\n' | grep ^i[^i]

Dadurch werden Pakete gesucht, die alsEingerichtet, sind aber nicht vollständig installiert. Wenn Sie keine Pakete einschließen möchten, die auf Trigger warten, können Sie ^i[ncHUF]stattdessen verwenden.


Um nur die zweite Spalte der Ausgabe (den Paketnamen) zu erhalten, können Sie Folgendes verwenden sed:

dpkg-query -Wf '${db:Status-Abbrev} ${Package}\n' | sed -n 's/^r.R\?\s*//p'

um entfernte Pakete zu finden und

dpkg-query -Wf '${db:Status-Abbrev} ${Package}\n' | sed -n 's/^i[^i]R\?\s*//p'

um Pakete zu finden, die installiert werden sollen, aber noch nicht vollständig installiert sind.


Um dies etwas weiter auszuführen: Der „Status“ von Debian-Paketen besteht aus zwei Teilen:

  • DerAktionan einem Paket durchgeführt werden soll. Dies kann sein,Installierenein Paket, umentfernenein Paket, umhaltenein Paket odersäubernein Paket.

  • DerPaket Status, das den tatsächlichen Status des Pakets auf Ihrem System beschreibt.

Der obige dpkg-queryAufruf listet die Aktion und den Status eines Pakets (jeweils ein Zeichen) vor dem Paketnamen am Anfang jeder Zeile auf.

Um Pakete zu finden, die entfernt, aber nicht gelöscht wurden, suchen wir einfach nach Paketen mit der Aktion „Entfernen“: grep ^r. Um Pakete zu finden, die installiert sind oder installiert werden sollen, aber noch nicht konfiguriert sind, suchen wir nach Paketen, derenAktionIstInstallieren, deren Status jedoch etwas anderes ist alsEingerichtet: grep ^i[^i].

Antwort2

Gelöscht, aber nicht bereinigt ist ~c( ?config-files).

Installiert, aber nicht konfiguriert wird nicht von apt verfolgt, nur von dpkg. Ein Paket hat zwei Zustände: tatsächlich und gewünscht. Apt interessiert sich nur für den gewünschten Zustand. Der gewünschte Zustand eines Pakets, das installiert, aber nicht konfiguriert ist, ist installiert.

SehenDylan Freses Antwortfür die Dpkg-Abfragen.

verwandte Informationen