修复损坏的 dpkg 和 apt 包管理器

修复损坏的 dpkg 和 apt 包管理器

我正在运行虚拟机,之前我从未管理过它,现在它处于不良状态(但我需要拯救它)。我不是 Linux 专家,但在过去 5 年里,我能够使用谷歌解决问题。昨天忙了一整天,我不知道除了陈述我的问题并提出愚蠢的问题外,我还能做什么。

  • 系统无法进行常规启动(但是我可以打开救援根 shell,在其中可以挂载文件系统并在一定程度上启用网络(我可以访问外部网络,但无法打开端口 22 或启动 ssh 守护进程 - 但是我可以启动 apache 并打开端口 80)
  • 我无法安装或删除软件,因为 dpkg 总是抱怨旧的 linux 头文件映像(我认为以前的管理员已经从启动分区手动删除了 linux 头文件以腾出空间。)
  • 现在每次我尝试执行 apt-get install 或 remove 或 upgrade 或任何其他操作时,它都会抱怨 dkpg 中有太多错误,尤其是一些旧的 linux 映像有错误(我的启动分区上没有),然后它会中止。它还会抱怨找不到文件(与旧的 linux 标头相关)
  • 我发现一条建议重新安装 grub2 的说明,我照做了。我认为删除是可行的,但安装却失败了,因为其他软件也无法安装。我非常有信心,下次我想重新启动机器时,我甚至无法进入救援系统,因为 grub2 似乎已被卸载。
  • 我不能做类似的事情apt-get install linux-image-generic

我知道这篇文章甚至没有提出一个合适的问题,但我甚至不知道如何提出一个问题。似乎有很多东西都坏了,显然我有点不知道从哪里开始。

编辑

输出dpkg --get-selectionshttp://pastebin.com/CRFaaJ7m

输出apt-get install linux-generichttp://pastebin.com/7t20Bavu

输出dpgk --configure -ahttp://pastebin.com/Hpmch9dM

此外我认为输出可能很有趣(特别是从第 484 行开始):http://pastebin.com/uUi86FtT

答案1

从状态中只能看到一个旧内核dpkg,但我不确定它是否真的在磁盘上。

反正:

  1. 备份 DPKG 状态文件

    cp /var/lib/dpkg/status /var/lib/dpkg/status.backup0
    
  2. 从 DPKG 状态中清除那些手动删除的内核

    检查哪一行是包条目

    grep -n linux-image-extra-3.13.0-93-generic /var/lib/dpkg/status
    

    打开状态以供编辑(xxxxx随行号变化)

    nano +xxxxx /var/lib/dpkg/status
    

    将其状态更改为deinstall如本例

    Package: linux-image-extra-3.13.0-93-generic
    Status: install ok installed
    

    Package: linux-image-extra-3.13.0-93-generic
    Status: deinstall ok config-files
    

    Ctrl+O保存 & Ctrl+X退出

  3. 对以下软件包执行上一步

    linux-image-3.13.0-93-generic
    linux-image-extra-3.13.0-101-generic
    linux-image-3.13.0-101-generic
    
  4. 修改 DBus 安装后脚本以跳过错误

    nano /var/lib/dpkg/info/dbus.postinst
    

    并评论set -e#set -e(第 5 行左右)

  5. 继续上一次安装

    dpkg --configure -a
    
  6. 修复依赖项

    apt -f install
    

相关内容