Por que não consigo instalar várias versões x86 e x86_64 de uma biblioteca lado a lado?

3

Saída editada:

# apt-get install librados2:amd64 librados2:i386
The following packages have unmet dependencies:
 librados2:amd64 : Conflicts: librados2 but 0.80.7-2+deb8u1 is to be installed
 librados2 : Conflicts: librados2:amd64 but 0.80.7-2+deb8u1 is to be installed
E: Unable to correct problems, you have held broken packages.

# apt-cache show librados2:amd64=0.80.7-2+deb8u1 librados2:i386=0.80.7-2+deb8u1

Package: librados2
Version: 0.80.7-2+deb8u1
Architecture: amd64
Replaces: libcrush, libcrush1, librados, librados1
Depends: libboost-system1.55.0, libboost-thread1.55.0, libc6 (>= 2.14), libgcc1 (>= 1:4.1.1), libnspr4 (>= 2:4.9-2~) | libnspr4-0d (>= 1.8.0.10), libnss3 (>= 2:3.13.4-2~) | libnss3-1d (>= 3.12.0~1.9b1), libstdc++6 (>= 4.9), libuuid1 (>= 2.16)
Pre-Depends: multiarch-support
Conflicts: libcrush, libcrush1, librados, librados1
Tag: role::shared-lib
Section: libs


Package: librados2
Version: 0.80.7-2+deb8u1
Architecture: i386
Replaces: libcrush, libcrush1, librados, librados1
Depends: libboost-system1.55.0, libboost-thread1.55.0, libc6 (>= 2.9), libgcc1 (>= 1:4.1.1), libnspr4 (>= 2:4.9-2~) | libnspr4-0d (>= 1.8.0.10), libnss3 (>= 2:3.13.4-2~) | libnss3-1d (>= 3.12.0~1.9b1), libstdc++6 (>= 4.9), libuuid1 (>= 2.16)
Pre-Depends: multiarch-support
Conflicts: libcrush, libcrush1, librados, librados1
Tag: role::shared-lib
Section: libs

Por que Conflicts: ? Eu não vejo essa biblioteca na lista de conflitos exibida por apt-cache info (há librados 1 , não librados 2 ) ...

O que impede ter librados2:i386 em /usr/lib/i386-linux-gnu/librados.so.2.0.0 e librados2:amd64 em /usr/lib/x86_64-linux-gnu/librados.so.2.0.0 ?

    
por Vi. 07.07.2016 / 00:21

1 resposta

1

O mesmo pacote só pode ser co-instalado para várias arquiteturas diferentes se declarar Multi-Arch: same em suas informações de controle. (Um pré-requisito para isso é garantir que os arquivos dos pacotes em questão não se sobreponham de maneiras problemáticas.) Isso não foi feito para esse pacote, portanto, ele não pode ser co-instalado em várias arquiteturas. O Conflicts que você vê é gerado internamente pelo sistema de empacotamento para pacotes com o mesmo nome em várias arquiteturas que não são declaradas como Multi-Arch: same .

Mesmo depois de corrigido, para que tudo funcione corretamente, todas as dependências dos pacotes que você está tentando co-instalar devem ser co-instaláveis ou devem ter outro tipo de tag ( Multi-Arch: foreign ou Multi-Arch: allowed , dependendo da situação exata ) que permita que eles sejam usados para satisfazer dependências entre arquiteturas.

Existe um erro de abertura pedindo que este pacote seja habilitado para multiarch.

Você pode se perguntar sobre o campo de controle Pre-Depends: multiarch-support . Isso fazia parte da movimentação de bibliotecas compartilhadas em caminhos dependentes da arquitetura, o que é um pré-requisito para criar um pacote de biblioteca Multi-Arch: same , mas era apenas parte do trabalho.

    
por 27.11.2017 / 17:16