Ich habe ein Szenario, in dem ich eine Reihe von Paketen entfernen möchte, die möglicherweise installiert sind oder nicht, und ich möchte apt-get, um diejenigen zu entfernen, die vorhanden sind, und diejenigen, die es nicht sind, stillschweigend zu ignorieren. Etwas wie:
apt-get remove foo bar baz
was, wenn foo und bar installiert wären, baz aber nicht, foo und bar entfernen würde, ohne sich über baz zu beschweren. Gibt es eine Möglichkeit, dies zu tun?
Dinge, die ich versucht habe, die nicht funktioniert haben, mit cups-dbg als meinem Sündenbock tatsächlich installiertes Paket, das entfernt werden soll:
jcp@a-boyd:~$ sudo apt-get remove -y cups-dbg bogus-package
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package bogus-package
jcp@a-boyd:~$ sudo apt-get remove --ignore-missing cups-dbg bogus-package
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package bogus-package
jcp@a-boyd:~$ sudo apt-get remove --fix-broken cups-dbg bogus-package
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package bogus-package
Ich weiß, dass ich dies mit einem Shell-Skript und etwas dpkg --list
Magie tun könnte , aber ich möchte jegliche Komplexität vermeiden, die nicht unbedingt notwendig ist.
Antworten:
Ist es eine Option, auf ein untergeordnetes Tool wie dpkg zurückzugreifen ?
Verwenden Sie zum Entfernen von Paketkonfigurationsdateien die folgende Bereinigung
quelle
Ich benutze
apt-get remove --purge
(akaapt-get purge
) für die folgende Abhängigkeit mit einer Liste von Paketen. Um nicht vorhandene Pakete zu verarbeiten, filtere ich Pakete heraus, die nicht mit dem folgenden Skript installiert wurden.quelle
Für Debian ≤ 9 ist es möglich, nur zu verwenden
aptitude
anstelle vonapt-get
:Aptitude druckt Warnungen aus, entfernt Ihre Pakete jedoch weiterhin:
Wenn Sie löschen (Paketkonfigurationsdateien löschen) möchten, anstatt sie zu entfernen (Konfigurationsdateien behalten), beachten Sie, dass
aptitude
nur die direkt angegebenen Pakete gelöscht werden, während die nicht verwendeten Abhängigkeiten nur entfernt werden. Sie können jedoch alle entfernten Pakete in einem zweiten Schritt löschen:quelle
bogus-package
einfach den falschen Namen. Wenn wir also 500 Pakete hatten, ist es besser, auch die gefälschten Pakete zu analysieren und einige Tricks auszuführen (z. B. Zahlen nach dem fehlenden Namen usw.). Können Sie uns bitte einige Hinweise dazu geben? ..Couldn't find any package whose name or description matched 'QUX' Unable to apply some actions, aborting
Ein weiterer kleiner 2-Liner, wenn jemand apt verwenden muss:
Erklärung:
quelle