Por que este RPM é “desinstalável”?

Por que este RPM é “desinstalável”?

À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 pensa que o RPM que eu dei propositalmente por esse motivo exato é um "provedor desinstalável"? O que esta mensagemsignificar? O arquivo RPM está ilegível? Arco errado? Versão errada?Por que está chateado??

Responder1

Acontece que foo-libele próprio tinha dependências não atendidas. Adicioná-los resolveu o problema.

Mas a questão é... por que o Zypper nãodizeresse era o problema? Normalmente, se ocorrer um problema de dependência, ele informa sobre o pacote específico que não foi encontrado. Por que recebi esta mensagem opaca de "provedor desinstalável"?

Responder2

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 o foo-tools, precisam de outro software (como o foo-lib) para funcionar corretamente. Essas informações de dependência são decididas pelo empacotador RPM.

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

Se foo-lib, por sua vez, tiver suas próprias dependências, elas também deverão ser satisfeitas. Se não forem, 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 os itens necessários manualmente, 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.

informação relacionada