Я не могу найти более простое решение, чем следующее. Однако, надеясь, что кто-то получит лучший ответ.
Следующий сценарий, который может выполнить 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)
Скрипт awk, названный get-prev-pkg-vers, следующий:
#!/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
}
При запуске скрипта предлагаемое репо еще НЕ должно быть отключено.
Не забудьте установить исполняемый бит в обоих сценариях.
Проблема с этот подход заключается в том, что все пониженные пакеты будут отображаться вручную, а также те, которые были автоматически установлены.
Чтобы быть в безопасности, добавьте параметр --simulate в apt-get в конце сценария bash. [ ! d7]