我已经运行 Debian Wheezy 很长时间了。今天我运行了一个dpkg upgrade
,它以某种方式严重破坏了事情。升级中止,现在apt-get
并dpkg
没有运行。
# dpkg
dpkg: error while loading shared libraries: libselinux.so.1: cannot open shared object file: No such file or directory
我可以下载包含丢失文件的 .deb 文件,但如果没有工作工具,我无法安装它们。我该如何摆脱第22条军规?
答案1
标准目录中的库文件必须注册在缓存中以提高性能。如果升级在错误的时间中止,则库文件可能存在于文件系统中但不在缓存中。跑步ldconfig
以 root 身份更新缓存。
为了帮助解决动态库问题,拥有一些静态链接的实用程序套件会有所帮助:busybox-静态,窗扇,zsh-静态。
答案2
您可以使用和命令.deb
的组合来提取文件的内容:ar
tar
mkdir /tmp/selinux
cd /tmp/selinux
ar p /path/to/libselinux.deb data.tar.gz | tar xz
包的内容将在以当前目录为根的层次结构中解压,您可以将所需的文件移动到适当的位置。对于 libselinux 这可能只是/lib/x86_64-linux-gnu/libselinux.so.1
(目录名称取决于您的体系结构)。
一旦您再次使用该功能,您可能应该dpkg -i
重新安装完整的软件包。