Não consigo encontrar uma solução mais simples que a seguinte. No entanto, esperando que alguém entre com uma resposta melhor.
O script a seguir que pode executar o downgrade
#!/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)
O awk
script, chamado get-prev-pkg-vers
é o seguinte
#!/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
}
Ao executar o script, o repositório proposto NÃO deveria ter sido desativado ainda.
Lembre-se de definir o bit executável nos dois scripts.
Um problema com essa abordagem é que todos os pacotes desclassificados resultarão como instalados manualmente (também aqueles que foram instalados automaticamente).
Para estar seguro, adicione a --simulate
opção apt-get
no final do script bash.