Te llega un ticket: “No me puedo loguear al server”, siendo hábiles operadores consultamos “hiciste algún cambio?” a lo que nos responden “solo desinstalé un paquete”.

El paquete desinstalado fue python3 en un server con Ubuntu 20.04 que está conectado a un Freeipa. La desintalación se llevó puestos todos los paquetes del servicio sssd y además netplan por lo que al reiniciar el server (acción cuestionable pero necesaria) también perdimos conectividad.

El comando en cuestión sudo apt autoremove python3

En el log se puede observar el efecto devastador:

Se puede hacer un ctrl-z a esto? Se puede deshacer un apt autoremove?

Si.

Las primeras búsquedas de Google apuntan a una herramienta apt-undo en esta pregunta de StackOverflow. Pero el ppa no está más.

Sin embargo, buscando más a fondo aparece esta respuesta en Stackoverflow con un snippet de 4 lineas de bash salvador que dejamos a continuación.

Simple y elegante busca en history.log todo lo que fue removido y arma la linea para volver a instalarlo con apt-get.

echo '#!/bin/bash' > restore
echo sudo apt-get install `grep Remove /var/log/apt/history.log | tail -1 | sed -e 's|Remove: ||g' -e 's|([^)]*)||g' -e 's|:[^ ]* ||g' -e 's|,||g'` >> restore
chmod +x restore 
./restore

Es una solución final? probablemente no, porque resta verificar si se removieron configuraciones u otros archivos locales, sin embargo al tener por lo menos los paquetes restaurados estamos más cerca del punto de llegada.

Y por si no quedó claro, desinstalar paquetes como python3 no es una buena idea.