A veces, cuando le pido a Zypper que instale algo, aparece un mensaje similar a este:
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 qué diablos piensa Zypper que el RPM que le di deliberadamente por esta razón exacta es un "proveedor desinstalable"? ¿Qué significa este mensaje?significar? ¿El archivo RPM es ilegible? ¿Arco equivocado? ¿Versión equivocada?¿Por qué está molesto?
Respuesta1
Resulta que foo-lib
él mismo tenía dependencias insatisfechas. Agregar estos solucionó el problema.
Pero la pregunta es... ¿por qué Zypper nodecirese fue el problema? Generalmente, si ocurre un problema de dependencia, le informa sobre el paquete específico que no se pudo encontrar. ¿Por qué recibí este mensaje opaco de "proveedor desinstalable"?
Respuesta2
RPM mantiene una base de datos de archivos instalados (por ejemplo, ejecutables binarios y bibliotecas compartidas) en el sistema.
Algunos programas, como foo-tools, necesitan otro software (como foo-lib) para funcionar correctamente. Esta información de dependencia la decide el empaquetador RPM.
Si tiene foo-lib y foo-tools disponibles como archivos RPM, pero ninguno está instalado, puede proporcionarlos (todos) en la línea de comando a RPM (o en una forma equivalente a zypper), para que RPM vea que todos las dependencias quedarán satisfechas. Otra opción es instalar primero los paquetes de requisitos previos.
Si foo-lib a su vez tiene sus propias dependencias, estas también deben satisfacerse. Si no lo son, foo-lib no es un proveedor instalable de foo-lib.
No recomendado: asegúrese de que se cumplan los requisitos previos por algún otro medio (instale las cosas requeridas manualmente, tal vez desde la fuente, y obligue a Zypper a ignorar las dependencias. Hacer esto causará problemas más adelante, así que no lo haga.