¿Es posible deshacer un comando de instalación de apt-get?

62

Instalé Carpadio en mi instalación de Xubuntu (un Live USB), que luego sacó más de 50 paquetes de, supongo, el lado Ubuntu del repositorio. Ahora me gustaría deshacer esto. Sin embargo, durante toda mi búsqueda, no puedo encontrar nada más útil que ¿Cómo puedo revertir el comando sudo apt get install? , que solo sugiere apt-get purge . Esto no es útil ya que todo lo que hace es eliminar 2 paquetes (carpadio y carpadio-gnomepanel).

/var/log/apt/history.log tiene una lista de todos los paquetes que se instalaron junto con ese comando. ¿Entonces me preguntaba si hay alguna manera fácil de eliminarlos? De lo contrario, puedo reinstalar, esta fue una nueva instalación de todos modos, pero tengo curiosidad.

Una pequeña muestra del registro de historial (1 / 5-1 / 10 de la lista completa)

  

Línea de comando: apt-get install cardapio-gnomepanel
  Instalar: libdbusmenu-qt2: amd64 (0.9.2-0ubuntu1, automático), python-packagekit: amd64 (0.7.2-4ubuntu3, automático), cups-pk-helper: amd64 (0.2.1.2-1ubuntu0.1, automático) , geoclue: amd64 (0.12.0-1ubuntu12, automático), unity: amd64 (5.18.0-0ubuntu1, automático), impresoras-indicadoras: amd64 (0.1.6-0ubuntu1, automático), libevolution: amd64 (3.2.3- 0ubuntu6, automático), libqt4-declarativo: amd64 (4.8.1-0ubuntu4.3, automático), libmtp9: amd64 (1.1.3-1ubuntu0.1, automático), tracker-miner-fs: amd64 (0.14.0-2ubuntu1 , automático), gir1.2-rb-3.0: amd64 (2.96-0ubuntu4.2, automático), python-aptdaemon.pkcompat: amd64 (0.43 + bzr805-0ubuntu7, automático), gnome-media: amd64 (3.4.0- 0ubuntu3.1, automático), metacity: amd64 (2.34.1-1ubuntu11, automático), nautilus: amd64 (3.4.2-0ubuntu6, automático), libcompizconfig0: amd64 (0.9.7.0 ~ bzr428-0ubuntu6, automático), compi- plugins-default: amd64 (0.9.7.12-0ubuntu1, automático), libunistring0: amd64 (0.9.3-5, automático), libebackend-1.2-1: amd64 (3.2.3-0ubuntu7, automático), ubuntu-docs: amd64 (12.04.6, automático), python-mako: amd64 (0.5.0-1, automático),

A todos los que han sugerido autoremove : no estoy seguro por qué, pero obtuve solo 1 paquete relacionado con python (python-keybinder o algo así) como "innecesario" y eso es todo lo que ese autorremove fue capaz de eliminar.

Entre la instalación y la desinstalación, solo un cambio importante fue la instalación de xubuntu-restricted-extras .

    
pregunta Karthik T 25.01.2013 - 17:03

9 respuestas

71

Básicamente, deberás tener apt-get remove (o apt-get purge) el paquete y ejecutar apt-get autoremove después de eso, para que revierte la instalación de package-one .

Veamos todo el proceso:

  • sudo apt-get install package-one instala 50 dependencias con el marcado "automático", como también se puede ver en el extracto del registro en su pregunta

  • sudo apt-get purge package-one elimina (depura) solo uno, pero haz ¡ejecuta esto!

    Todas las siguientes acciones de instalación (si ejecuta alguna) generarán un mensaje informativo con los paquetes que ya no se necesitan:

    The following packages were automatically installed and are no longer required:
      package-two package-three [...]
    Use 'apt-get autoremove' to remove them.
    

    Esta lista es básicamente una lista de todos los paquetes marcados como "automáticos" sin una dependencia inversa de ellos. En otras palabras, no hay ninguna razón para que se instalen en lo que respecta a la administración del paquete.

    Nota: ¡No se necesita instalación! ¡Es solo para demostrar que APT es inteligente para informarle sobre sus paquetes innecesarios!

  • sudo apt-get autoremove --purge elimina (purga) estos

Más información

respondido por el gertvdijk 25.01.2013 - 17:13
18

Cuando desee eliminar un paquete y sus dependencias instaladas en ese momento, debe usar:

sudo apt-get purge package
sudo apt-get --purge autoremove

pero para deshacer apt actions, puede usar apt-undo script. Es un script simple que puede deshacer las acciones apt realizadas en Ubuntu. Debe tenerse en cuenta que este script solo puede funcionar si lo usa en lugar de apt-get para instalar / actualizar / eliminar / purgar / degradar sus paquetes.

Para instalar apt-undo en Ubuntu, ejecute los siguientes comandos en la terminal:

sudo add-apt-repository ppa:lkjoel/apt-undo
sudo apt-get update
sudo apt-get install apt-undo

uso:

apt-undo install yourpackages
apt-undo remove yourpackages
apt-undo purge yourpackages
apt-undo upgrade
apt-undo dist-upgrade
apt-undo install yourpackages=old.version
apt-undo install yourpackages=new.version

Para deshacer, las acciones aptitude anteriores se ejecutan siguiendo los comandos en la terminal:

apt-undo undo
    
respondido por el Ramin 25.01.2013 - 17:15
7

Usa el poder de Unix. Tome la línea del archivo de registro que tiene, y construya un comando que deshará lo que hizo apt. Por ejemplo:

