Wann würden Sie apt-get remove über apt-get autoremove verwenden?

16

Ich verstehe, dass apt-get removePakete entfernt werden und apt-get autoremovealle Pakete entfernt werden sollen, die installiert wurden, um eine Abhängigkeit für ein bestimmtes Paket zu erfüllen. Wenn ich zum Beispiel LibreOffice installiert habe und es Abhängigkeiten von Java hat und es als Teil der Installation installiert, wenn ich den Befehl ausführe apt-get libreoffice, warum sollte ich dann den Befehl apt-get remove libreofficegefolgt von ausführen apt-get autoremove? Kann ich den Befehl nicht einfach ausführen apt-get autoremove libreoffice? Oder ist die Kombination von apt-get removeund apt-get autoremovefür einen anderen Zweck?

PeanutsMonkey
quelle

Antworten:

11

Es hängt davon ab, wie sehr Sie dem Abhängigkeits-Tracker vertrauen. Obwohl dies fast immer korrekt ist, möchten Sie manchmal eine Abhängigkeit, insbesondere wenn Sie Entwickler oder Power-User sind, die Software installieren, die sich nicht im Repository befindet.

Wenn Sie Software ausnahmslos über apt-get installieren und darauf vertrauen, dass alle Abhängigkeiten korrekt sind (was normalerweise der Fall ist), können Sie apt-get autoremoveeine geringe Menge an Speicherplatz und eine geringere Gefährdung durch potenzielle Sicherheitslücken nutzen und gewinnen, indem Sie über Folgendes verfügen Es entfernt Pakete, die keine Pakete mehr haben, die sie benötigen.

Wenn Sie die Software jedoch manuell installieren oder entwickeln oder einen möglichen Abhängigkeitsfehler nicht beheben möchten, ist es wahrscheinlich die sicherere Wahl, nicht automatisch zu entfernen, um möglicherweise nicht verwendete Pakete zu löschen. Unabhängig davon, ob Sie ab apt-get autoremoveund zu etwas verwenden oder nicht, entfernen Sie Software immer mitapt-get remove Package

Wenn ich zum Beispiel installieren AwesomePackage, kann es davon abhängen AwesomeLibrary, und somit AwesomeLibrarywird erhalten automatisch als installiert dependancy . Wenn ich AwesomePackagemit Autoremove entferne , wird es ebenfalls deinstalliert, solange kein anderes Paket AwesomeLibraryeine Abhängigkeit hat . Aber wenn es SuperPackageauch erforderlich AwesomeLibraryist oder wenn ich es AwesomeLibraryexplizit selbst installiert hätte, anstatt es automatisch als eine Abhängigkeit ( apt-get install AwesomeLibrary) einspielen zu lassen, würde autoremove es nicht loswerden.

Der Grund dafür, dass dies nicht die Standardeinstellung ist, ist, dass das Vorhandensein von nicht verwendeten Informationen AwesomeLibraryauf dem System ein sehr untergeordnetes Problem ist. Es wird fast nie Probleme verursachen und die meisten Abhängigkeiten nehmen nicht viel Platz ein. Es gibt Ausnahmen, aber die Zeiten, in denen eine Abhängigkeit entfernt wird, sind höher als die Zeiten, in denen ein Problem behoben oder verhindert wird.

