¿Cuál es la diferencia entre estos comandos?
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
fuente
¿Cuál es la diferencia entre estos comandos?
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
desinstala los paquetes que llevan su nombre.autoremove
desinstala todos los paquetes instalados automáticamente que ya no son necesarios. Es incorrecto enumerar los nombres de los paquetes después autoremove
; serán ignorados (y todos los paquetes elegibles serán eliminados), lo que probablemente no sea lo que pretendes.--purge
hace que también se eliminen los archivos de configuración de todo el sistema asociados con la eliminación de paquetes. Debe ir acompañado de un comando, como remove
o autoremove
. La --purge
bandera modifica la acción de un comando; No actúa por sí solo.purge
significa lo mismo que --purge remove
(que es lo mismo que remove --purge
). Es incorrecto decir purge
dos veces; el segundo purge
se interpreta como el nombre de un paquete que se purge
d, que probablemente no sea lo que pretendes.Para comprender qué hacen esos comandos y en qué se diferencian, es útil (y probablemente incluso esencial) comprender dos conceptos:
Un paquete instalado se instala manual o automáticamente .
Cuando especifica un paquete para la instalación, y está instalado, se instala manualmente .
Pero también se pueden instalar otros paquetes. La mayoría de los paquetes tienen dependencias, otros paquetes que deben instalarse para que esos paquetes funcionen según lo previsto. Cuando instala un paquete, se instalan sus dependencias (es decir, los otros paquetes de los que depende), excepto los que se instalaron anteriormente.
Cuando un paquete no especifica que se instalará, sino que se instala como una dependencia de un paquete que especificó para instalar, se instala automáticamente .
Tenga en cuenta que cuando tiene dos paquetes instalados y uno de ellos es una dependencia de otro, eso no significa que la dependencia se instala automáticamente. También es posible que la dependencia se haya instalado manualmente (es decir, especificado por usted, por ejemplo, instalado antes o al mismo tiempo que el paquete que depende de él).
Finalmente:
apt-mark
comando), sin importar cómo o bajo qué circunstancias se instalaron realmente.Por lo general, para cada paquete instalado automáticamente, tendrá al menos un paquete instalado manualmente que depende de él (y que hizo que se instalara automáticamente). Sin embargo, si luego elimina todos los paquetes instalados manualmente que dependen de un paquete instalado automáticamente, el paquete instalado automáticamente ya no será necesario, pero aún se instalará.
apt-get autoremove
elimina los paquetes instalados automáticamente que ya no tienen paquetes instalados manualmente dependiendo de ellos.
Un paquete proporciona archivos que pretenden ser y seguir siendo los mismos en todos los sistemas donde está instalada esa versión de ese paquete. Dichos archivos proporcionan ejecutables, recursos, documentación y otros "activos" para los programas instalados. Por lo general, los llamamos "los archivos" que proporciona un paquete.
Pero un paquete también proporciona otros archivos, que están destinados (posiblemente) a ser cambiados. Estos se denominan archivos de configuración global (o de todo el sistema). Casi siempre se instalan en el /etc
directorio, y se pueden modificar automática y manualmente para cambiar el comportamiento de los programas instalados. Por ejemplo, sudo
tiene un archivo de configuración /etc/sudoers
y un directorio para más archivos de configuración /etc/sudoers.d
. Ese archivo, y cualquier archivo agregado a ese directorio, especifican quién puede usar sudo
de qué manera.
Por lo general, se desea que desinstalar un paquete y luego volver a instalarlo no cambie la forma en que se comporta (a menos que los archivos de su paquete estén dañados y, por supuesto, por eso lo reinstaló). Por lo tanto, normalmente cuando se desinstala un paquete, sus archivos de paquete se eliminan pero sus archivos de configuración de todo el sistema se dejan intactos.
Cuando desinstala un paquete sin especificar que sus archivos de configuración de todo el sistema también deben eliminarse, eso se denomina "eliminar" el paquete.
Si también desea eliminar los archivos de configuración de todo el sistema de un paquete cuando desinstala el paquete, eso se llama "purgar" el paquete.
apt-get remove
eliminará un paquete; es decir, desinstalará el paquete pero dejará los archivos de configuración de todo el sistema.
apt-get purge
purgará un paquete; es decir, desinstalará el paquete y también se asegurará de eliminar sus archivos de configuración de todo el sistema.
Otra forma de purgar paquetes es usar la --purge
bandera. Eso no dice apt-get
qué hacer; en su lugar, modifica qué términos (o "comandos") le remove
dicen que haga. El --purge
indicador hace que las desinstalaciones de paquetes se acompañen de la eliminación de los archivos de configuración de todo el sistema para los paquetes que se desinstalan. En otras palabras, la --purge
bandera convierte las eliminaciones en purgas.
¿Por qué tenemos la --purge
bandera cuando tenemos el purge
comando? Después de todo, no es sudo apt-get --purge remove packagename
equivalente a sudo apt-get purge packagename
. Son equivalentes Lo que --purge
resulta útil es cuando desea modificar el comportamiento de los comandos que no sean remove
.
Por ejemplo, suponga que desea desinstalar paquetes instalados automáticamente que ya no son necesarios (porque ya no hay paquetes instalados manualmente dependiendo de ellos), pero no solo desea eliminar estos paquetes instalados automáticamente, también desea eliminar sus archivos de configuración de todo el sistema. Entonces podrías correr:
sudo apt-get --purge autoremove
Consideremos un uso más de --purge
. Hay una bandera llamada --reinstall
, que convierte las instalaciones en reinstalaciones. Esto quiere decir que, normalmente, cuando intenta instalar un paquete que ya está instalado, no pasará nada o (si el paquete se marca instalado automáticamente), el paquete se marcará como instalado manualmente. Pero con el --reinstall
indicador, la instalación de un paquete que ya está instalado hace que se elimine y luego se vuelva a instalar :
sudo apt-get --reinstall install packagename
Pero suponga que desea eliminar los archivos de configuración de todo el sistema del paquete que está reinstalando. Esto es algo común; cuando un paquete no funciona y no sabe por qué, puede intentar reinstalarlo y también eliminar sus archivos de configuración para que su configuración se restablezca a los valores predeterminados. Para lograr esto, puede ejecutar:
sudo apt-get --purge --reinstall install packagename
La --reinstall
instalación se convierte en la reinstalación (es decir, la eliminación seguida por la instalación), y la --purge
convierte a la parte retirada de la reinstalación en la purga.
Ahora debe quedar claro exactamente qué hacen cada uno de sus apt-get
comandos de ejemplo :
sudo apt-get autoremove --purge packagenames
Esto purga los paquetes instalados automáticamente que ya no tienen paquetes instalados manualmente que dependen de ellos. Es decir, desinstala esos paquetes (lo que implica eliminar sus archivos de paquete) y también elimina sus archivos de configuración de todo el sistema.
Aquí packagenames
no hace nada. En particular, si tenía la intención de eliminar los paquetes cuyos nombres figuran allí, entonces esto no se comportará como lo desea.
sudo apt-get remove --purge packagenames
Esto purga packagenames
; suponiendo que packagenames
sea una lista de nombres de paquetes separados por espacios en blanco, los purgará a todos. Es decir, los desinstalará (lo que implica eliminar sus archivos de paquete) y también eliminará sus archivos de configuración de todo el sistema.
Si alguno de los paquetes enumerados packagenames
no está instalado, su presencia en la lista no tendrá efecto (excepto que se le informará que no se instaló). Si enumera nombres de paquetes que no son el nombre de ningún paquete real, el comando fallará con un error.unable to locate packagename
sudo apt-get purge purge packagenmaes
Si eliminó una de las apariciones de purge
ese comando, sería equivalente a la anterior. Tal como está, intenta purgar un paquete llamado purge
y también purgar los paquetes enumerados en packagenames
. Como purge
no es el nombre de ningún paquete, fallará con un mensaje de error.
sudo apt-get remove packagenames
Esto elimina los paquetes enumerados en packagenames
, lo que implica eliminar sus archivos de paquete. Esto no elimina sus archivos de configuración de todo el sistema (porque es simplemente una eliminación, no una purga).
sudo apt-get autoremove
Esto desinstala los paquetes instalados automáticamente que ya no tienen ningún paquete instalado manualmente que dependa de ellos. Esto implica eliminar sus archivos de paquete, pero no sus archivos de configuración de todo el sistema (es decir, es una eliminación pero no una purga).
Para obtener más información sobre cómo usar apt-get
, recomiendo su página de manual . Para obtener información más general, consulte esta guía .