Иногда, когда я прошу Zypper что-то установить, я получаю сообщение, похожее на это:
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
Какого черта Zypper думает, что RPM, который я ему намеренно дал именно по этой причине, является "неустанавливаемым поставщиком"? Что означает это сообщениеиметь в виду? Файл RPM не читается? Неправильная архитектура? Неправильная версия?Что его расстроило?
решение1
Оказывается, у foo-lib
него самого были неудовлетворенные зависимости. Добавление их решило проблему.
Но вот в чем вопрос... почему Зиппер не...сказатьв чем была проблема? Обычно, если возникает проблема с зависимостью, она сообщает вам о конкретном пакете, который не удалось найти. Почему я получил это непрозрачное сообщение "неустановимый поставщик"?
решение2
RPM хранит базу данных установленных файлов (например, двоичных исполняемых файлов и общих библиотек) в системе.
Некоторое программное обеспечение, например foo-tools, нуждается в другом программном обеспечении (например, foo-lib) для правильной работы. Эта информация о зависимостях определяется упаковщиком RPM.
Если у вас есть foo-lib и foo-tools, доступные в виде файлов RPM, но ни один из них не установлен, вы можете предоставить их оба (все) в командной строке RPM (или эквивалентным способом zypper), чтобы RPM увидел, что все зависимости будут удовлетворены. Другой вариант — сначала установить необходимые пакеты.
Если foo-lib в свою очередь имеет свои собственные зависимости, они также должны быть удовлетворены. Если нет, foo-lib не является устанавливаемым поставщиком foo-lib.
Не рекомендуется: убедитесь, что предварительные условия выполнены другими способами (установите необходимые компоненты вручную, возможно, из исходного кода, и заставьте Zypper игнорировать зависимости). Это приведет к проблемам в дальнейшем, поэтому не делайте этого.