apt reports dependency “não é instalável” para o pacote instalado (virtual)

4

Estou tentando instalar armel libraries e o suporte gcc em um sistema armhf . Instalei libc6-dev:armel para obter as bibliotecas e cabeçalhos armel e agora acredito que preciso instalar gcc-multilib para que o gcc possa usá-los (quando -mfloat-abi=softfp for especificado). No entanto, a instalação do pacote falha:

$ 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 é um pacote virtual fornecido por um pacote que eu já instalei:

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

Por que o apt considera este pacote desinstalável quando já está instalado?

Nota: Eu tentei isso com o apt / dpkg de preciso (com armel especificado como uma arquitetura externa em /etc/dpkg/dpkg.cfg.d/architectures ) e com o apt / dpkg do quantal (que parece ter suporte multi-arch mais maduro , como dpkg --add-architecture ).

Observação 2: usar libsfgcc1 em vez de libgcc1:armel permite que essa biblioteca seja instalada, mas impede a instalação de outras bibliotecas de vários arcos, como libssl1.0.0:armel , que exige apenas libgcc1:armel . Eu estou supondo que libsfgcc1 é uma biblioteca de transição que foi introduzida antes do verdadeiro suporte multi-arch.

    
por Trevor Robinson 16.10.2012 / 20:43

2 respostas

0

Os erros do Apt podem ser bastante difíceis de entender.

O problema aqui é que você tem a primeira opção instalada, mas nós realmente queremos instalar a segunda opção e desinstalar a primeira.

Dando uma dica, com apt-get install gcc-4.6-multilib libsfgcc1 faz o truque para mim.

    
por tumbleweed 06.11.2012 / 15:03
0

(Apenas um palpite baseado na minha leitura da especificação do Multiarch do Debian:)

Nesse caso, se libgcc1-armel for uma "oferta" de um pacote *: armel, talvez seja considerado como libgcc1-armel:armel , não é?

E um pacote de arcitecture estrangeiro como libgcc1-armel:armel não pode satisfazer o requisito do pacote de arquitetura nativa ( libgcc1-armel , que é como libgcc1-armel:armhf ), a menos que seja marcado como "Multi-Arch: foreign" ou "Multi-Arch : permitido "e a dependência seria especificada para": armel ". Mas isso não está claro como alcançar um pacote virtual ...

    
por imz -- Ivan Zakharyaschev 08.01.2013 / 00:48