¿Cuándo usarías apt-get remove sobre apt-get autoremove?

16

Entiendo que apt-get removeelimina los paquetes y apt-get autoremovees eliminar los paquetes que se instalaron para cumplir con una dependencia para un paquete determinado. Entonces, por ejemplo, si instalé LibreOffice y tenía dependencias de, por ejemplo, Java y lo instalé como parte de la instalación cuando ejecuto el comando apt-get libreoffice, ¿por qué ejecutaría el comando apt-get remove libreofficeseguido de apt-get autoremove? ¿No puedo simplemente ejecutar el comando apt-get autoremove libreoffice? ¿O es la combinación de apt-get removey apt-get autoremovepara un propósito diferente?

CacahuetesMonkey
fuente

Respuestas:

11

Depende de cuánto confíes en el rastreador de dependencia. Aunque casi siempre es correcto, hay momentos en los que desearía que permaneciera una dependencia, particularmente cuando es un desarrollador o un usuario avanzado que instala software que no está en el repositorio.

Si siempre instala el software a través de apt-get, sin excepción, y confía en que todas las dependencias sean correctas (lo que generalmente son), entonces puede usar apt-get autoremovey ganar una pequeña cantidad de espacio en el disco y una exposición reducida a posibles agujeros de seguridad al tener elimina los paquetes que ya no tienen paquetes que los necesiten.

Pero si instala el software manualmente, o desarrolla software, o no desea lidiar con un posible error de dependencia, entonces no usar autoremove para borrar paquetes potencialmente no utilizados es probablemente la opción más segura. Independientemente de si usa de apt-get autoremovevez en cuando o no, siempre eliminará el software usandoapt-get remove Package

Por ejemplo, si instalo AwesomePackage, puede depender AwesomeLibraryy, por AwesomeLibrarylo tanto , se instalará automáticamente como una dependencia . Cuando elimine el AwesomePackageuso de Autoremove, siempre y cuando ningún otro paquete tenga AwesomeLibraryuna dependencia, también se desinstalará. Pero si SuperPackagetambién lo requiere AwesomeLibrary, o si me hubiera instalado AwesomeLibraryexplícitamente a mí mismo en lugar de hacerlo automáticamente como una dependencia ( apt-get install AwesomeLibrary), entonces la eliminación automática no lo eliminaría.

La razón por la que no es el valor predeterminado es que tener AwesomeLibraryen el sistema, sin usar, es un problema muy pequeño. Casi nunca causará problemas, y la mayoría de las dependencias no ocupan mucho espacio. Hay excepciones, pero los momentos en que eliminar una dependencia causarán problemas superan en número a los que resolverán o evitarán un problema.

Myrddin Emrys
fuente
Lo siento, Myrddin Emrys. Me perdiste allí. Déjame intentar entender lo que dijiste. Entonces, por ejemplo, si instalé libreoffice usando apt-get, instalaría un montón de dependencias suponiendo que no las tuviera instaladas. Ahora, si luego decido deshacerme de la oficina libre, supongo que correríaapt-get remove libreoffice
PeanutsMonkey
Si quería que las dependencias que instaló permanecieran, ¿es correcto? Si quisiera deshacerme tanto de libreoffice como de sus dependencias asociadas, suponiendo que no fuera utilizado por otro programa, supongo que ejecutaría el comando apt-get autoremovelibreoffice. ¿Es eso correcto?
PeanutsMonkey
Eso es absolutamente correcto @PeanutsMonkey. Autoremove también eliminará otros paquetes de los que dependía el paquete nombrado, si ya no son necesarios para nada y no se instalaron por separado a propósito.
Myrddin Emrys
En realidad, eso no es absolutamente correcto; Tenía una sintaxis incorrecta en mi respuesta (como señaló @cooper). He corregido esto en la respuesta anterior. apt-get autoremovees un comando separado de apt-get remove Package, me disculpo por la desinformación inicial.
Myrddin Emrys
Gracias Myrddin Emrys. Lo siento si estoy siendo un n00b. Cuando dices eso There are exceptions, but the times when removing a dependancy will cause problems outnumber the times when it will solve or prevent a problem. ¿Qué quieres decir exactamente?
PeanutsMonkey
12