Myrddin Emrys
quelle
Entschuldigung Myrddin Emrys. Du hast mich dort verloren. Also lass mich versuchen zu verstehen, was du gesagt hast. Wenn ich libreoffice zum Beispiel mit apt-get installiert habe, werden eine ganze Reihe von Abhängigkeiten installiert, vorausgesetzt, ich habe sie noch nicht installiert. Wenn ich mich dann entscheide, libreoffice loszuwerden, gehe ich davon aus, dass ichapt-get remove libreoffice
PeanutsMonkey
Wenn ich wollte, dass die installierten Abhängigkeiten erhalten bleiben, ist das richtig? Wenn ich mich von libreoffice und den damit verbundenen Abhängigkeiten befreien wollte, vorausgesetzt, dass sie nicht von einem anderen Programm verwendet wurden, würde ich den Befehl ausführen apt-get autoremovelibreoffice. Ist das korrekt?
PeanutsMonkey
Das ist absolut richtig @PeanutsMonkey. Autoremove entfernt auch andere Pakete , von denen das genannte Paket abhängt, wenn sie von nichts mehr benötigt werden und nicht absichtlich separat installiert wurden.
Myrddin Emrys
Eigentlich ist das nicht absolut richtig; Ich hatte eine falsche Syntax in meiner Antwort (wie @cooper hervorhob). Ich habe dies in der obigen Antwort korrigiert. apt-get autoremoveIst ein separater Befehl von apt-get remove Package, entschuldige ich mich für die anfängliche Fehlinformation.
Myrddin Emrys
Vielen Dank Myrddin Emrys. Entschuldigung, wenn ich ein n00b bin. Wenn du das sagst There are exceptions, but the times when removing a dependancy will cause problems outnumber the times when it will solve or prevent a problem. Was genau meinst du?
PeanutsMonkey
12

Sie können die Beschreibung finden entfernen , autoremove , Säuberung , sauber und Autoclean sowie die Syntax in dem Man - Pages für apt-get: man apt-get.

Wenn Sie jedoch nach dem Lesen immer noch unsicher sind, ist es der beste Weg, dies zu klären, es auszuprobieren.

Unten sehen Sie ein Beispiel für einen vollständigen Abhängigkeitsbaum für vim :

VIM-Abhängigkeitsbaum

Sie können es bekommen mit:

apt-rdepends -d vim > vim.dot
dotty vim.dot

Sie können auch eine Liste der unmittelbaren Abhängigkeiten abrufen, indem apt-cache dependsSie Folgendes verwenden ( weitere Informationen finden Sie unter Deklarieren von Beziehungen zwischen Paketen ):

$ apt-cache depends vim
vim
  Depends: vim-common
  Depends: vim-runtime
  Depends: libacl1
  Depends: libc6
  Depends: libgpm2
  Depends: libselinux1
  Depends: libtinfo5
  Suggests: <ctags>
    exuberant-ctags
  Suggests: vim-doc
  Suggests: vim-scripts

So wie es aussieht, hängt vim von einer Reihe von Paketen ab, versuchen wir es mit zu installieren apt-get installund sehen, was passiert:

$ sudo apt-get install vim
...
The following extra packages will be installed:
  vim-common vim-runtime
Suggested packages:
  ctags vim-doc vim-scripts
The following NEW packages will be installed:
  vim vim-common vim-runtime
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
After this operation, 25.1 MB of additional disk space will be used.
Do you want to continue [Y/n]? n

Um vim zum Laufen zu bringen, benötigen wir die Pakete vim-common und vim-runtime und apt-getkümmern uns darum. Wir können dies überprüfen mit dpkg -s pkg...(siehe man dpkgfür weitere Informationen zu Status):

$ sudo dpkg -s libc6
Package: libc6
Status: install ok installed        // we already have it, no need to install

$ sudo dpkg -s vim-common
Package: vim-common
Status: deinstall ok config-files   // we don't have it, have to install

So wie wir geprüft haben, wovon vim abhängt, können wir auch prüfen, welche anderen Dinge von denselben Paketen abhängen, die vim verwendet apt-cache rdepends. Wir sollten vim unter (möglicherweise) anderen Dingen sehen:

$ apt-cache rdepends vim-common
vim-common
Reverse Depends:
  vim-latexsuite
  vim-addon-manager
  vim-tiny
  vim-nox
  vim-gtk
  vim-gnome
 |vim-dbg
  vim-athena
  vim                               // there it is

Fahren wir mit der Installation fort. Sobald wir vim installiert haben, können wir den Unterschied zwischen dem Entfernen und dem automatischen Entfernen feststellen . Versuchen wir zuerst zu entfernen :

$ sudo apt-get remove vim
...
The following packages will be REMOVED:
  vim
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 1,922 kB disk space will be freed.
Do you want to continue [Y/n]? n

apt-get removewürde dann vim entfernen, aber nicht seine Abhängigkeiten, die sie zurücklassen . Versuchen wir nun, eine der Abhängigkeiten des Vims zu entfernen :

