如何修复损坏的 apt/perl 库?

abc*_*old 3 linux debian perl dpkg apt

我已经将 Raspberry Pi 设置为 Web 服务器,直到 5 分钟前一切正常,而且我似乎搞砸了 man-db、apt 或某些 perl 库。由于某些加载错误,apt-get 似乎没有正确更新和安装应用程序:

harry@raspberrypi ~ $ sudo apt-get upgrade

...

将升级以下软件包:

pypy-upstream raspi-config 暂存

...

在 37 秒内获取 40.4 MB (1088 kB/s)

/usr/bin/perl: 加载共享库时出错:/usr/lib/libperl.so.5.14: n onzero padding in e_ident

...

设置 man-db (2.6.2-1) ...

/usr/bin/perl: 加载共享库时出错:/usr/lib/libperl.so.5.14: n onzero padding in e_ident

dpkg: 错误处理 man-db (--configure):

...

处理时遇到错误:man-db

子进程安装后安装脚本返回错误退出状态 127

E:子进程/usr/bin/dpkg返回错误码(1)

完整的 pastebin 在这里:http : //pastebin.com/LYKQ5Xde

我按照某个论坛上的建议尝试了 'sudo dpkg-reconfigure -phigh -a' 并得到了同样的 perl 错误:

/usr/bin/perl:加载共享库时出错:/usr/lib/libperl.so.5.14:e_ident 中的非零填充

非常感谢任何帮助,谢谢!

小智 8

尝试重新安装包含 libperl.so.5.14 的包。该软件包是“perl-base”。尝试

apt-get --reinstall install perl-base
Run Code Online (Sandbox Code Playgroud)

如果这也失败,您可以尝试重新安装包文件(perl-base_5.14....deb)。您可以手动从镜像下载它,或者它甚至可能仍然从 /var/cache/apt/archives 中的最后一次升级中缓存。安装它

dpkg -i perl-base_5.14..whatever..deb
Run Code Online (Sandbox Code Playgroud)

哦,请注意:您可以自己找出文件属于哪个包:

$ dpkg -S libperl.so.5.14
perl-base: /usr/lib/libperl.so.5.14.2
perl-base: /usr/lib/libperl.so.5.14
Run Code Online (Sandbox Code Playgroud)