¿Cómo puedo deshacer o revertir un comando "apt-get upgrade" en Ubuntu?

¿Hay alguna manera en Ubuntu para revertir o deshacer la última actualización después de hacer una apt-get upgrade si no te gustan los resultados?

aptitude le da acceso a todas las versiones de un paquete si está disponible de acuerdo con la administración de paquetes de Debian .

Me encontré con Blog Blog de Hartman Blog: Cómo deshacer una actualización en Ubuntu Lucid

El primer paso para deshacer la actualización ofensiva fue averiguar qué actualizaciones era exactamente. Después de buscar en algunos foros me encontré con una manera de ver mi historial de actualizaciones: Abra el gestor de paquetes sinápticos ("sudo synaptic" en el terminal). En la barra de menús, haga clic en Archivo -> Historial y verá todas sus actualizaciones ordenadas por fecha.

Desafortunadamente había instalado alrededor de 20 actualizaciones hoy, y no sabía cuál había causado el problema. Al buscar a través de cada uno de los paquetes mencionados en la lista de historial, pude degradar unos pocos a la vez hasta que el problema se solucionó y había identificado la actualización ofensiva. Para hacer esto:

Utilice la barra de búsqueda para encontrar el paquete que desea degradar. Una vez que haya encontrado lo que está buscando, haga clic en el paquete para seleccionarlo. En la barra de menús, haga clic en Paquete -> Forzar versión y seleccione la versión anterior del paquete en el menú desplegable. Haga clic en el botón "Aplicar" para aplicar la degradación.

Tuve que hacer esto hoy en mi sistema Debian. En primer lugar, identifiqué el intervalo de tiempo cuando ocurrió la actualización ofensiva y recuperé las entradas de registro que daban los números de versión antiguos y nuevos de los paquetes actualizados:

 $ awk '$1=="2016-03-20" && $3=="upgrade"' /var/log/dpkg.log 2016-03-20 16:58:22 upgrade libwebkitgtk-3.0-0:amd64 2.4.9-3 2.4.10-1 2016-03-20 16:58:24 upgrade libjavascriptcoregtk-3.0-0:amd64 2.4.9-3 2.4.10-1 2016-03-20 16:58:26 upgrade traceroute:amd64 1:2.0.22-1 1:2.1.0-1 2016-03-20 16:58:33 upgrade ethtool:amd64 1:4.2-1 1:4.5-1 2016-03-20 16:58:34 upgrade libsdl1.2debian:amd64 1.2.15+dfsg1-3 1.2.15+dfsg1-4 2016-03-20 16:58:34 upgrade subversion:amd64 1.9.3-2+b1 1.9.3-3 2016-03-20 16:58:36 upgrade libsvn1:amd64 1.9.3-2+b1 1.9.3-3 2016-03-20 16:58:56 upgrade linux-image-amd64:amd64 4.3+70 4.4+71 2016-03-20 16:58:56 upgrade linux-libc-dev:amd64 4.3.5-1 4.4.6-1 2016-03-20 16:59:03 upgrade amd64-microcode:amd64 2.20141028.1 2.20160316.1 

