Como o rpm resolve dependências de bibliotecas?

4

Eu tento fazer um pacote de um programa que está vinculado a essa biblioteca (saída do ldd):

libwx_baseu-2.8.so.0 => /usr/lib64/wx-2.8-wxcontainer/libwx_baseu-2.8.so.0

Bastante simples, certo? Mas quando eu faço um pacote deste programa (com o rpmbuild) e então tento instalá-lo, o rpm reclama sobre falta de biblioteca (esta acima):

error: Failed dependencies:

    libwx_baseu-2.8.so.0()(64bit) 
    libwx_baseu-2.8.so.0(WXU_2.8)(64bit)

Meu palpite é que o rpmbuild defina a dependência para o diretório lib principal, por exemplo, / usr / lib64.

Pergunta - como corrigir esse problema (ok, um seria forçado a instalar, mas eu gostaria de evitá-lo)? Ou seja como construir rpm para que as dependências configurassem para o subdiretório wx-2.8-wxcontainer (para esta biblioteca)?

openSUSE 11.4, se isso for importante.

Editar

Eu posso instalar esse pacote com o --nodeps que força a instalação, e depois que o programa de instalação funcionar perfeitamente. Então, claramente, o rpm ou o rpmbuild tem problemas, não o próprio sistema.

    
por greenoldman 30.05.2011 / 22:30

2 respostas

2

Eu acho que isso é limitação ou bug nas versões atuais do rpm / rpmbuild. Eu relatei esse problema, então acho que de certa forma a pergunta foi respondida:

link

Você sempre tem que instalar o wx rpms em pares - um com a biblioteca real, o outro pacote que simplesmente diz "a biblioteca foi instalada".

  • libwx_baseu_net-2_8-0-wxcontainer-2.8.12-3.1.x86_64
  • libwx_baseu_net-2_8-0- compat-lib -wxcontainer-2.8.12-3.1.x86_64

Sem o segundo rpm, o gerenciador de pacotes e / ou aplicativo dependente não saberia que a biblioteca wx correspondente está presente.

    
por 11.06.2011 / 18:16
1

Eu acho que você está misturando arquivos e pacotes.

O fato de a biblioteca existir no seu disco não significa que ela possa ser usada para resolver uma dependência. Para isso, tem que haver um pacote que forneça esta biblioteca.

Por outro lado, para a resolução de dependências, o arquivo nem precisa existir. Apenas o fato de que algum pacote instalado fornece deve ser suficiente.

    
por 30.05.2011 / 23:15