$ sudo apt-get remove vim-runtime
...
The following packages will be REMOVED:
  vim vim-runtime
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
After this operation, 24.8 MB disk space will be freed.
Do you want to continue [Y/n]? n

Dies würde die Abhängigkeit entfernen vim-Laufzeit sowie das Paket , das davon abhängt , nämlich vim . Aus Neugier sehen wir uns an, was passieren würde, wenn wir eine Abhängigkeit entfernen würden, die niedriger im Abhängigkeitsbaum von vim liegt :

$ sudo apt-get remove libgpm2
...
The following packages were automatically installed and are no longer required:
  libgtkglext1 libqtassistantclient4 libtiff-tools libtiff5 python-qt4
  python-sip python-sqlalchemy python-sqlalchemy-ext
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  anki cheese gimp gimp-gmic gimp-plugin-registry gnome-control-center      // !
  gnome-media gnome-video-effects gstreamer0.10-plugins-good libaa1         // !
  libcheese-gtk21 libcheese3 libgpm2 mplayer quodlibet vim vlc w3m          // !
0 upgraded, 0 newly installed, 18 to remove and 0 not upgraded.
After this operation, 63.1 MB disk space will be freed.
Do you want to continue [Y/n]? n

Es würde Vim und viele Goodies entfernen!

apt-get remove vimDann machen wir weiter . Sobald wir es geschafft haben, sollten wir ein paar Reste haben. Wenn wir jetzt versuchen, automatisch zu entfernen , können wir sehen:

$ sudo apt-get autoremove
...
The following packages will be REMOVED:
  vim-common vim-runtime
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
After this operation, 23.2 MB disk space will be freed.
Do you want to continue [Y/n]? y

Dies sind die beiden Pakete, apt-get removedie zurückgelassen wurden, obwohl nichts anderes sie brauchte.

Experimentiert mit apt-get 0.9.7.9.

Johnny Baloney
quelle
4

Danach: http://ubuntuforums.org/showthread.php?t=996053 entfernt automatisch alle Pakete, die andere Programme nicht benötigen. Sie würden "apt-get autoremove" ausführen, nicht "apt-get autoremove libreoffice". Das Entfernen nicht benötigter Pakete spart nicht nur Speicherplatz, sondern verringert auch die Angriffsfläche Ihres Systems.

Verschwörung
quelle
Ich kann sehen, dass ungenutzte Bibliotheken ein Angriffsvektor sein können, aber es scheint für mich ein sehr untergeordnetes Problem zu sein, im Vergleich zu den erheblichen Schmerzen durch unsachgemäßes Entfernen (die ich mehr als einmal gesehen habe). Vielen Dank für die Informationen zur Verwendung. Ich habe die automatische Entfernung jedoch nicht ordnungsgemäß beschrieben (ich verwende sie nicht selbst, habe es also nicht bemerkt). Vielen Dank für die Korrektur.
Myrddin Emrys
3

removelöscht das angegebene Programm autoremove, wobei Abhängigkeiten enthalten sind, die sonst nicht mehr verwendet werden.

Wenn Sie Speicherplatz freigeben möchten, ist ein nützlicher und sicherer Befehl:

sudo apt-get clean

Dadurch wird der Aptitude-Cache in / var / cache / apt / archives entfernt

Kobaltz
quelle
Tut mir leid, dass ich so ein n00b bin, aber ich folge dem nicht ganz. Wenn ich also den Befehl apt-get remove libreofficeausführe, gehe ich davon aus, dass dadurch einfach libreoffice entfernt wird. Ist das richtig? Wenn ich jedoch den Befehl ausführen apt-get autoremove libreofficewürde, würde das nicht nur libreoffice entfernen, sondern auch seine Abhängigkeiten?
PeanutsMonkey
Das ist richtig. Nehmen wir also an, ich installiere neverballund neverballhänge von einem Paket namens ab libisfun. Wenn ich apt-get remove neverballdann nur das neverballPaket entferne . Wenn ich apt-get autoremove neverballes dann entferne neverballund libisfunwenn libisfunes nicht von irgendeiner anderen Anwendung abhängig ist.
Kobaltz