Was ist der Unterschied zwischen diesen Befehlen?
sudo apt-get autoremove --purge packagenames
sudo apt-get remove --purge packagenames
sudo apt-get purge purge packagenmaes
sudo apt-get remove packagenames
sudo apt-get autoremove
quelle
Was ist der Unterschied zwischen diesen Befehlen?
sudo apt-get autoremove --purge packagenames
sudo apt-get remove --purge packagenames
sudo apt-get purge purge packagenmaes
sudo apt-get remove packagenames
sudo apt-get autoremove
remove
Deinstalliert die nach ihm benannten Pakete.autoremove
Deinstalliert alle automatisch installierten Pakete, die nicht mehr benötigt werden. Es ist falsch, die Paketnamen danach autoremove
aufzulisten. Sie werden ignoriert (und alle in Frage kommenden Pakete werden entfernt), was wahrscheinlich nicht Ihre Absicht ist.--purge
bewirkt, dass systemweite Konfigurationsdateien, die mit zu entfernenden Paketen verknüpft sind, ebenfalls entfernt werden. Es muss von einem Befehl wie remove
oder begleitet werden autoremove
. Das --purge
Flag ändert die Aktion eines Befehls. es handelt nicht von selbst.purge
bedeutet dasselbe wie --purge remove
(was dasselbe ist wie remove --purge
). Es ist falsch, purge
zweimal zu sagen ; Die zweite purge
wird als der Name eines Pakets interpretiert, das purge
d sein soll. Dies ist wahrscheinlich nicht das, was Sie beabsichtigen.Um zu verstehen, was diese Befehle tun und wie sie sich unterscheiden, ist es hilfreich (und wahrscheinlich sogar unerlässlich), zwei Konzepte zu verstehen:
Ein installiertes Paket wird entweder manuell oder automatisch installiert.
Wenn Sie ein Paket für die Installation angeben und es installiert ist, wird es manuell installiert.
Es können aber auch andere Pakete installiert werden. Die meisten Pakete haben Abhängigkeiten - andere Pakete, die installiert werden müssen, damit diese Pakete wie vorgesehen funktionieren. Wenn Sie ein Paket installieren, werden seine Abhängigkeiten (dh die anderen Pakete, von denen es abhängt) installiert, mit Ausnahme der zuvor installierten.
Wenn ein Paket nicht von Ihnen zur Installation angegeben wird, sondern als Abhängigkeit von einem Paket, das Sie zur Installation angegeben haben, installiert wird, wird es automatisch installiert.
Bitte beachten Sie, dass wenn Sie zwei Pakete installiert haben und eines davon eine Abhängigkeit von einem anderen ist, dies nicht bedeutet, dass die Abhängigkeit automatisch installiert wird. Es ist auch möglich, dass die Abhängigkeit manuell installiert wurde (dh von Ihnen festgelegt wurde, zum Beispiel vor oder gleichzeitig mit dem Paket, das davon abhängt).
Schließlich:
apt-mark
Befehl), unabhängig davon, wie oder unter welchen Umständen sie tatsächlich installiert wurden.In der Regel ist für jedes automatisch installierte Paket mindestens ein manuell installiertes Paket vorhanden, das davon abhängt (und das dazu geführt hat, dass es automatisch installiert wurde). Wenn Sie dann jedoch alle manuell installierten Pakete entfernen, die von einem automatisch installierten Paket abhängen, ist das automatisch installierte Paket nicht mehr erforderlich, wird jedoch weiterhin installiert.
apt-get autoremove
Entfernt automatisch installierte Pakete, von denen keine manuell installierten Pakete mehr abhängig sind.
Ein Paket enthält Dateien, die auf jedem System, auf dem diese Version des Pakets installiert ist, identisch sein und bleiben sollen. Solche Dateien enthalten ausführbare Dateien, Ressourcen, Dokumentation und andere "Assets" für installierte Programme. Wir haben diese Dateien normalerweise einfach "die Dateien" genannt, die ein Paket bereitstellt.
Ein Paket bietet aber auch andere Dateien, die (möglicherweise) geändert werden sollen. Diese werden als globale (oder systemweite) Konfigurationsdateien bezeichnet. Sie werden fast immer im /etc
Verzeichnis installiert und können automatisch und manuell geändert werden, um das Verhalten installierter Programme zu ändern. Hat beispielsweise sudo
eine Konfigurationsdatei /etc/sudoers
und ein Verzeichnis für weitere Konfigurationsdateien /etc/sudoers.d
. Diese Datei und alle zu diesem Verzeichnis hinzugefügten Dateien geben an, wer sudo
auf welche Weise verwendet werden darf .
In der Regel sollte das Deinstallieren und anschließende Installieren eines Pakets nichts an seinem Verhalten ändern (es sei denn, die Paketdateien waren beschädigt und Sie haben es daher natürlich neu installiert). Daher werden normalerweise beim Deinstallieren eines Pakets seine Paketdateien gelöscht, die systemweiten Konfigurationsdateien bleiben jedoch unberührt.
Wenn Sie ein Paket deinstallieren, ohne anzugeben, dass die systemweiten Konfigurationsdateien ebenfalls gelöscht werden sollen, wird das Paket als "Entfernen" bezeichnet.
Wenn Sie beim Deinstallieren des Pakets auch die systemweiten Konfigurationsdateien eines Pakets löschen möchten, wird dies als "Löschen" des Pakets bezeichnet.
apt-get remove
wird ein Paket entfernen; Das heißt, das Paket wird deinstalliert, die systemweiten Konfigurationsdateien bleiben jedoch erhalten.
apt-get purge
löscht ein Paket; Dies bedeutet, dass das Paket deinstalliert wird und die systemweiten Konfigurationsdateien gelöscht werden müssen.
Eine andere Möglichkeit zum Löschen von Paketen ist die Verwendung des --purge
Flags. Das sagt nicht, apt-get
was zu tun ist; Stattdessen ändert es, welche Begriffe (oder "Befehle") remove
es tun sollen. Das --purge
Flag führt dazu, dass alle Paket-Deinstallationen mit dem Löschen der systemweiten Konfigurationsdateien für die zu deinstallierenden Pakete einhergehen. Mit anderen Worten, die --purge
Flagge verwandelt Entfernungen in Säuberungen.
Warum haben wir die --purge
Flagge, wenn wir den purge
Befehl haben? Immerhin ist nicht sudo apt-get --purge remove packagename
gleichbedeutend mit sudo apt-get purge packagename
. Sie sind gleichwertig. Wo --purge
ist praktisch, wenn Sie das Verhalten von Befehlen ändern mögen andere als remove
.
Angenommen, Sie möchten automatisch installierte Pakete deinstallieren, die nicht mehr benötigt werden (da keine manuell installierten Pakete mehr vorhanden sind). Sie möchten jedoch nicht nur diese automatisch installierten Pakete entfernen, sondern auch löschen ihre systemweiten Konfigurationsdateien. Dann könnten Sie laufen:
sudo apt-get --purge autoremove
Betrachten wir eine weitere Verwendung von --purge
. Es gibt ein Flag --reinstall
, das Installationen in Neuinstallationen verwandelt. Dies bedeutet, dass normalerweise beim Versuch, ein bereits installiertes Paket zu installieren, entweder nichts passiert oder (wenn das Paket als automatisch installiert markiert ist) das Paket als manuell installiert markiert wird. --reinstall
Wenn Sie jedoch ein bereits installiertes Paket mit dem Flag installieren, wird es entfernt und anschließend wieder installiert :
sudo apt-get --reinstall install packagename
Angenommen, Sie möchten die systemweiten Konfigurationsdateien des Pakets löschen, das Sie neu installieren. Das ist etwas üblich; Wenn ein Paket nicht funktioniert und Sie nicht wissen, warum, können Sie versuchen, es erneut zu installieren und auch die Konfigurationsdateien zu löschen, damit die Konfiguration auf die Standardeinstellungen zurückgesetzt wird. Um dies zu erreichen, können Sie Folgendes ausführen:
sudo apt-get --purge --reinstall install packagename
Das --reinstall
verwandelt Installation in Neuinstallation (dh Entfernen, gefolgt von Installation), und --purge
das Entfernen verwandelt den Teil der Neuinstallation in Löschen.
Nun sollte genau klar sein, was jeder Ihrer Beispielbefehle apt-get
tut:
sudo apt-get autoremove --purge packagenames
Dadurch werden automatisch installierte Pakete gelöscht, für die keine manuell installierten Pakete mehr vorhanden sind. Das heißt, es deinstalliert diese Pakete (was das Löschen ihrer Paketdateien mit sich bringt) und es löscht auch ihre systemweiten Konfigurationsdateien.
Hier packagenames
tut sich nichts. Insbesondere wenn Sie nur Pakete entfernen möchten, deren Namen dort aufgeführt sind, verhält sich dies nicht so, wie Sie es beabsichtigen.
sudo apt-get remove --purge packagenames
Dies läutert packagenames
; Unter der Annahme, dass packagenames
es sich um eine durch Leerzeichen getrennte Liste von Paketnamen handelt, werden alle gelöscht. Das heißt, sie werden deinstalliert (was das Löschen ihrer Paketdateien erfordert) und ihre systemweiten Konfigurationsdateien werden ebenfalls gelöscht.
Wenn eines der in aufgelisteten Pakete packagenames
nicht installiert ist, hat das Vorhandensein in der Liste keine Auswirkung (außer dass Sie darüber informiert werden, dass es nicht installiert wurde). Wenn Sie Paketnamen auflisten, die nicht der Name eines tatsächlichen Pakets sind, schlägt der Befehl mit einem Fehler fehl .unable to locate packagename
sudo apt-get purge purge packagenmaes
Wenn Sie eines der Vorkommen purge
in diesem Befehl entfernen , entspricht es dem vorherigen. Derzeit wird versucht, ein aufgerufenes Paket purge
und auch die in aufgeführten Pakete zu löschen packagenames
. Da purge
es sich nicht um den Namen eines Pakets handelt, schlägt dies mit einer Fehlermeldung fehl.
sudo apt-get remove packagenames
Dadurch werden die in aufgelisteten Pakete entfernt packagenames
, wodurch ihre Paketdateien gelöscht werden. Dadurch werden die systemweiten Konfigurationsdateien nicht gelöscht (da es sich lediglich um ein Entfernen und nicht um ein Löschen handelt).
sudo apt-get autoremove
Dadurch werden automatisch installierte Pakete deinstalliert, für die keine manuell installierten Pakete mehr vorhanden sind. Dies beinhaltet das Löschen der Paketdateien, nicht jedoch der systemweiten Konfigurationsdateien (dh das Entfernen, aber keine Löschung ).
Für weitere Informationen zur Verwendung apt-get
empfehle ich die Handbuchseite . Weitere allgemeine Informationen finden Sie in diesem Handbuch .