为什么使用“dpkg -x”会杀死我的 19.04 系统?

为什么使用“dpkg -x”会杀死我的 19.04 系统?

我刚刚关闭了我的 19.04 系统。

我正在运行sudo apt-get upgrade并想安装atop 包裹用于监控目的,不会中断升级过程。

dpkg -x因此我决定下载该软件包并使用以下命令将其提取到文件系统中(不要在真正的 19.xx 系统上尝试它们!):

apt download atop
sudo dpkg -x atop_..._amd64.deb /

然后我无法使用包括sudo和在内的所有命令apt

这是一个虚拟机,所以我有一个快照。报告错误 1843476到 LaunchPad 大约 19.04 和 19.10。

但我的方法有什么问题呢?

我之前在 Ubuntu 16.04 LTS 和 18.04 LTS 上使用过它,没有问题。
当然,运行后dpkg -x我习惯sudo apt install以正常方式安装包,以便将其列在 中/var/lib/dpkg/status

答案1

在新安装的系统上/lib有一个指向以下内容的符号链接/usr/lib

$ ls -l /lib
lrwxrwxrwx 1 root root 7 Apr 30 02:24 /lib -> usr/lib

但已用新内容dpkg -x覆盖了符号链接/lib

在被终止的系统上,它现在只包含一个文件夹(来自atop 包装内容):

/lib/systemd/system-sleep/atop-pm
/lib/systemd/system/atop.service
/lib/systemd/system/atopacct.service

因此系统找不到库。

我通过启动 LiveCD、安装有问题的系统并重新创建符号链接解决了这个问题:

cd /media/user/problematic-disk/
sudo mv lib/* usr/lib
sudo rmdir lib
sudo ln -s usr/lib lib

最后用 重新安装该包sudo apt install --reinstall atop


注意:
1. Ubuntu 16.04 LTS 和 18.04 LTS 不受影响,因为它们在该/级别上没有符号链接(内核和 initrd 除外)。2
.该方法应非常谨慎使用(作为修复问题的最后机会) ,并且根本不应在 19.04 及更新版本中使用,dpkg -x因为顶层有许多符号链接(bin -> usr/bin,,,,,,)lib -> usr/liblib32 -> usr/lib32lib64 -> usr/lib64libx32 -> usr/libx32sbin -> usr/sbin

相关内容