我正在尝试在系统armel
上安装库和 gcc 支持armhf
。我已经安装了libc6-dev:armel
以获取armel
库和标头,现在我认为我需要安装gcc-multilib
才能让 gcc 使用它们(当-mfloat-abi=softfp
指定时)。但是,软件包安装失败:
$ sudo apt-get install gcc-4.6-multilib
Reading package lists... Done
Building dependency tree
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:
gcc-4.6-multilib : Depends: libsfgcc1 (>= 1:4.6.3-1ubuntu5) but it is not going to be installed or
libgcc1-armel but it is not installable
E: Unable to correct problems, you have held broken packages.
libgcc1-armel
是我已经安装的包提供的虚拟包:
$ dpkg -s libgcc1:armel | egrep 'Version|Provides'
Version: 1:4.6.3-1ubuntu5
Provides: libgcc1-armel
为什么这个包已经安装但 apt 认为不可卸载?
注意:我已尝试使用 precise 的 apt/dpkg(armel
在中指定为外部架构/etc/dpkg/dpkg.cfg.d/architectures
)和 quantal 的 apt/dpkg(似乎具有更成熟的多架构支持,例如dpkg --add-architecture
)。
注 2:使用libsfgcc1
而不是libgcc1:armel
允许安装此库,但会阻止安装其他多架构库,例如libssl1.0.0:armel
,这只需要libgcc1:armel
。我猜这libsfgcc1
是一个在真正的多架构支持之前引入的过渡库。
答案1
Apt 的错误可能相当难以理解。
这里的问题是,您安装了第一个选项,但我们实际上想要安装第二个选项并卸载第一个选项。
给出提示,apt-get install gcc-4.6-multilib libsfgcc1
对我来说就成功了。
答案2
(根据我对 Debian 的 Multiarch 规范的理解,这只是一个猜测:)
在这种情况下,如果libgcc1-armel
是 *:armel 包的“提供”,那么它也许被认为是像libgcc1-armel:armel
,不是吗?
而像 这样的外部架构包libgcc1-armel:armel
无法满足本地架构包的要求(libgcc1-armel
就像libgcc1-armel:armhf
),除非它被标记为“Multi-Arch: foreign”或“Multi-Arch: allowed”,并且依赖关系将指定为“:armel”。但对于虚拟包如何实现这一点尚不清楚...