Ich kann keine einfachere Lösung finden als die folgende. Ich hoffe jedoch, dass jemand eine bessere Antwort erhält.
Das folgende Skript, das das Downgrade ausführen kann
#!/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)
Das awk
Skript mit dem Namen get-prev-pkg-vers
lautet wie folgt
#!/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
}
Beim Ausführen des Skripts sollte das vorgeschlagene Repo noch NICHT deaktiviert sein.
Denken Sie daran, das ausführbare Bit in beiden Skripten zu setzen.
Ein Problem bei diesem Ansatz ist, dass alle herabgestuften Pakete manuell installiert werden (auch diejenigen, die automatisch installiert wurden).
Fügen Sie aus Sicherheitsgründen die --simulate
Option apt-get
am Ende des Bash-Skripts hinzu.