Usted puede encontrar la descripción de quitar , autoremove , purga , limpia y autoclean , así como la sintaxis en las páginas de manual de apt-get: man apt-get.

Si aún no está seguro después de leerlo, la mejor manera de aclararlo es probarlo.

A continuación se muestra un ejemplo de un árbol de dependencia completa para vim :

vim-dependency-tree

Puedes conseguirlo con:

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

También puede obtener una lista de las dependencias inmediatas utilizando apt-cache depends(consulte Declarar relaciones entre paquetes para obtener más información):

$ 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

Parece que vim depende de varios paquetes, intentemos instalarlo apt-get instally veamos qué sucede:

$ 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

Para que vim funcione, necesitamos los paquetes vim-common y vim-runtime y apt-getnos encargaremos de ello. Podemos verificarlo con dpkg -s pkg...(consulte man dpkgpara obtener más información sobre los estados):

$ 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

Así como verificamos de qué depende vim , también podemos verificar qué otras cosas dependen de los mismos paquetes que usa vimapt-cache rdepends . Deberíamos ver vim entre (posiblemente) otras cosas:

$ 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

Continuemos con la instalación. Una vez que hayamos instalado vim , podemos experimentar la diferencia entre eliminar y eliminar automáticamente . Intentemos eliminar primero:

$ 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 removeluego eliminaría vim pero no sus dependencias dejándolos atrás . Ahora intentemos eliminar una de las dependencias de 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

Esto eliminaría la dependencia vim-runtime , así como el paquete que depende de él , es decir, vim . Por curiosidad, veamos qué sucedería si eliminamos una dependencia que es inferior en el árbol de dependencia de 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

¡Eliminaría vim y muchas golosinas!

Procedamos con apt-get remove vimentonces. Una vez que lo hayamos hecho, deberíamos tener algunas sobras. Si ahora tratamos de autoremove podemos ver:

$ 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

Estos son los dos paquetes que apt-get removequedan, aunque nada más los necesita.

Experimentado con apt-get 0.9.7.9.

Johnny Baloney
fuente
4

De acuerdo con esto: http://ubuntuforums.org/showthread.php?t=996053 autoremove eliminará todos los paquetes que otros programas no necesitan. Haría 'apt-get autoremove', no 'apt-get autoremove libreoffice'. Además, la eliminación de paquetes innecesarios no solo libera un poco de espacio en disco, sino que reduce la "superficie de ataque" de su sistema.

conspiritech
fuente
Puedo ver que las bibliotecas no utilizadas pueden ser un vector de ataque, pero parece ser un problema muy pequeño para mí, en relación con el dolor significativo de la eliminación incorrecta (que he visto suceder más de una vez). Sin embargo, gracias por la información sobre el uso ... En realidad, he estado describiendo el movimiento automático incorrectamente (no lo uso yo mismo, así que no me di cuenta), gracias por la corrección.
Myrddin Emrys
3

removeeliminará el programa especificado mientras autoremoveque incluirá dependencias que de otro modo ya no se usarían.

Además, si desea liberar espacio en el disco, un comando útil y seguro es ...

sudo apt-get clean

Eso elimina el caché de aptitud en / var / cache / apt / archives

Kobaltz
fuente
Perdón por ser tan n00b pero no sigo eso. Entonces, si ejecuto el comando apt-get remove libreoffice, supongo que simplemente eliminará libreoffice. ¿Está bien? Sin embargo, si ejecuto el comando apt-get autoremove libreoffice, ¿eso no solo eliminaría libreoffice sino también sus dependencias?
PeanutsMonkey
Eso es correcto. Digamos que instalo neverbally neverballdepende de un paquete llamado libisfun. Si lo hago apt-get remove neverball, eliminará solo el neverballpaquete. Si apt-get autoremove neverballa continuación, se eliminará neverbally libisfunsi libisfunno es dependiente en cualquier otra aplicación.
kobaltz