No puedo encontrar una solución más simple que la siguiente. Sin embargo, esperando que alguien entre con una mejor respuesta.
El siguiente script que puede ejecutar la degradación
#!/bin/bash
# get a list of installed packages
dpkg --get-selections | awk '{ print $1 }' > all-packages
# run apt-cache policy on each of them, then elaborate with the awk script
apt-cache policy $(<all-packages) |
./get-prev-pkg-vers >old-versions
# install previous version of packages
sudo apt-get --simulate install $(< old-versions)
El awk
guión, denominado get-prev-pkg-vers
es el siguiente
#!/usr/bin/awk -f
/^[^ ]/ {
package = $1
gsub(":", "", package)
search_next = 0
}
/^ [^ ]/ {
installed = 0
version = $1
if (search_next == 1) {
print package "=" version
search_next = 0
}
}
/^ \*\*\* [^ ]/ {
installed = 1
}
/^ [^ ]/ {
branch = $3
if (installed == 1 && branch ~ /proposed/) {
search_next = 1
}
installed = 0
}
Al ejecutar el script, el repositorio propuesto NO debería haberse desactivado todavía.
Recuerde establecer el bit ejecutable en ambos scripts.
Un problema con este enfoque es que todos los paquetes degradados resultarán como instalados manualmente (también aquellos que se instalaron automáticamente).
Para estar seguro, agregue la --simulate
opción al apt-get
final del script bash.