如何修复 apt-get check` 失败,你可能有损坏的软件包

如何修复 apt-get check` 失败,你可能有损坏的软件包

我尝试通过删除并重新安装 box autodl 包来修复在运行 Ubuntu 18.04.1 LTS(GNU/Linux 4.9.0-15-amd64 x86_64)和 Swizzin Box 的租用专用服务器上损坏的 autodl irssi 安装。

删除 autodl 得到:-

SUCCESS autodl removed 
ERROR dpkg database is locked by apt-get. Please try again later

尝试重新安装它,结果显示:-

INFO Installing autodl 
E: Unable to correct problems, you have held broken packages. 
ERROR The simulation check resulted in an error. Please consult the log.

日志显示

Reading package lists...
Building dependency tree...
Reading state information...
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 pkg-config : Depends: libdpkg-perl but it is not installed

运行'apt --fix-broken install' 得到:-

0 upgraded, 0 newly installed, 1 to remove and 107 not upgraded.
After this operation, 193 kB disk space will be freed.
Do you want to continue? [Y/n] y

(Reading database ... 87206 files and directories currently installed.)

Removing pkg-config (0.29-4+b1) ...

Can't locate Dpkg/Arch.pm in @INC (you may need to install the Dpkg::Arch module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.26.1 /usr/local/share/perl/5.26.1 /usr/lib/x86_64-linux-gnu/perl5/5.26 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.26 /usr/share/perl/5.26 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /usr/share/pkg-config-dpkghook line 14.

BEGIN failed--compilation aborted at /usr/share/pkg-config-dpkghook line 14.

dpkg: error processing package pkg-config (--remove):

 subprocess installed pre-removal script returned error exit status 2

Errors were encountered while processing:

 pkg-config

E: Sub-process /usr/bin/dpkg returned an error code (1)

有人对我如何解决这个问题有什么建议吗?

答案1

尝试sudo apt --fix-broken install libdpkg-pearl。此外,查看是否有任何固定的软件包:运行apt policy,并检查是否有任何有趣的东西。在这种情况下,“有趣的东西”包括任何第三方存储库:如果该行不包含“ubuntu.com”,则很可疑。

在某些情况下,需要第三方存储库(非 Canonical 的存储库),例如无法重新分发的专有软件或软件的最新上游版本是硬性要求时。但是,这些存储库必须专门设计为与您拥有的任何操作系统的基本安装兼容,并且不应包含无关的软件包。您绝对不应该尝试通过添加对另一个操作系统的引用来获得兼容性:例如,通过将 Debian Stretch 添加为 Ubuntu Bionic 版本的软件包源。可能会发生许多奇怪的软件包冲突和意外替换。

我无法在 chroot 中重现这种情况:apt --fix-broken install即使在进行了一些积极的删除后,它仍然有效。Aptitude 可能会为您提供更多信息,但考虑到您当前的软件包混乱,我怀疑您是否能够运行它。 pastebin 将dpkg --list是下一个调试信息。

相关内容