您如何从失败的升级中恢复('apt-get -f install' 和 'dpkg --configure -a' 失败)?

rud*_*den 15 upgrade 10.04 partial-upgrade 12.04 data-recovery

在从 lucid (10.04) 升级到精确 (12.04) 期间,X 会话冻结了,我一直在尝试恢复升级以获得稳定的系统。我执行了以下步骤:

  1. 使用 ssh 通过网络登录到停滞的系统。
  2. 检查/var/log/dist-upgrade目录的内容。在main.logapt.log或上没有活动term.log
  3. top 显示进程“精确”使用了大约 3% 的 CPU,但我找不到任何证据表明升级过程仍在执行任何操作。
  4. 'dpkg' 没有出现在顶部,但它出现了 pgrep dpkg | xargs ps
  5. 终止了“dpkg”和“精确”进程
  6. 尝试通过运行来恢复升级sudo fuser -vki /var/lib/dpkg/lock;sudo dpkg --configure -a。这部分成功(配置了一些包),但失败并显示消息Processing was halted because there were too many errors。我运行了几次相同的命令,每次都配置了一些包但其他包失败了。
  7. 试过运行sudo apt-get -f install。它因与 dpkg 类似的错误而失败。

目前的情况是,dpkg --configure -asudo apt-get -f install未能处理两种类型的错误:

  1. 依赖问题,例如:

    dpkg: dependency problems prevent configuration of cifs-utils:
    cifs-utils depends on samba-common; however:
    Package samba-common is not configured yet.
    dpkg: error processing cifs-utils (--configure):
    dependency problems - leaving unconfigured
    
    Run Code Online (Sandbox Code Playgroud)
  2. 资源冲突,例如:

    debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process: Resource temporarily unavailable
    
    Run Code Online (Sandbox Code Playgroud)

此外,似乎有潜在的启动问题的参考,所以我不想在没有先修复安装的情况下重新启动:

    dpkg: too many errors, stopping
    Processing triggers for initramfs-tools ...
    update-initramfs: Generating /boot/initrd.img-3.2.0-25-generic
    cryptsetup: WARNING: failed to detect canonical device of /dev/sda1
    cryptsetup: WARNING: could not determine root device from /etc/fstab
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,如何在dpkg --configure -a失败时获得有效的安装?

rud*_*den 6

我设法挽救了升级,尽管我不是 100% 确定它是有效的。其他人可能仍然受益:

  1. 我设法通过切换到命令行终端 (Ctl+Alt+F2) 然后回到 X 终端 (Ctl+Alt+F7) 来恢复我的 X 会话,然后要求我再次登录。该系统不稳定但有效。然后我能够关闭几个与升级相关的提示。

  2. 似乎更新管理器没有禁用 PPA,所以我清理了/etc/apt/sources.list.d/(删除了所有条目)。有人在 IRC (#ubuntu) 上建议我应该使用 ppa-purge 来清理 PPA,但最后我只是删除了它们。

  3. 在此之后,sudo apt-get updatesudo apt-get -f install清除了大部分剩余问题,但仍然存在与samba.

  4. 我设法通过删除它 ( sudo apt-get remove samba) 并重新安装它 ( sudo apt-get install samba)来修复 samba 。

在此之后,系统或多或少是稳定的。重新启动后,我还必须删除并重新安装 unity,否则它一直运行良好。