我有一台计算机,在发行版升级(Ubuntu 8.10 -> 9.04)期间意外关闭。现在它无法完成启动 - 出现各种 X 错误,然后进入登录屏幕但不允许登录。
我有备份,/home 数据在驱动器上仍然正常,所以这不是紧急情况,但完全重建仍然是一个烦人且耗时的过程。有什么方法可以恢复吗?我有一张 9.04 CD,我正在考虑尝试安装 - 这是个好主意吗?
除此之外,是否有任何好的方法可以检查驱动器并生成已安装软件的列表,最好甚至是 /home 之外的设置(如 /etc)?
如果我必须从头开始,有什么建议可以解决导致意外关机的人员的问题?:)
编辑:非常感谢大家的回答,我真的需要接受所有答案,因为我需要使用每个答案中的一些内容。我能够使用类似下面的方法完全修复安装:
sudo dpkg --configure -a
sudo apt-get update
sudo dpkg --configure -a
sudo dpkg --configure -a --abort-after=99999
sudo apt-get dist-upgrade
sudo apt-get -f install
sudo apt-get dist-upgrade
答案1
如果你可以到达可以以 root 身份使用 dpkg 的地方,你可以运行dpkg --configure -a
但是,您可能会发现 dist-upgrade 会爆炸,因此您可能需要:
dpkg --configure -a --abort-after=99999
答案2
尝试按 CTRL-ALT-F1,看看是否会出现命令提示符。看看是否可以登录,然后尝试运行sudo apt-get dist-upgrade。这应该允许您完成升级。您可能会遇到错误,因此您可能还需要尝试使用sudo dpkg--configure-a。
要获取已安装软件的列表,您可以运行以下命令dpkg --get-selections。如果您将该命令的输出保存到文件中,则可以使用该命令cat 选择 | sudo dpkg --set-selections然后使用命令sudo apt-get dselect-upgrade才能真正安装所有软件包。
如果您确实选择这条路线,您可能应该将 /etc 和 /home 文件夹备份到另一台设备。
答案3
sudo apt-get update
sudo dpkg --configure -a
sudo apt-get update
sudo apt-get dist-upgrade
第一行刷新你正在下载的仓库的当前级别
第二行重新配置所有处于“坏”状态的包
第三行只是为了防止存储库在第二行的过程中“移动”到新版本。
第四行应该完成这项工作。
答案4
对我来说,另一个命令也可以帮助在 chroot 环境中正确配置所有包(在之前运行这个命令dpkg ,dist
等):
Upstart 作业无法在 chroot 中启动,因为 upstart 充当服务监控器,而 chroot 中的进程无法与在 chroot 之外运行的 upstart 通信 (Bug:430224)。这将导致一些已转换为使用 upstart 作业而不是 init 脚本的软件包无法在 chroot 中升级。建议用户使用指向 /bin/true 的 /sbin/initctl 配置他们的 chroot,并在 chroot 中运行以下命令:
代码:
dpkg-divert --local --rename --add /sbin/initctl ln -s /bin/true /sbin/initct