如何升级到较新版本的 Ubuntu?很好地解释了如何进行版本升级。它还说“升级 Ubuntu 100 次中有 99 次都有效”,而我的经验并非如此——我遇到过 6 次中有 6 次的问题(我不怪 Ubuntu——我认为我在没有深入了解自己在做什么的情况下乱搞安装,造成了不寻常的问题)。所以我总是在尝试升级之前对整个系统进行映像。然后我尝试升级,如果升级不顺利,我解决问题的尝试失败了,我会将系统恢复到开始的位置。所有这些都需要相当长的时间。
所以我想知道是否有办法模拟版本升级,这样我就能发现是否存在问题区域,并在实际升级之前解决这些问题。
例如,在我当前的 14.04.3 安装中,apt-get check
没有apt-get -f install
报告任何问题。但是昨晚我升级到 14.10 后,有 3 或 4 个软件包损坏了,我无法解决冲突。在尝试升级之前,有没有办法查看安装中可能导致升级时出现问题的问题?
我想即使不升级,这也可能是有用的信息 - 这些“隐藏”的问题可能会导致稳定性或性能问题......
答案1
do-release-upgrade
将执行发布升级,但do-release-upgrade
没有试运行选项。但是,它有一个--sandbox
选项。
从运行模式开始--sandbox
,对系统所做的任何更改实际上都将写入 ramdisk,并在重新启动时通过 magic os Aufs 重置。这样您就可以在完全正常运行的状态下彻底测试您的机器,而不会冒损坏它的风险。
来自原始邮件列表;
“这个想法……是在“/”中的系统目录顶部的 /tmp 中创建一个可写的覆盖,然后运行发布升级。这样,我们可以轻松测试系统是否能够干净地升级(如果没有发生 dpkg 错误/维护者脚本故障)。所有写入都进入 /tmp,因此在升级后和下次重新启动时,系统将再次回到升级前的状态(模块 /home,未覆盖)。”
对于 dist-upgrades,您可以使用--dry-run
withsudo apt-get dist-upgrade
来模拟运行此命令而无需实际执行升级。
-s, --simulate, --just-print, --dry-run, --recon, --no-act
No action; perform a simulation of events that would occur but do not actually change the
system. Configuration Item: APT::Get::Simulate.
Simulate prints out a series of lines each one representing a dpkg operation, Configure (Conf),
Remove (Remv), Unpack (Inst). Square brackets indicate broken packages with and empty set of
square brackets meaning breaks that are of no consequence (rare).
-u, --show-upgraded
Show upgraded packages; Print out a list of all packages that are to be upgraded. Configuration
Item: APT::Get::Show-Upgraded.
答案2
该do-release-upgrade
脚本有一个--sandbox
选项,可以在 aufs 覆盖文件系统上执行升级。这意味着所有更改都将写入覆盖原始文件的单独文件系统。丢弃覆盖文件,您将回到原始文件系统。免责声明:我没有使用此功能的第一手经验。
无论你采用哪种方法,一定要确保升级前系统是一致的。因此,运行sudo apt-get update && sudo apt-get dist-upgrade
并解决运行 之前出现的任何问题do-release-upgrade
。