A continuación, traté de encontrar los archivos del paquete aún en caché en el disco (por suerte para mí no había ejecutado autoclean):

 $ awk '$1=="2016-03-20" && $3=="upgrade" {gsub(/:/, "%3a", $5); split($4, f, ":"); print "/var/cache/apt/archives/" f[1] "_" $5 "_" f[2] ".deb"}' /var/log/dpkg.log | xargs -r ls -ld ls: cannot access '/var/cache/apt/archives/ethtool_1%3a4.2-1_amd64.deb': No such file or directory -rw-r--r-- 1 root root 28820 Dec 18 2014 /var/cache/apt/archives/amd64-microcode_2.20141028.1_amd64.deb -rw-r--r-- 1 root root 1978874 Dec 10 18:22 /var/cache/apt/archives/libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb -rw-r--r-- 1 root root 185006 Mar 12 00:41 /var/cache/apt/archives/libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb -rw-r--r-- 1 root root 1317644 Mar 3 11:30 /var/cache/apt/archives/libsvn1_1.9.3-2+b1_amd64.deb -rw-r--r-- 1 root root 7679400 Dec 10 18:22 /var/cache/apt/archives/libwebkitgtk-3.0-0_2.4.9-3_amd64.deb -rw-r--r-- 1 root root 6108 Dec 14 06:59 /var/cache/apt/archives/linux-image-amd64_4.3+70_amd64.deb -rw-r--r-- 1 root root 1075506 Feb 7 21:36 /var/cache/apt/archives/linux-libc-dev_4.3.5-1_amd64.deb -rw-r--r-- 1 root root 983174 Mar 3 11:30 /var/cache/apt/archives/subversion_1.9.3-2+b1_amd64.deb -rw-r--r-- 1 root root 53376 Feb 28 18:35 /var/cache/apt/archives/traceroute_1%3a2.0.22-1_amd64.deb 

Parece que no tengo el paquete ethtool más antiguo por alguna razón. Sin embargo, vamos a seguir por la fuerza-instalar los archivos de paquetes más antiguos:

 $ sudo dpkg -i /var/cache/apt/archives/amd64-microcode_2.20141028.1_amd64.deb /var/cache/apt/archives/libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb /var/cache/apt/archives/libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb /var/cache/apt/archives/libsvn1_1.9.3-2+b1_amd64.deb /var/cache/apt/archives/libwebkitgtk-3.0-0_2.4.9-3_amd64.deb /var/cache/apt/archives/linux-image-amd64_4.3+70_amd64.deb /var/cache/apt/archives/linux-libc-dev_4.3.5-1_amd64.deb /var/cache/apt/archives/subversion_1.9.3-2+b1_amd64.deb /var/cache/apt/archives/traceroute_1%3a2.0.22-1_amd64.deb dpkg: warning: downgrading amd64-microcode from 2.20160316.1 to 2.20141028.1 (Reading database ... 139632 files and directories currently installed.) Preparing to unpack .../amd64-microcode_2.20141028.1_amd64.deb ... Unpacking amd64-microcode (2.20141028.1) over (2.20160316.1) ... dpkg: warning: downgrading libjavascriptcoregtk-3.0-0:amd64 from 2.4.10-1 to 2.4.9-3 Preparing to unpack .../libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb ... Unpacking libjavascriptcoregtk-3.0-0:amd64 (2.4.9-3) over (2.4.10-1) ... dpkg: warning: downgrading libsdl1.2debian:amd64 from 1.2.15+dfsg1-4 to 1.2.15+dfsg1-3 Preparing to unpack .../libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb ... Unpacking libsdl1.2debian:amd64 (1.2.15+dfsg1-3) over (1.2.15+dfsg1-4) ... dpkg: warning: downgrading libsvn1:amd64 from 1.9.3-3 to 1.9.3-2+b1 Preparing to unpack .../libsvn1_1.9.3-2+b1_amd64.deb ... Unpacking libsvn1:amd64 (1.9.3-2+b1) over (1.9.3-3) ... Preparing to unpack .../libwebkitgtk-3.0-0_2.4.9-3_amd64.deb ... Unpacking libwebkitgtk-3.0-0:amd64 (2.4.9-3) over (2.4.9-3) ... dpkg: warning: downgrading linux-image-amd64 from 4.4+71 to 4.3+70 Preparing to unpack .../linux-image-amd64_4.3+70_amd64.deb ... Unpacking linux-image-amd64 (4.3+70) over (4.4+71) ... dpkg: warning: downgrading linux-libc-dev:amd64 from 4.4.6-1 to 4.3.5-1 Preparing to unpack .../linux-libc-dev_4.3.5-1_amd64.deb ... Unpacking linux-libc-dev:amd64 (4.3.5-1) over (4.4.6-1) ... dpkg: warning: downgrading subversion from 1.9.3-3 to 1.9.3-2+b1 Preparing to unpack .../subversion_1.9.3-2+b1_amd64.deb ... Unpacking subversion (1.9.3-2+b1) over (1.9.3-3) ... dpkg: warning: downgrading traceroute from 1:2.1.0-1 to 1:2.0.22-1 Preparing to unpack .../traceroute_1%3a2.0.22-1_amd64.deb ... Unpacking traceroute (1:2.0.22-1) over (1:2.1.0-1) ... Setting up amd64-microcode (2.20141028.1) ... update-initramfs: deferring update (trigger activated) amd64-microcode: microcode will be updated at next boot Setting up libjavascriptcoregtk-3.0-0:amd64 (2.4.9-3) ... Setting up libsdl1.2debian:amd64 (1.2.15+dfsg1-3) ... Setting up libsvn1:amd64 (1.9.3-2+b1) ... dpkg: dependency problems prevent configuration of libwebkitgtk-3.0-0:amd64: libwebkitgtk-3.0-0:amd64 depends on libwebkitgtk-3.0-common (>= 2.4.9); however: Package libwebkitgtk-3.0-common is not installed. dpkg: error processing package libwebkitgtk-3.0-0:amd64 (--install): dependency problems - leaving unconfigured Setting up linux-image-amd64 (4.3+70) ... Setting up linux-libc-dev:amd64 (4.3.5-1) ... Setting up subversion (1.9.3-2+b1) ... Setting up traceroute (1:2.0.22-1) ... update-alternatives: using /usr/bin/traceroute.db to provide /usr/bin/traceroute (traceroute) in auto mode update-alternatives: using /usr/bin/lft.db to provide /usr/bin/lft (lft) in auto mode update-alternatives: using /usr/bin/traceproto.db to provide /usr/bin/traceproto (traceproto) in auto mode update-alternatives: using /usr/sbin/tcptraceroute.db to provide /usr/sbin/tcptraceroute (tcptraceroute) in auto mode Processing triggers for libc-bin (2.22-3) ... Processing triggers for man-db (2.7.5-1) ... Processing triggers for initramfs-tools (0.123) ... update-initramfs: Generating /boot/initrd.img-4.4.0-1-amd64 Errors were encountered while processing: libwebkitgtk-3.0-0:amd64 

