O RPM diz que falta dependência, mas eu já instalei essa biblioteca (da origem)

4

Ao instalar um pacote rpm , ele avisa que há uma biblioteca dependente necessária ausente. Na verdade, eu já instalei essa biblioteca da fonte, então eu acho que rpm simplesmente não sabe disso.

Em seguida, posso informar rpm sobre a biblioteca existente e como? Talvez adicione algum código em um arquivo rpm configure?

A propósito, instalar a biblioteca ausente (novamente) por rpm pode resolver o problema (rapidamente), mas às vezes não há versão rpm disponível.

    
por shintaroid 01.08.2016 / 03:46

2 respostas

7

O banco de dados de dependência de RPM não pode informar que você instalou um pacote da origem. O banco de dados RPM só sabe sobre os metadados presentes nos pacotes RPM, um pacote instalado a partir da fonte não contém esses metadados.

Alguns scripts de configuração que criam um pacote a partir do código-fonte produzem pkg-config , que são metadados sobre o pacote instalado. No entanto, não há uma integração clara entre os metadados dos metadados pkg-config e RPM (ou DEB metadata ou pacman metadata). Ao empacotar uma distro, os empacotadores inserem os metadados em um formato específico nos pacotes (por exemplo, pacotes RPM) e esse metadado é aquele usado para determinar as dependências. Não são fornecidos metadados de nenhuma outra forma.

Por outro lado, você pode ter versões diferentes de uma biblioteca no mesmo sistema. Por padrão (ou seja, de acordo com os padrões de codificação GNU que a maioria dos pacotes segue), um script configure deve instalar seu produto em /usr/local . Embora os pacotes empacotados pela distribuição (por exemplo, RPM ) devam instalar seu conteúdo em /usr .

Portanto, se você seguir a convenção (chamada de FHS ) e manter os pacotes / bibliotecas instalados a partir do código-fonte em /usr/local , em seguida, instalar a mesma biblioteca por meio de RPM não entrará em conflito com sua biblioteca (já que os empacotadores da distribuição seguem o FHS).

Quando não há RPM disponível, você pode construir você mesmo. Para isso, você precisa construir o pacote / biblioteca a partir do código-fonte e instalá-lo em um local fictício (uma raiz de compilação). Em seguida, forneça os metadados necessários para o pacote RPM e empacote-o em um arquivo RPM. O TLDP tem um guia sobre a construção de RPMs datado, mas muito completo .

    
por 01.08.2016 / 04:22
5

Esse é um bom motivo para se ater aos gerenciadores de pacotes, como yum , ou, no pior dos casos, para rpm , mas evite instalar da origem.

A solução, portanto, seria instalar essa dependência ausente com um pacote RPM. Seria uma boa idéia remover o que você instalou da fonte primeiro, mas isso pode ser um pouco difícil.

    
por 01.08.2016 / 03:55