我错误地启用了“Pre-release updates (natty-proposed)”仓库,然后升级了所有软件包。
我该如何撤销这个操作?
这里是测试结果和@enzotib的指示以及测试结果和我的指示。
我该如何撤销这个操作?
这里是测试结果和@enzotib的指示以及测试结果和我的指示。
感谢 Ubuntu 论坛上的 mlind 在他发布的帖子中提供了超过5年前关于固定引用的灵感 - 然而它今天对我非常有帮助。
这个页面建议可以使用Apt pinning来通过利用优先级高于1000的pin可以导致软件包降级的事实来从整个存储库中降级。
因此,一个解决方案可能是暂时将除natty-proposed
存储库之外的所有软件包文件的默认优先级增加1000:
apt-cache policy | awk '
/^ [0-9]+ / {
p = $1;
getline;
r = $0;
if (r !~ /a=natty-proposed/) p += 1000;
print "Package: *\nPin: " r "\nPin-priority: " p "\n"
}
' | sudo tee /etc/apt/preferences.d/downgrade-from-natty-proposed
apt-get --simulate upgrade
来测试成功检测降级。确认正确的降级已被检测到后,只需执行sudo apt-get upgrade
即可执行降级。sudo rm /etc/apt/preferences.d/downgrade-from-natty-proposed
#!/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)
get-prev-pkg-vers
的awk
脚本如下所示。#!/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
命令中。sudo aptitude install packagename/natty
。但更重要的是,您应该针对该软件包提交一个错误报告。很少有人真正测试natty-proposed,如果出现回归(=新问题),肯定应该报告。否则,它们可能会出现在所有Ubuntu用户的更新中。所以,如果您有任何问题,请报告。package > force version