Como dijo el mensaje de error, uno de mis paquetes dependía de un paquete común justo antes de la actualización, pero la actualización lo eliminó (y apt-get no puede encontrarlo más). Afortunadamente, su archivo de paquete todavía está en / var / cache / apt, así que puedo agregarlo a la lista e intentarlo de nuevo:

 $ ls -ld /var/cache/apt/archives/libwebkitgtk-3.0-common* -rw-r--r-- 1 root root 452278 Dec 10 18:22 /var/cache/apt/archives/libwebkitgtk-3.0-common_2.4.9-3_all.deb $ sudo dpkg -i /var/cache/apt/archives/amd64-microcode_2.20141028.1_amd64.deb /var/cache/apt/archives/libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb /var/cache/apt/archives/libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb /var/cache/apt/archives/libsvn1_1.9.3-2+b1_amd64.deb /var/cache/apt/archives/libwebkitgtk-3.0-0_2.4.9-3_amd64.deb /var/cache/apt/archives/linux-image-amd64_4.3+70_amd64.deb /var/cache/apt/archives/linux-libc-dev_4.3.5-1_amd64.deb /var/cache/apt/archives/subversion_1.9.3-2+b1_amd64.deb /var/cache/apt/archives/traceroute_1%3a2.0.22-1_amd64.deb /var/cache/apt/archives/libwebkitgtk-3.0-common_2.4.9-3_all.deb (Reading database ... 139632 files and directories currently installed.) Preparing to unpack .../amd64-microcode_2.20141028.1_amd64.deb ... Unpacking amd64-microcode (2.20141028.1) over (2.20141028.1) ... Preparing to unpack .../libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb ... Unpacking libjavascriptcoregtk-3.0-0:amd64 (2.4.9-3) over (2.4.9-3) ... Preparing to unpack .../libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb ... Unpacking libsdl1.2debian:amd64 (1.2.15+dfsg1-3) over (1.2.15+dfsg1-3) ... Preparing to unpack .../libsvn1_1.9.3-2+b1_amd64.deb ... Unpacking libsvn1:amd64 (1.9.3-2+b1) over (1.9.3-2+b1) ... Preparing to unpack .../libwebkitgtk-3.0-0_2.4.9-3_amd64.deb ... Unpacking libwebkitgtk-3.0-0:amd64 (2.4.9-3) over (2.4.9-3) ... Preparing to unpack .../linux-image-amd64_4.3+70_amd64.deb ... Unpacking linux-image-amd64 (4.3+70) over (4.3+70) ... Preparing to unpack .../linux-libc-dev_4.3.5-1_amd64.deb ... Unpacking linux-libc-dev:amd64 (4.3.5-1) over (4.3.5-1) ... Preparing to unpack .../subversion_1.9.3-2+b1_amd64.deb ... Unpacking subversion (1.9.3-2+b1) over (1.9.3-2+b1) ... Preparing to unpack .../traceroute_1%3a2.0.22-1_amd64.deb ... Unpacking traceroute (1:2.0.22-1) over (1:2.0.22-1) ... Selecting previously unselected package libwebkitgtk-3.0-common. Preparing to unpack .../libwebkitgtk-3.0-common_2.4.9-3_all.deb ... Unpacking libwebkitgtk-3.0-common (2.4.9-3) ... Setting up amd64-microcode (2.20141028.1) ... update-initramfs: deferring update (trigger activated) amd64-microcode: microcode will be updated at next boot Setting up libjavascriptcoregtk-3.0-0:amd64 (2.4.9-3) ... Setting up libsdl1.2debian:amd64 (1.2.15+dfsg1-3) ... Setting up libsvn1:amd64 (1.9.3-2+b1) ... Setting up linux-image-amd64 (4.3+70) ... Setting up linux-libc-dev:amd64 (4.3.5-1) ... Setting up subversion (1.9.3-2+b1) ... Setting up traceroute (1:2.0.22-1) ... update-alternatives: using /usr/bin/traceroute.db to provide /usr/bin/traceroute (traceroute) in auto mode update-alternatives: using /usr/bin/lft.db to provide /usr/bin/lft (lft) in auto mode update-alternatives: using /usr/bin/traceproto.db to provide /usr/bin/traceproto (traceproto) in auto mode update-alternatives: using /usr/sbin/tcptraceroute.db to provide /usr/sbin/tcptraceroute (tcptraceroute) in auto mode Setting up libwebkitgtk-3.0-common (2.4.9-3) ... Setting up libwebkitgtk-3.0-0:amd64 (2.4.9-3) ... Processing triggers for libc-bin (2.22-3) ... Processing triggers for man-db (2.7.5-1) ... Processing triggers for initramfs-tools (0.123) ... update-initramfs: Generating /boot/initrd.img-4.4.0-1-amd64 

