¿Hay alguna forma, antes de comenzar una aptitude upgradeo apt-get upgrade, de configurar algo para que pueda "fácilmente" revertir su sistema al estado "apto" que tenía antes de la actualización real, si algo sale mal?
Es decir, por ejemplo, reinstale la versión anterior de los paquetes que se actualizaron durante el proceso.
(EDITAR) Algunas sugerencias : Sé que, etckeeperpor ejemplo, usa algún enlace aptpara que se le notifique cada vez que aptinstala o desinstala un paquete. Supongo que podría haber algún tipo de script que podría guardar la lista de paquetes recién instalados y su número de versión anterior para poder reinstalarlos desde el aptcaché ( /var/cache/apt/archives). También existe el checkinstallque puede realizar un seguimiento de las modificaciones de archivos ...
¿Algún detalle sobre cómo lograr eso correctamente?

Respuestas:
Ahora tenía que encontrar una respuesta a esto, porque el último
apt-get upgradeen un servidor Debian hacía imposible arrancar el kernel más reciente más allá de un busybox, al no poder montar la partición raíz zfs. Al menos un kernel anterior aún podía arrancar, pero era incompatible con otro software. De ahí la necesidad de una reversión.La respuesta corta: puede usar el siguiente comando:
si hace lo que desea, elimínelo
-sy ejecútelo nuevamente. Estos son los pasos que tomé para que esto funcione correctamente:Me recorté temporalmente
/var/log/dpkg.logpara dejar solo la actualización de hoyHe instalado el pequeño script
apt-historyde aquí en~/.bashrcy corrióEsto proporciona una lista bien formateada de paquetes versionados a los que retroceder introduciéndolos
apt-get install. Recorte esta lista según sea necesario en un editor de texto y luego ejecútelo (-sprimero para ejecutar en seco):Apt advertirá sobre las rebajas que se esperan. Para evitar que la próxima actualización sobrescriba esta reversión, los paquetes deberán anclarse hasta que se resuelva el problema original. Por ejemplo con:
apt-mark hold zfsutils libzfs2 ...fuente
apt-history rollbackcomando se puede reemplazar con algo comoawk '$3 ~ /upgrade/ {print $4"="$5}' dpkg.log.awk '$1 == "2018-09-07" && $3 == "upgrade" {print $4"="$5}' /var/log/dpkg.logE: Version '5.24.1-3+deb9u3' for 'libperl5.24' was not found. Estoy usando Debian Stretch para Raspian.Los archivos de registro
/var/log/apt/history.logy/var/log/apt/term.logson las cosas más cercanas disponibles para su descripción:history.logda una lista resumida de cada acción que seaptrealiza en el siguiente formato:En particular, proporciona una lista de los paquetes recién instalados o de los paquetes eliminados. Además,
term.logmuestra lo que realmente apareció en el terminal durante la acción, por lo que mostraría las versiones antiguas y nuevas de los paquetes. Una muestra aleatoria de mihistory.log:aptNo se recomienda intentar retroceder automáticamente, pero si usa los registros, entonces debería ser posible hacerlo manualmente a menos que la acción fallida haya roto algo que interfiera conaptlas acciones, por ejemplo, una base de datos dpkg inconsistente. En ese caso, deberá solucionar el problema antes de continuar.fuente
No, apt no lo hace tan fácil.
La mejor opción es algún tipo de instantánea. Instantáneas del sistema de archivos a través de lvm / zfs / btrfs o instantáneas de instancia si está utilizando una máquina virtual de algún tipo.
La única otra opción es hacer un inventario de los paquetes instalados (dpkg -l) antes y después. Si desea "retroceder", debe instalar explícitamente la versión anterior.
fuente
apt install openssl=1.0.2g-1ubuntu4.12resultadosE: Version '1.0.2g-1ubuntu4.12' for 'openssl' was not found. Acabo de actualizar1.0.2g-1ubuntu4.13y me pregunto si eso está causando algunos problemas CORS / CSP ahora