Quando useresti apt-get remove su apt-get autoremove?


16

Comprendo che apt-get removerimuove i pacchetti ed apt-get autoremoveè rimuovere tutti i pacchetti installati per soddisfare una dipendenza per un determinato pacchetto. Quindi, ad esempio, se ho installato LibreOffice e aveva dipendenze da dire Java e installato come parte dell'installazione quando eseguo il comando apt-get libreoffice, perché dovrei eseguire il comando apt-get remove libreofficeseguito da apt-get autoremove? Non riesco semplicemente a eseguire il comando apt-get autoremove libreoffice? O è la combinazione di apt-get removee apt-get autoremoveper uno scopo diverso?

Risposte:


11

Dipende da quanto ti fidi del tracker di dipendenza. Sebbene quasi sempre corretto, ci sono momenti in cui vorresti che rimanga una dipendenza, in particolare quando sei uno sviluppatore o un utente esperto che installa software che non si trova nel repository.

Se installi sempre software tramite apt-get, senza eccezioni, e ti fidi che tutte le dipendenze siano corrette (come in genere sono), puoi utilizzare apt-get autoremovee ottenere una piccola quantità di spazio su disco e un'esposizione ridotta a potenziali falle di sicurezza avendo rimuove i pacchetti che non hanno più pacchetti che ne hanno bisogno.

Ma se si installa il software manualmente o si sviluppa software o non si desidera affrontare un possibile errore di dipendenza, probabilmente non utilizzare autoremove per cancellare i pacchetti potenzialmente inutilizzati è probabilmente la scelta più sicura. Indipendentemente dal fatto che tu usi apt-get autoremoveo meno ogni tanto, rimuoverai sempre il software usandoapt-get remove Package

Ad esempio, se installo AwesomePackage, può dipendere da AwesomeLibrary, e quindi AwesomeLibraryverrà installato automaticamente come dipendenza . Quando rimuovo AwesomePackageusando autoremove, purché nessun altro pacchetto abbia AwesomeLibraryuna dipendenza, verrà disinstallato. Ma se SuperPackageanche richiedesse AwesomeLibrary, o se avessi installato AwesomeLibraryesplicitamente me stesso piuttosto che farlo entrare automaticamente come dipendenza ( apt-get install AwesomeLibrary), allora autoremove non se ne sarebbe liberato.

La ragione per cui non è l'impostazione predefinita è che avere AwesomeLibrarysul sistema, inutilizzato, è un problema molto minore. Non causerà quasi mai problemi e la maggior parte delle dipendenze non occupa molto spazio. Ci sono eccezioni, ma i tempi in cui si rimuove una dipendenza causeranno problemi più numerosi di quelli in cui si risolverà o si eviterà un problema.


Scusa Myrddin Emrys. Mi hai perso lì. Fammi provare a capire cosa hai detto. Quindi, ad esempio, se avessi installato libreoffice usando apt-get, avrebbe installato un sacco di dipendenze supponendo che non le avessi già installate. Ora, se decido di sbarazzarmi di LibreOffice, suppongo che apt-get remove libreoffice
scapperei

Se volessi che le dipendenze installate rimanessero, è corretto? Se volessi liberarmi di libreoffice e delle sue dipendenze associate supponendo che non fossero utilizzate da un altro programma, lo prenderei avrei eseguito il comando apt-get autoremovelibreoffice? È corretto?
PeanutsMonkey

Questo è assolutamente corretto @PeanutsMonkey. Autoremove rimuoverà anche altri pacchetti da cui dipendeva il pacchetto denominato, se non sono più richiesti da nulla e non sono stati installati separatamente appositamente.
Myrddin Emrys

In realtà, ciò non è assolutamente corretto; Ho avuto una sintassi errata nella mia risposta (come ha sottolineato @cooper). Ho corretto questo nella risposta sopra. apt-get autoremoveè un comando separato da apt-get remove Package, mi scuso per la disinformazione iniziale.
Myrddin Emrys

Grazie Myrddin Emrys. Scusa se sono un n00b. Quando lo dici tu There are exceptions, but the times when removing a dependancy will cause problems outnumber the times when it will solve or prevent a problem. Cosa intendi esattamente?
PeanutsMonkey,