¡Éxito! En realidad esto no solucionó mi problema. Pero rebajó con éxito los paquetes, QED.

Creo que no, aparte de tomar una copia de seguridad completa de los sistemas de archivos pertinentes (los que contienen / , /bin , /lib , /sbin , /usr , /var , /etc y /boot (que puede estar en el sistema de archivos) Su registro de arranque) para que pueda rodar la máquina de nuevo después.

También tuve que deshacer un paquete de actualización hoy en un par de servidores Debian. Revisé con éxito los paquetes a la última versión usando aptitute, mientras que el comando awk siguiente fue muy útil.

( En el siguiente comando reemplace la cadena de fecha con la fecha del día a partir de la cual desea revertir las actualizaciones )

 awk 'BEGIN{ start="0" } { if($0 ~ /Log started: 2017-06-20/) { start="1"} if ( start == "1" && $0 ~ /Unpacking.*over/) {gsub(/[\s\t)( ]+/,"",$5); printf("%s=%s ", $2 , $5)}}' /var/log/apt/term.log 

Revise la salida para verificar que se trata de los paquetes y versiones que se deben revertir. A continuación, use aptitute para hacer la degradación de los paquetes listados:

 aptitute install [paste output here] 

Espero que esto también sea un ahorro de tiempo útil para otros.

