Tutoriales

Cómo revertir una modernización de apt-get / apt en Debian / Ubuntu Linux


RRetornar a la traducción preparatorio puede resolver el problema o liberar espacio en el disco. Tanto CentOS / RHEL admiten la función de reversión, pero aprendí de guisa difícil que Debian y Ubuntu aún no admiten la función de reversión.


Conozca el problema ayer de designar la decisión.

Administro de forma remota un servidor Ubuntu 14.04.3 LTS en una de esas nubes muy baratas, y usaré periódicamente el comando apt-get / apt para instalar paquetes o realizar actualizaciones. Quería configurar el software “Planet Belleza” (un agregador de alimentos flexible) en mi sistema. Por alguna extraña razón, corrí:
$ sudo apt-get -y --install-suggests install planet-venus
Debería acaecer detenido la instalación. Pero estaba demasiado cansado y con exceso de trabajo ese día. El resultado fue un desastre. Me quedé sin espacio en disco e instalé 1764 paquetes en el sistema. La instalación de mi planeta Belleza igualmente se estropeó. Fue uno de esos días en los que cometí errores y olvidé tomar instantáneas / copias de seguridad. Larga historia corta:

Relacionado: Esta no es la primera vez que la cago. Vea mis 10 errores en la crencha de comandos de Unix.

Alternativa

Probé Google y encontré que esta página wiki no era tan útil. Un par de publicaciones en listas de correo y foros no ayudaron en inmutable. Finalmente, una pista proviene de Twitter:

¿Algún conoce una forma sencilla de deshacer paquetes en el servidor @Ubuntu Linux 14.04 LTS? en mal estado .. Necesito revertir más de 1k + paquetes 🙁

¿Cómo revertir una modernización de apt-get desde la crencha de comandos?

Rápidamente corrí:
# grep -A 2 'Start-Date: 2016-01-17 07:56:42' /var/log/apt/history.log
Salida de muestra (volcado completo aquí):


Start-Date: 2016-01-17  07:56:42
Commandline: apt-get --install-suggests install planet-venus
Install: libmaa3:amd64 (1.3.2-2, automatic), ant:amd64 (1.9.3-2build1, automatic), libmimic0:amd64 (1.0.4-2.1ubuntu1,
....
...
....
b5.3-util:amd64 (5.3.28-3ubuntu3, automatic), libopencore-amrnb0:amd64 (0.1.3-2ubuntu1, automatic), firebird2.5-examples:amd64 (2.5.2.26540.ds4-9ubuntu1, automatic), libboost-random1.54-dev:amd64 (1.54.0-4ubuntu3.1, automatic), libtbb2:amd64 (4.2~20130725-1.1ubuntu1, automatic), libwxgtk2.8-0:amd64 (2.8.12.1+dfsg-2ubuntu2, automatic), libc6-x32:amd64 (2.19-0ubuntu6.6, automatic), magicfilter:amd64 (1.2-64, automatic)

Revertir / deshacer un comando apt-get install

Descansar fue obediente.

Crea la letanía:

grep -A 2 'Start-Date: 2016-01-17  07:56:42' /var/log/apt/history.log | tail -1 >/tmp/packages.txt

Edite el /tmp/packages.txt interrumpir y eliminar Instalar en pc: palabra:

O

sed -i 's/Install://' /tmp/packages.txt

Finalmente, necesito acicalar algunas cosas:

tr ',' 'n' < /tmp/packages.txt | sed '/automatic)/d' | awk '{ print $1}' > /tmp/final.packages.txt
wc -l /tmp/final.packages.txt

Horizontes de muestra:

1764 /tmp/final.packages.txt

Eliminar los paquetes

Ahora, tengo una letanía completa de todos los paquetes instalados en ese día infiel.

# less /tmp/final.packages.txt 
libmaa3:amd64
ant:amd64
libmimic0:amd64
dc:amd64
libparse-yapp-perl:amd64
gir1.2-clutter-1.0:amd64
libjna-java:amd64
python-egenix-mxbeebase:amd64
libxkbcommon-x11-0:amd64
libmpeg2-4:amd64
libopencv-core2.4:amd64
libdvdread4:amd64
libhunspell-1.3-0:amd64
fonts-lobster:amd64
libtotem-plparser18:amd64
libodbcinstq4-1:amd64
jed-common:amd64
....
..
...
xfonts-cyrillic:amd64
postgresql:amd64
db5.3-util:amd64
libopencore-amrnb0:amd64
firebird2.5-examples:amd64
libboost-random1.54-dev:amd64
libtbb2:amd64
libwxgtk2.8-0:amd64
libc6-x32:amd64
magicfilter:amd64

Simplemente desinstálelo:

# Run as root
# Store packages name in $p
p="$(</tmp/final.packages.txt)"
 
# Nuke it
apt-get --purge remove $p
 
#clears out the tópico repository of retrieved package files
apt-get clean
 
# Just in case ...
apt-get autoremove
 
# Verify disk space
df -H

Conclusión

Para ayudarte a ti mismo, debes ser tú mismo. Sea lo mejor que pueda ser. Cuando cometa un error, aprenda de él, levántese y siga delante. –Dave Pelzer

Aprendí eso:

  1. El mejor momento para realizar una copia de seguridad es ayer de realizar tareas importantes en el servidor.
  2. Pensar dos veces. Presiona Enter una vez.
  3. Nunca confíe ciegamente en apt-get o en cualquier comando que tenga la opción -y.
  4. Haz siempre la instantánea. Desafortunadamente, esta caja todavía usa ext4. No hay ninguna opción para configurar mi sistema de archivos en BTRFS / ZFS (Linux en ZFS) con este proveedor de servidor en la abundancia. Así que estoy atrapado con ext4 por ahora.

Otro día, otro problema resuelto del administrador de sistemas.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba