Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I'm trying to install armel libraries and gcc support on an armhf system. I've installed libc6-dev:armel to get the armel libraries and headers, and now believe that I need to install gcc-multilib to get gcc to use them (when -mfloat-abi=softfp is specified). However, the package installation fails:

$ 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 is a virtual package provided by a package I already have installed:

$ dpkg -s libgcc1:armel | egrep 'Version|Provides'
Version: 1:4.6.3-1ubuntu5
Provides: libgcc1-armel

Why does apt consider this package uninstallable when it is already installed?


Note: I've tried this with both apt/dpkg from precise (with armel specified as a foreign architecture in /etc/dpkg/dpkg.cfg.d/architectures) and with apt/dpkg from quantal (which seems to have more mature multi-arch support, such as dpkg --add-architecture).

Note 2: Using libsfgcc1 instead of libgcc1:armel allows this library to be installed, but precludes installation of other multi-arch libraries like libssl1.0.0:armel, which requires libgcc1:armel only. I'm guessing that libsfgcc1 is a transitional library that was introduced before true multi-arch support.

share|improve this question

2 Answers 2

Apt's errors can be fairly hard to understand.

The problem here is that you have the first option installed, but we really want to install the second option and uninstall the first.

Giving it a hint, with apt-get install gcc-4.6-multilib libsfgcc1 does the trick for me.

share|improve this answer
1  
Thanks, but please see Note 2. I don't want libsfgcc1 installed; I want libgcc1:armel because it's required by libssl1.0.0:armel. So the question is, why is libgcc1-armel seen as an unmet dependency when it's provided by libgcc1:armel, which is already installed? –  Trevor Robinson Nov 6 '12 at 18:31
    
@Trevor, if libgcc1-armel is a "provides" of an *:armel package, then it's perhaps considered to be like libgcc1-armel:armel (which can't satisfy the libgcc1-armel:armhf requirement, unless it would be marked "Multi-Arch: foreign" or "Multi-Arch: allowed" and the dependency would be specified for ":armel")? –  imz -- Ivan Zakharyaschev Jan 7 '13 at 23:41

(Just a guess based on my reading of the Multiarch spec from Debian:)

In this case, if libgcc1-armel is a "provides" of an *:armel package, then it's perhaps considered to be like libgcc1-armel:armel, isn't it?

And a foreign arcitecture package like libgcc1-armel:armel can't satisfy the native architecture package requirement (libgcc1-armel which is like libgcc1-armel:armhf), unless it would be marked "Multi-Arch: foreign" or "Multi-Arch: allowed" and the dependency would be specified for ":armel". But that's not clear how to achieve for a virtual package...

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.