Usted puede intentar checkinstall

Después de ./configure; Hacer que su programa, CheckInstall se ejecutará make install (o lo que diga que se ejecute) y realizar un seguimiento de cada archivo modificado por esta instalación, utilizando el excelent installwatch …

Así que tal vez usted podría decirle que ejecute aptitude safe-upgrade y que mantenga un registro de cada modificación realizada por la actualización.

Hay un proyecto llamado Nexenta que combina el kernel de OpenSolaris con el espacio de usuario de Ubuntu. Proporciona una herramienta para integrar el ZFS de Solaris y el apt de Debian para proporcionar un botón de deshacer para las actualizaciones. Vea aquí: http://www.nexenta.org/os/TransactionalZFSUpgrades

De manera más general, lo que necesita es un sistema de archivos con versiones. Btrfs para Linux está en desarrollo.

Ejecuto mis servidores linux en un entorno virtualizado y ejecuto un shapshot justo antes de una actualización de apt-get, o cualquier actualización de terceros de terceros importante para ese asunto.

Entonces, si algo va mal, simplemente vuelvo y la vida continúa hasta que pueda encontrar más información.

Esto vino en muy manija cuando realicé mi caja de Ubuntu a 12.04, y de alguna manera MySQL era completamente no funcional después de la mejora. Volví, encontré la respuesta más tarde, volví la actualización, fijo MySQL, y la vida era buena.

El uso de Apt-Undo es una opción posible, pero sólo puede funcionar si lo está utilizando para instalar y desinstalar paquetes. No te ayudará si ya has desinstalado el software de la manera normal.

http://www.ubuntugeek.com/apt-undo-a-simple-way-of-undoing-apt-actions.html http://lkubuntu.wordpress.com/2011/07/27/apt-undo-a -simple-way-of-undoing-apt-actions /

He hecho con éxito que pocas veces, pero no lo recomendaría. Esto es lo que hice (si recuerdo bien):

1) Elimine cualquier software no oficial que no esté incluido en los repositorios predeterminados de ubuntu (puede que no sea necesario, pero lo sugiero, ya que pueden interponerse en su camino).

2) Cambie su /etc/apt/sources.list (y sources.list.d / *) a la versión anterior (comente todos los repositorios no oficiales).

3) actualización apt-get update / aptitude

4) Usando aptitude, downgrade los paquetes principales (como X11, bibliotecas, etc). Comenzará a disparar una gran cantidad de paquetes rotos … por lo que tendrá que resolver cada caso (usted necesita saber cómo hacerlo en aptitude). La forma de degradarla es ir al panel de descripción e instalar la versión (pulsando +) en la parte inferior.

5) Repetir # 4 hasta que todo el software pertenezca a su versión de destino (consulte la columna de versión en aptitude).

Estas son la razón por la que no recomiendo este método:

  • Se necesita mucho tiempo (es un proceso doloroso)
  • Es posible que algunas aplicaciones no funcionen correctamente (ya que pueden tener la configuración más reciente). En ese caso, tendrá que "purgar" y volver a instalar.
  • Hay actualizaciones relacionadas con el sistema que no funcionarán después de la degradación
  • Su alto riesgo como usted puede terminar con un sistema inutilizable

Recomiendo encarecidamente hacer una instalación limpia y mover su configuración poco a poco. También toma tiempo, pero al final tienes una versión estable.

La razón por la que lo hice fue principalmente como experimentación y como resultado de la desesperación.