$ echo 'Install: libdbusmenu-qt2:amd64 (0.9.2-0ubuntu1, automatic), python-packagekit:amd64 (0.7.2-4ubuntu3, automatic), cups-pk-helper:amd64 (0.2.1.2-1ubuntu0.1, automatic),'|perl -pe 's/ \(.*?\)//g; s/,//g; s/^Install: //'
libdbusmenu-qt2:amd64 python-packagekit:amd64 cups-pk-helper:amd64

Para que pueda utilizar esta depuración todos los paquetes que instaló accidentalmente, dada la línea correspondiente de su archivo de registro:

$ dpkg -P $(echo '(full log line here)' | perl -pe 's/ \(.*?\)//g; s/,//g; s/^Install: //')

(He usado perl en vez de sed porque sed usa un tipo de expresión regular que no admite coincidencias no codiciosas, que fue la forma más fácil de construir lo que necesitaba)

    
respondido por el Robie Basak 25.01.2013 - 17:46
1

Después de eliminar un paquete, y puede eliminarlo completamente agregando --purge, for, apt-get remove --purge <package> , debería darle un mensaje de que los paquetes de la biblioteca que extrajo se instalaron automáticamente y ya no son necesarios, en en qué punto puede ejecutar apt-get autoremove para eliminarlos.

    
respondido por el Ken Kinder 25.01.2013 - 17:12
1

Siga el sudo apt-get purge packagename con

sudo apt-get autoremove. 

A menos que sea un metapaquete, esto debería solucionarlo.

Consulte también las preguntas frecuentes en ¿Cómo elimino manualmente todos los archivos Cardapio? .

    
respondido por el chaskes 25.01.2013 - 17:13
1
  1. Pegue la larga lista de paquetes no deseados del registro de apt en un new_file.txt
  2. Ejecute perl -pe 's/\(.*?\)(, )?//g' /path/to/new_file.txt
  3. Copie el resultado del último comando en el portapapeles o pipe it there en primer lugar .
  4. Ejecute sudo apt-get remove [pegue el contenido del portapapeles aquí]

Hecho.

Básicamente, debemos formatear la lista de paquetes del registro de apt en algo que apt-get puede entender. El paréntesis, las palabras intermedias y las comas deben irse, así que es allí donde entra el perl para jugar. Sí, hay formas mejores (más eficientes), pero lo he hecho, es fácil de entender y funciona.

    
respondido por el Insperatus 02.02.2013 - 09:59
0

Si acaba de agregar un ppa y desea revertir, debe seguir los pasos que se describen a continuación. Comprenda que esto puede fallar, cuando instaló otros paquetes que no desea desinstalar. Estoy seguro de que esto se puede hacer con un script. Personalmente, creo que esto debería formar parte de apt, y debería haber una mejor administración de qué paquetes están instalados debido a las dependencias y que se instalan a petición del usuario.

1) eliminar el ppa de /etc/apt/sources.list Recuerde la hora en que agregó el ppa. Si tienes suerte, no necesitas ser preciso.

2) haga una lista de qué reinstalar, desde el momento en que instaló el PPA: cat /var/log/dpkg.log | grep 'upgrade'

3) haga una lista de qué eliminar, desde el momento en que instaló el PPA: cat /var/log/dpkg.log | grep 'install'

4) eliminar todos los paquetes del paso 3: sudo apt-get eliminar {lista de paquetes del paso 3}

5) vuelva a instalar todos los paquetes del paso 2: sudo apt-get install --reinstall {lista de paquetes del paso 2}

6) Si las cosas salieron mal y no se puede encontrar una solución, vuelva a colocar el PPA y vuelva a instalar todos los paquetes de las dos listas.

    
respondido por el VincentSC 20.08.2013 - 16:24
0

Sé que es una pregunta bastante antigua, pero vine aquí en busca de ayuda y tal vez pueda ayudar a alguien. Tuve una situación similar a la de @Karthik-T después de instalar unity8-desktop-session-mir . Sé que es uno grande. Tiró 233 paquetes con él.

Usando autoremove , solo elimino 34 de ellos. El punto es que durante la instalación de unity8-desktop-session-mir , eliminó dos paquetes ( python3-aptdaemon.pkcompat y evolution-data-server-online-accounts ). Se indica en /var/log/apt/history.log , después de la sección Install .

Para deshacer completamente la instalación de Unity 8, emití los siguientes:

  1. sudo apt-get purge unity8-desktop-session-mir
  2. sudo apt-get --purge autoremove
  3. sudo apt-get install python3-aptdaemon.pkcompat evolution-data-server-online-accounts (eliminó 8 paquetes relacionados con Unity 8)
  4. sudo apt-get --purge autoremove

Esto no eliminará absolutamente todo lo que instaló antes, pero en algún caso es lo suficientemente bueno.

PD: quizás el autoremove en el paso dos no es necesario, como emití nuevamente en el paso cuatro.

    
respondido por el user536838 03.08.2016 - 10:47
0

Técnicamente, las operaciones de "eliminar" o "eliminar automáticamente" no son "deshacer", aunque se pueden hacer para hacer el trabajo lo suficientemente bien la mayoría de las veces.

De forma predeterminada, apt-get dejará los paquetes atrás, a menos que especifique -o APT::Suggests-Important=0 -o APT::Recommends-Important=0

Es más confiable echar un vistazo al apt history.log y desinstalar todos los paquetes instalados. Creé un pequeño script basado en nodo para facilitar el proceso:

enlace

Además, aquí hay otro enfoque más manual para "hacer retroceder" los cambios:

enlace

    
respondido por el Rolf 12.05.2018 - 10:22

Lea otras preguntas en las etiquetas