我执行了 do-release-upgrade。在此过程中,系统询问我是否要用新版本替换 init.d 中的 rsync 配置文件或保留现有文件。我按 D 查看差异,然后无法返回问题/安装脚本。我愚蠢地按了 ctrl c,结果没有返回升级过程,而是返回到了 shell。
我现在担心安装损坏了 :( 我该怎么办?
答案1
/etc/apt/sources.list
在您中止升级时,您的版本很可能已更改为新版本。这将导致do-release-upgrade
或apt-get dist-upgrade
行为不可预测。
首先更改它(假设您从 11.10 升级):
sudo sed -i -e 's/precise/oneiric/g' /etc/apt/sources.list
然后执行 a ,
sudo apt-get update
接着执行 ado-release-upgrade
。
答案2
还有一个比用 sed 替换 source.list 中的 dist 名称更好的方法,如另一个答案所述。升级程序会创建一个 /etc/apt/sources.list.distUpgrade 备份文件,您只需将其重命名为 /etc/apt/sources.list 即可恢复原始 sources.list,apt update
然后重新启动 do-release-upgrade。
答案3
您可以再次运行do-release-upgrade
以重新启动发布升级。
此次发布升级,又将从头开始。
答案4
有一种方法可以继续发布升级意外按下 CTRL + C 后无需终止 dpkg 进程或者重新启动发布升级。
免责声明:如果你也终止了屏幕会话,此解决方案将不起作用。在这种情况下终止 dpkg 进程是正确的做法。
关于 do-release-grade 你需要知道的一切
- 它在屏幕内运行
- 该进程在端口“1022”启动一个额外的 ssh 守护进程
这个想法是启动到机器的一个新的 ssh 连接并使用屏幕返回到应该仍在运行的断开连接的会话。
脚步
ssh user@machine -p 1022 # get back to the machine being upgraded
sudo screen -list # this will list the screen sessions available
您将要寻找以 开头的行somenumber.ubuntu-release-upgrade-screen-window
。
此会话可能处于附加状态或分离状态,这并不重要。
sudo screen -d -r root/somenumber.ubuntu-release-upgrade-screen-window #command will get you back to your session and go on from the point where you left it pressing that fatal CTRL + C
在此期间的某个时刻,您的控制台上可能会出现建议,让您按此或该键来恢复或暂停/取消暂停升级过程。
例子
user@machine:~# sudo screen -list
There is a screen on:
1883.ubuntu-release-upgrade-screen-window (11/14/2022 09:45:15 AM) (Attached)
1 Socket in /run/screen/S-root.
user@machine:~# sudo screen -d -r root/1883.ubuntu-release-upgrade-screen-window