当尝试安装 wine32 时,我得到
❯ sudo apt install wine32
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
apt : Depends: libapt-pkg6.0 (>= 2.5.0) but it is not going to be installed
Depends: libsystemd0
bsdutils : PreDepends: libsystemd0
util-linux : PreDepends: libsystemd0
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
我只是不明白它们是如何安装的libsystemd0
,也libapt-pkg6.0
可能是它们安装的问题。
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-===================-============-============-==================================
ii libapt-pkg6.0:amd64 2.5.0 amd64 package management runtime library
ii libsystemd0:amd64 250.4-1 amd64 systemd utility library
我该如何解决这个问题?以后如何解决这个问题?
当我运行时dpkg --print-foreign-architectures
它说i386
这是适合的政策libcap2
❯ apt policy libcap2:{amd64,i386}
libcap2:
Installed: 100:2.48-1
Candidate: 100:2.48-1
Version table:
*** 100:2.48-1 100
100 /var/lib/dpkg/status
1:2.44-1 500
500 http://deb.debian.org/debian bookworm/main amd64 Packages
libcap2:i386:
Installed: (none)
Candidate: 1:2.44-1
Version table:
1:2.44-1 500
500 http://deb.debian.org/debian bookworm/main i386 Packages
答案1
您无法安装,wine32
因为它是一个 32 位软件包(i386
在您的情况下,但也可能是armhf
)并且它需要一个libcap2
与其体系结构相匹配的软件包。
libcap2
是一个多架构包,所以这通常不是问题:amd64
并且i386
版本可以并行安装,就像任何 Debian 架构的版本一样。但多架构打包必须在所有架构上以相同版本安装。apt
找不到与libcap2:i386
您的 版本匹配的版本libcap2:amd64
,因此它考虑删除后者及其所有依赖项,这会导致您最初的错误中描述的不可能的情况。
就调查而言,对于多架构场景,首先要检查的是配置的外部架构。我还检查了错误中的软件包版本是否是最新的(以确保系统不需要apt upgrade
)。然后,考虑到错误中情况的奇怪性,进一步研究就没有什么意义了;相反,使用包解析器的调试输出再次尝试安装可能会给出一些问题的指示。第一个问题涉及libcap2
一个不可能的版本(存储库中没有包的纪元为 100),这表明跨架构的版本不匹配:
Investigating (0) libsystemd0:amd64 < 250.4-1 @ii K Ib >
Broken libsystemd0:amd64 PreDepends on libcap2:amd64 < 100:2.48-1 @ii pR > (>= 1:2.24-9~)
Considering libcap2:amd64 0 as a solution to libsystemd0:amd64 611
Added libcap2:amd64 to the remove list
要解决此问题,您必须提供匹配的i386
版本libcap2
,或者降级libcap2:amd64
到存储库中的版本。
答案2
斯蒂芬的回答在调查中是正确的(一如既往),
斯蒂芬有这里是另一个出色的答案,这是我需要调查这个问题的第二部分。纪元 500 以及该包不在当前存储库中的事实(根据确定应该提出我从哪里得到它的问题。)
斯蒂芬基本上确定它来自另一个存储库。具体来说,我有一个存储库,
devel:kubic:libcontainers:stable.list
其中指定了一行# deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Debian_Testing/ /
所以基本上,我有那个存储库,它被注释掉了,它安装的包被固定到
2.48
并且不提供 i386。
针对具体案例的解决方案
在这种情况下,我先尝试降级软件包
sudo apt-get install libcap2=1:2.44-1
然后我就可以安装了wine32
,其他奇怪的事情就停止了。