¿Cuál es la forma correcta de eliminar por completo una aplicación?

477

He buscado en la red esa información y he encontrado diferentes líneas de comando, como estas:

sudo apt-get remove application
sudo apt-get remove application*

sudo apt-get remove --purge application
sudo apt-get remove --purge application*

sudo apt-get purge application
sudo apt-get purge application*

Entonces, ¿cuál es la forma correcta? ¿Es necesario usar ese "*"?

Después de eso, también encontré estos comandos:

sudo updatedb
sudo locate application
sudo rm -rf (file/folder name)
    
pregunta user48949 14.09.2012 - 23:54

8 respuestas

635
  • apt-get remove packagename

    eliminará los binarios, pero no los archivos de configuración o datos del paquete packagename . También dejará intactas las dependencias instaladas durante el tiempo de instalación.

  • apt-get purge packagename o apt-get remove --purge packagename

    eliminará todo del paquete packagename , pero no las dependencias que se instalarán en la instalación. Ambos comandos son equivalentes.

    Especialmente útil cuando quieres 'comenzar de nuevo' con una aplicación porque has estropeado la configuración. Sin embargo, no elimina los archivos de configuración o datos que residen en los directorios de inicio de los usuarios, generalmente en carpetas ocultas. No hay una manera fácil de eliminarlos también.

  • apt-get autoremove

    elimina paquetes huérfanos, es decir, paquetes instalados que solían instalarse como dependencia, pero ya no están. Úselo después de eliminar un paquete que tenía instaladas dependencias que ya no le interesan.

  • aptitude remove packagename o aptitude purge packagename (del mismo modo)

    también intentará eliminar otros paquetes que fueron requeridos por packagename pero que no son requeridos por ningún paquete restante. Tenga en cuenta que aptitude solo recuerda la información de dependencia para los paquetes que ha instalado.

Y muchos más existen. Los comandos de dpkg de nivel inferior se pueden usar (avanzados) o herramientas de GUI como Muon, Synaptic, Software Center, etc. No hay una sola 'forma correcta' de eliminar aplicaciones o realizar otras tareas interactuando con la administración de paquetes .

La lista que encontraste son solo ejemplos. Asegúrese de comprender los significados y probar lo que quiere hacer antes de aceptar la acción (debe presionar Y antes de realizar las acciones tal como se propone).

La versión de asterisco en la pregunta es probablemente incorrecta ; apt-get acepta una expresión regular y no un patrón global como el shell. Entonces, ¿qué pasa con

sudo apt-get remove application*

es el siguiente:

  1. El shell intenta expandir application* mirando los archivos en el directorio actual. Si (como suele ser el caso) no encuentra nada, devuelve el patrón glob inalterado (suponiendo bash con comportamiento predeterminado aquí --- zsh saldrá el error).

  2. apt-get eliminará los paquetes cuyo nombre contiene una cadena que satisfaga la expresión regular application* , es decir, applicatio seguido de un número arbitrario de n : applicatio , application , applicationn , libapplicatio , etc.

  3. Para ver cómo esto puede ser peligroso, prueba (sin root para mayor seguridad) apt-get -s remove "wine*" ( -s simulará la cosa en lugar de hacerlo) --- dirá que va a eliminar todos los paquetes que tiene "ganar" en su nombre y el dependiente, casi todo el sistema ...

Probablemente, el comando que se quiso decir es realmente

 sudo apt-get remove "^application.*"

(tenga en cuenta las comillas y el punto) que eliminará todos los paquetes cuyo nombre comience con application .

Estos comandos,

sudo updatedb                  # <-- updates the locate database (index). harmless
sudo locate application        # <-- locates the file 'application'. harmless
sudo rm -rf (file/folder name) # <-- removes files/dirs recursively. dangerous.

están completamente fuera del alcance de la administración de paquetes. ¡No elimine los archivos que pertenecen a los paquetes sin usar el administrador de paquetes! Se confundirá y es la forma incorrecta de hacer las cosas.

Si no sabe a qué paquete pertenece un archivo, intente esto:

dpkg -S /path/to/file
    
respondido por el gertvdijk 15.09.2012 - 00:04
92

Para Ubuntu 12.04 y quizás más, el método correcto es:

sudo apt-get --purge autoremove packagename

Como se detalla aquí .

No use packagename* ya que puede eliminar paquetes no deseados y causar más problemas de los que resuelve. O, si es necesario, al menos ejecutarlo con un indicador -s , --simulate , --dry-run primero para ver exactamente lo que hará sin hacerlo.

    
respondido por el Kurtosis 20.11.2013 - 21:01
17

