Je ne trouve pas de solution plus simple que la suivante. En espérant néanmoins que la réponse soit meilleure.
Le script suivant pouvant exécuter la rétrogradation
#!/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)
Le script awk
, nommé get-prev-pkg-vers
est le suivant
#!/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
}
Lors de l'exécution du script, le référentiel proposé n'aurait PAS dû être désactivé pour l'instant.
N'oubliez pas de définir le bit exécutable sur les deux scripts.
Un problème avec cette approche est que tous les paquets rétrogradés seront installés manuellement (même ceux installés automatiquement).
Pour plus de sécurité, ajoutez l'option --simulate
à apt-get
à la fin du script bash.