Debian 删除了 /var/lib/dpkg/info/,有没有办法挽救系统?

Debian 删除了 /var/lib/dpkg/info/,有没有办法挽救系统?

意外删除了 /var/lib/dpkg/info/,现在我在安装/删除软件包时遇到问题,它提示错误,因为找不到有关已安装软件包的信息。

有什么办法可以拯救系统或者需要完全重新安装 debian?:/

答案1

您应该能够使用如下方法重新生成目录:

for i in $(dpkg -l|awk '/^ii/ {print $2}')
do
    apt-get --reinstall -y install $i
done

该代码片段应该做的是重新安装您已经安装的每个软件包。它还将升级所有内容。如果您不想这样做,则必须扩展脚本以安装您当前已安装的特定版本,但这不能保证有效,因为这些软件包可能不再存在于存储库中。

更多信息和略有不同的方法: http://people.adams.edu/~cdmiller/posts/Ubuntu-dpkg-recovery/

编辑:上述链接文章中的重要提示:

由于 /var/lib/dpkg 中缺少更多内容,某些软件包仍无法正确安装。特别是软件包“ucf”对于启用内核和其他一些软件包的正确安装非常重要。

如果没有 /var/lib/dpkg/info/ucf.templates,内核安装会产生以下错误:

failed to install/upgrade: User postinst hook script [/sbin/update-grub] exited with value 10

安装 ucf:

apt-get --reinstall install ucf

该文章介绍了从完全删除中恢复全部,因此/var/lib/dpkg这个额外的步骤可能不适用于您的情况。

答案2

好吧,这一天和其他日子一样,为什么呢?因为我遇到了一个有点类似的问题,但这次只与一些软件包有关,并显示以下消息:

日志开始时间:2019-09-22 16:12:10
dpkg:无法恢复的致命错误,正在中止:
 正在读取软件包‘apt’的文件列表:错误地址
日志结束时间:2019-09-22 16:12:10

我解决这个问题的方式有点类似,但也有一些不同,例如:

我没有将整个目录重命名为“/var/lib/dpkg/info/”,而是移动了那些给我带来麻烦的文件(包名称),在本例中是“apt”包。

  • 所以我首先过滤了与模式“^apt”相关的包:
mlazo@mlazo-pc:~$ dpkg -l|awk'/^ii apt/{打印 $2}'
易于
apt-config-图标
apt-config-图标-hidpi
apt-config-图标-大
apt-config-icons-large-hidpi
apt-transport-https
apt-utils
apt-xapian-index
apt守护进程
aptdaemon 数据
  • 在目录“/var/lib/dpkg/info”中,我创建了一个目录并移动了与前面的列表匹配的文件:
cd /var/lib/dpkg/info
mdkir ../info_back
mv -v $(ls |grep -i "^apt") ../info_back/
  • 文件移动后,我继续执行重新安装过程:
对于 $(dpkg -l| awk '/^ii apt/ {print $2}') 中的 x;执行 apt-get install --reinstall ${x} -y;完成
  • 在处理过程中,我检查了“/var/log/apt/term.log”,得到了以下确认:
mlazo@mlazo-pc:~$ tail -n 20000 /var/log/apt/term.log |grep -i "准备解压.../apt"
准备解压 .../apt-config-icons_0.12.0-3ubuntu1_all.deb ...
准备解压 .../apt-config-icons-hidpi_0.12.0-3ubuntu1_all.deb ...
准备解压 .../apt-config-icons-large_0.12.0-3ubuntu1_all.deb ...
准备解压 .../apt-config-icons-large-hidpi_0.12.0-3ubuntu1_all.deb ...
准备解压 .../apt-transport-https_1.6.12_all.deb ...
准备解压 .../apt-utils_1.6.12_amd64.deb ...
准备解压 .../apt-xapian-index_0.47ubuntu13_all.deb ...
准备解压 .../aptdaemon_1.1.1+bzr982-0ubuntu19.1_all.deb ...
准备解压 .../aptdaemon-data_1.1.1+bzr982-0ubuntu19.1_all.deb ...

  • 重新安装过程完成后,我继续执行升级过程,并得到成功的结果:
root@mlazo-pc:/var/lib/dpkg/info# apt-get 升级
..
..
..
处理 initramfs-tools (0.130ubuntu3.8) 的触发器...
update-initramfs:生成 /boot/initrd.img-5.0.0-25-generic
处理 libvlc-bin:amd64 (3.0.8-0ubuntu18.04.1) 的触发器...

通过我之前执行的步骤,它可以在 30 分钟内完成,而不是 4 个小时。

希望前面的步骤能够对某些人有所帮助。

此致,

曼努埃尔·拉佐

相关内容