Puede usar este comando:

sudo apt-get purge --auto-remove packagename

Purgará los paquetes necesarios junto con las dependencias que se instalen con esos paquetes. La opción --auto-remove (que es un alias de autoremove ) funciona de forma similar a sudo apt-get autoremove . Al usar este comando, podemos ejecutar un solo comando:

sudo apt-get purge --auto-remove packagename

En lugar de:

sudo apt-get purge packagename
sudo apt-get autoremove
    
respondido por el pl_rock 16.09.2015 - 22:08
7

Puede usar de forma segura sudo apt-get remove --purge application o sudo apt-get remove applications 99% del tiempo. Cuando utiliza el indicador purge , simplemente elimina todos los archivos de configuración. Que puede o no ser lo que desea, dependiendo de si desea reinstalar dicha aplicación. El application* coincidirá con todas las aplicaciones que comienzan con application , que generalmente son complementos, funciones adicionales, etc. de la aplicación principal que está eliminando. es decir,

sudo apt-get remove gedit*

eliminaría gedit , gedit-plugins y gedit-common . Por lo general, no es necesario hacer esto, porque la mayoría de los complementos / programas asociados dependen de la aplicación principal, y se eliminarán automáticamente (o se marcarán para su eliminación) cuando desinstale la aplicación principal.

Su último comando es simplemente eliminar las sobras de las aplicaciones que se sabe que tienen desinstaladores desordenadas, y solo está eliminando los restos de la aplicación.

    
respondido por el reverendj1 15.09.2012 - 00:05
5

Recibí algunos mensajes de error al eliminar un paquete, la única forma en que descubrí que funcionó fue esta:

mv /var/lib/dpkg/info/package.* /tmp/
dpkg --remove --force-remove-reinstreq package

Descubrí que aunque solo usaba

dpkg --remove --force-remove-reinstreq package

no elimina el paquete, me muestra la ruta correcta al archivo para moverlo:

mv /var/lib/dpkg/info/package.* /tmp/

Sustituye el paquete con el nombre de tu aplicación. Use sudo en Ubuntu, conviértase en root en Debian.

    
respondido por el DangerFireBob 26.02.2015 - 10:26
3

Encontré este comando en internet.

dpkg --purge --force-depends application

enlace .

    
respondido por el vrcmr 15.09.2012 - 00:10
1

Depende de la aplicación que quieras eliminar. Siempre asegúrese de verificar sus dependencias antes de emitir el comando yes. Cuando eliminas algo por línea de comandos, a veces muestra un puñado de bibliotecas que ya no se necesitan. Estos se pueden eliminar con apt-get autoremove.

Tenga en cuenta que al usar comandos como sudo apt-get eliminar --purge applicationname puede eliminar algunas dependencias que otras aplicaciones necesitan y, como tales, pueden dañar su sistema.

Si desea hacerlo de la manera más segura, siempre puede eliminarlo utilizando solo el centro de software o apt-get remove applicationname. Si las dependencias ya no son necesarias, emite apt-get autoremove más tarde.

    
respondido por el gustavokrm 15.09.2012 - 00:10
1

Solo quería aclarar una cosa que parece ser una fuente de confusión aquí. La utilidad dpkg no conoce ni rastrea las dependencias de los paquetes en relación una con la otra, lo que fue una gran razón por la que creo que apt fue desarrollado. Puede leer sobre esto en la sección 8.6 en esta página Preguntas frecuentes sobre Debian GNU / Linux - Las herramientas de administración de paquetes de Debian

  • Con apt: si quería purgar el paquete A, y tiene una dependencia llamado paquete B, y el paquete B no tenía otros paquetes dependientes, entonces los paquetes A y B se purgarán. Si el paquete B DID tiene otro dependiente paquetes, entonces solo el paquete A será purgado.

  • Con dpkg: ¿Qué dependencia? Usted acaba de decirme que purgue el maldito
    paquete, así que eso es lo que hice! La mala planificación de su parte no es
    constituyen una emergencia de mi parte.

Dicho esto, aquí hay dos lineamientos que se pueden usar para cada método de purga:

dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --dry-run --purge

apt-get autoremove -y; apt-get --dry-run purge -y $(dpkg --list |grep '^rc' |awk '{print }')

Elimine --dry-run para realizar la operación de purga real en lugar de informar qué acciones habría llevado a cabo.

    
respondido por el Travis R. 24.08.2018 - 01:32

Lea otras preguntas en las etiquetas