Por que este RPM é “desinstalável”?

1

Às vezes, quando peço ao Zypper para instalar algo, recebo uma mensagem semelhante a esta:

Problem: foo-tools requires foo-lib, but this requirement cannot be provided

Problem: foo-tools requires foo-lib, but this requirement cannot be provided
  uninstallable providers: foo-lib.7.31.13.x86_64
Solution 1: do not install foo-tools
Solution 2: break foo-tools by ignoring some of its dependencies

Por que diabos o Zypper acha que o RPM que eu propus propositadamente deu por essa razão exata é um "provedor desinstalável"? O que esta mensagem significa ? O arquivo RPM é ilegível? Arco errado? Versão errada? O que é que está chateado?

    
por MathematicalOrchid 06.05.2014 / 14:34

2 respostas

2

Acontece que foo-lib tinha dependências não atendidas. Adicioná-los resolveu o problema.

Mas a questão é ... por que Zypper não disse que era o problema? Geralmente, se ocorrer um problema de dependência, será informado sobre o pacote específico que não pôde ser encontrado. Por que recebi essa mensagem "provedor de desinstalação" opaca?

    
por 06.05.2014 / 16:25
1

O RPM mantém um banco de dados de arquivos instalados (por exemplo, executáveis binários e bibliotecas compartilhadas) no sistema.

Alguns softwares, como foo-tools, precisam de outro software (como foo-lib) para funcionar corretamente. Esta informação de dependência é decidida pelo empacotador RPM.

Se você tiver foo-lib e foo-tools disponíveis como arquivos RPM, mas nenhum dos dois estiver instalado, você poderá fornecer ambos (todos) na linha de comandos para o RPM (ou de forma equivalente ao zypper) para fazer RPM veja que todas as dependências serão satisfeitas. Outra opção é instalar os pacotes de pré-requisitos primeiro.

Se foo-lib, por sua vez, tiver suas próprias dependências, elas também devem ser satisfeitas. Eles não são, foo-lib não é um provedor instalável de foo-lib.

Não recomendado: certifique-se de que os pré-requisitos sejam atendidos por outros meios (instale manualmente as coisas necessárias, talvez a partir do código-fonte, e force o Zypper a ignorar as dependências. Fazer isso causará problemas mais tarde, então não faça isso.

    
por 06.05.2014 / 14:45