12

È possibile trovare la descrizione di rimuovere , autoremove , spurgo , pulito e autoclean , così come la sintassi nelle pagine di manuale per apt-get: man apt-get.

Se non sei ancora sicuro dopo averlo letto, però (ero) il modo migliore per chiarirlo è provarlo.

Di seguito è riportato un esempio di un albero delle dipendenze completo per vim :

vim-dependency-albero

Puoi ottenerlo con:

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

Puoi anche ottenere un elenco delle dipendenze immediate usando apt-cache depends(vedi Dichiarazione delle relazioni tra i pacchetti per maggiori informazioni):

$ 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

Quindi sembra che vim dipenda da un numero di pacchetti, proviamo a installarlo con apt-get installe vediamo cosa succede:

$ 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

Per far funzionare vim abbiamo bisogno dei pacchetti vim-common e vim-runtime e ceapt-get ne occuperemo noi. Possiamo verificarlo con dpkg -s pkg...(vedi man dpkgper maggiori informazioni sugli stati):

$ 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

Proprio come abbiamo verificato da cosa dipende Vim , possiamo anche controllare quali altre cose dipendono dagli stessi pacchetti che utilizzano Vimapt-cache rdepends . Dovremmo vedere vim tra (forse) altre cose:

$ 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

Continuiamo con l'installazione. Una volta installato vim possiamo sperimentare la differenza tra remove e autoremove . Proviamo a rimuovere prima:

$ 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 removerimuoverebbe quindi VIM ma non le sue dipendenze lasciandole indietro . Proviamo ora a rimuovere una delle dipendenze di vim :

$ 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

Ciò eliminerebbe la dipendenza vim-runtime così come il pacchetto che dipende da esso , vale a dire vim . Per curiosità, vediamo cosa accadrebbe se rimuovessimo una dipendenza che è più bassa sull'albero delle dipendenze di vim :

$ 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

Rimuoverebbe Vim e tante chicche!

Procediamo apt-get remove vimquindi. Una volta fatto, dovremmo avere degli avanzi. Se ora proviamo autoremove possiamo vedere:

$ 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

Questi sono i due pacchetti apt-get removelasciati indietro anche se nient'altro ne aveva bisogno.

Sperimentato con apt-get 0.9.7.9.


4

Secondo questo: http://ubuntuforums.org/showthread.php?t=996053 autoremove rimuoverà tutti i pacchetti di cui non hanno bisogno altri programmi. Dovresti fare 'apt-get autoremove', non 'apt-get autoremove libreoffice'. Anche la rimozione di pacchetti non necessari non solo libera un po 'di spazio su disco, ma riduce la "superficie di attacco" del sistema.


Vedo che le librerie inutilizzate possono essere un vettore di attacco, ma sembra essere un problema molto piccolo per me, rispetto al dolore significativo della rimozione impropria (che ho visto accadere più di una volta). Grazie per le informazioni sull'utilizzo tuttavia ... In realtà ho descritto autoremove in modo errato (non lo uso da solo, quindi non me ne sono reso conto), grazie per la correzione.
Myrddin Emrys

3

removeeliminerà il programma specificato mentre autoremoveincluderà dipendenze altrimenti non più utilizzate.

Inoltre, se desideri liberare spazio sull'unità, un comando utile e sicuro è ...

sudo apt-get clean

Ciò rimuove la cache aptitude in / var / cache / apt / archives


Mi dispiace essere un tale n00b ma non lo seguo del tutto. Quindi se apt-get remove libreofficeeseguo il comando , prendo che rimuoverà semplicemente libreoffice. È giusto? Tuttavia, se apt-get autoremove libreofficeeseguo il comando , ciò rimuove non solo libreoffice ma anche le sue dipendenze?
PeanutsMonkey

È corretto. Quindi diciamo che installo neverballe neverballdipende da un pacchetto chiamato libisfun. Se io apt-get remove neverballpoi rimuoverà solo il neverballpacchetto. Se lo farò apt-get autoremove neverballpoi rimuoverà neverballe libisfunse libisfunnon dipende da qualsiasi altra applicazione.
Kobaltz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.