问题描述
我错误地启用了预发行更新(natty-proposed)存储库,然后升级了所有软件包。
我该如何撤消呢?
这是@enzotib’s instructions中的test results和my instructions中的test results。
最佳思路
这是从本地安装的程序包,建议的程序包和向后移植程序包还原到stable + updates通道的更通用的方法。尽管其他答案是正确的,并且以类似的方式起作用,但我认为这是一种更为优雅的方法。
-
确保已删除
/etc/apt/sources.list
和/etc/apt/sources.list.d/*
文件中的-proposed
或-backports
条目。 -
添加一个apt-preferences文件,例如包含
/etc/apt/preferences.d/99-back-to-stable-updates
(此处为precise
,请替换为您的版本):Package: * Pin: release a=precise Pin-Priority: 1001 Package: * Pin: release a=precise-updates Pin-Priority: 1001 Package: * Pin: release a=precise-security Pin-Priority: 1001 Package: * Pin: release a=precise-proposed Pin-Priority: -10 Package: * Pin: release a=precise-backports Pin-Priority: -10
固定> 1000将迫使该频道的软件包降级,并且优先级<
-proposed
和-backports
通道上的0也将删除所有其他软件包。 -
现在运行
sudo apt-get update sudo apt-get dist-upgrade
检查建议的解决方案是否可以给您,如果您认为还可以,请接受。如果需要检查将其降级到什么版本以及将其降级到哪个版本,请使用
apt-cache policy packagename
进行检查,以查看可用的版本以及易于决定安装的版本。 -
再次删除
/etc/apt/preferences.d/99-back-to-stable-updates
文件,因为不再需要它。
多亏了Ubuntu论坛上的mlind
才对5年前的his post进行固定提出了要求-但今天它对我的帮助很大。
次佳思路
This page建议利用pin priorities higher than 1000 can cause package downgrades的事实,将Apt固定用于从整个存储库降级。
因此,一种解决方案可能是将所有软件包文件的默认优先级临时增加1000,但natty-proposed
存储库中的优先级除外:
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
(注意:此方法fails to increase the priority的发行包字段包含逗号的软件包文件。请参阅this question。)
完成此操作后,可以使用apt-get --simulate upgrade
来测试是否成功进行了降级检测。确认检测到正确的降级后,执行降级所需的全部操作为sudo apt-get upgrade
。
降级完成后,请使用软件源禁用预发行更新(natty-proposed)存储库,然后删除临时的优先级提高:
sudo rm /etc/apt/preferences.d/downgrade-from-natty-proposed
最后,重新启动,以便所有正在运行的程序均为降级版本。