如何恢复版本升级?

Dav*_*ave 70 upgrade

昨天我开始从12.10升级到13.04,但是因为时间太长我中断了。现在,如果我重新启动它,它就不会继续。

当我中断它并重新启动此更新时,是否有可能清理它留下的烂摊子?

fli*_*fly 83

似乎sudo screen -D -r将在 12.04 到 16.04 升级中重新连接到断开连接的安装。这意味着不会杀死软件包或类似的东西。这假设您没有主动停止升级,只是失去了对会话的访问权限。

  • 甚至从 14.04LTS 到 16.04LTS 的“do-release-upgrade”使用屏幕 (6认同)
  • 这适用于 18.04 -> 20.04 升级期间中断的 ssh 连接。 (5认同)
  • 这应该是公认的答案。 (4认同)
  • 适用于 17.10 -> 18.04 LTS! (3认同)
  • 谢谢!如果您的 SSH 连接断开,这将非常有用。 (2认同)

Lam*_*art 81

从命令行尝试以下步骤:

修复损坏的依赖项:

$ sudo apt-get install -f
Run Code Online (Sandbox Code Playgroud)

如果它仍然不起作用,请尝试修复/重新配置现有的、未打包但尚未配置的包:

$ sudo dpkg --configure -a
Run Code Online (Sandbox Code Playgroud)

然后再次尝试升级。

如果再次失败,您可能要删除所有已经下载的包(它们应该存储在 中/var/cache/apt/archives),请执行

$ sudo apt-get clean
Run Code Online (Sandbox Code Playgroud)

这将清理包,但如果你仍然陷入某种奇怪的状态,我不知道还有什么建议。

$ sudo apt-get autoremove -y
Run Code Online (Sandbox Code Playgroud)

这将删除任何现在已经过时的软件包。

当然,在您做任何事情之前,您应该备份/home/dave目录(或任何$HOME目录)中的任何重要内容。

  • do-release-upgrade 确实启动了一个屏幕会话(带有屏幕转义字符 ^space),但是如果父 do-release-upgrade 进程终止,那可能仍然会杀死整个过程。如果您启动子shell 来查看修改后的 conffile,请小心点击 ^c,我遇到了一个问题:https://bugs.launchpad.net/ubuntu/+source/ubuntu-release-upgrader/+bug/ 1343737 (6认同)
  • 确认 ```sudo apt-get install -f``` 为我重新启动了 dpkg。当网络连接断开时,我的升级被中断。远程升级时 prob 应该使用 ```screen```,我认为 ubuntu 曾经做过... (2认同)
  • 在恢复顶部执行“sudo apt-get dist-upgrade”也是可取的。只需确保 /etc/apt/sources.list 中有新的发行版即可。 (2认同)

小智 8

我的 16.04 到 18.04 升级已中断,因为我错误地停止了该过程。我猜这个过程已经接近尾声(安装wifi包)。以上都没有奏效,并不断给出“dpkg fronend 被另一个进程锁定”。系统重启,然后

$ sudo dpkg --configure -a
Run Code Online (Sandbox Code Playgroud)

恢复该过程并成功完成升级到 18.04。

  • 我害怕完全遵循这一点,因为当软件包处于未知状态时重新启动可能会导致系统无法正常启动。我所做的是“pkill dpkg”,然后“sudo dpkg --configure -a”,然后重新启动。很有魅力:) (4认同)

小智 8

对我来说,情况有点不同:进程在下载步骤停止(由于电源故障)。

所以没有屏幕可以恢复,也没有软件包损坏,因为没有安装任何软件包,但do-release-upgrade要求我先升级 850 个软件包...

/etc/apt/sources.list修复方法是使用以下命令恢复文件

mv /etc/apt/sources.list.distUpgrade /etc/apt/sources.list
Run Code Online (Sandbox Code Playgroud)

*.distUpgrade对于所有的/etc/apt/sources.list.d都一样

for x in /etc/apt/sources.list.d/*.distUpgrade; do
    mv -- "$x" "${x%.distUpgrade}"
done
Run Code Online (Sandbox Code Playgroud)

然后简单地apt update将系统置于干净状态,我就可以正常进行版本升级。