Назад | Перейти на главную страницу

скажите yum игнорировать одну зависимость

Я пытаюсь установить winswitch на CentOs 6. Требуется nxagent. Но в centos имя пакета nx. Есть ли способ сказать yum пропустить проверку nxagent зависимость (я установил nx уже)? Указание --skip-broken пропускает все это.

В rpm команда имеет --nodeps вариант, который можно использовать. Проблема в том, что rpm сам по себе не знает о репозиториях yum. Следующая команда установит или обновит пакет, игнорируя зависимости, но автоматически найдя URL-адрес загрузки из ваших репозиториев с помощью repoquery который в пакете yum-utils.

rpm -Uvh --nodeps $(repoquery --location winswitch)

После этого регулярный yum update скорее всего будет успешным без ошибок зависимости.

В общем-то yum не имеет возможности игнорировать отдельный пакет из зависимостей. Вариант --skip-broken игнорирует все неразрешенные зависимости.

Можешь попробовать yum --exclude=packagename но он исключает определенный пакет по имени или глобу из обновлений во всех репозиториях, а не из зависимостей.

Похоже, вы пытаетесь установить пакет, который не был разработан для ОС, т.е. если он был разработан для CentOS, он потребует nx правильно.

Другой способ решения проблемы - создать и установить небольшой RPM-пакет прокладки, который не содержит файлов, но в файле спецификации содержатся следующие строки (среди прочего):

requires: nx
provides: nxagent

Таким образом, зависимость должна быть удовлетворена, однако может ожидаться, что файлы будут находиться в месте, которое отличается от nxagent пакет, который он ожидает установить, и nx пакет, предоставляемый CentOS.

вы также можете использовать rpmrebuild, чтобы изменить метаданные rpm, чтобы они указывали на новое имя пакета. Тогда это будет «ваш» пакет, но он будет более чистым в плане зависимостей от rpm. Я думаю, что нет недостатков в использовании --nodeps.

Этот однострочный пример делает это (tigervnc-server - это устанавливаемый пакет)

rpm -ivh --nodeps ` yumdownloader tigervnc-server | perl -ne 'print $2 if(/^(\[.+\]\s*|)(.*?\.rpm)[\s:]/)'`

Используйте yumdownloader, чтобы автоматически загрузить пакет, затем используйте rpm -i и --nodeps, чтобы установить пакет без проверок зависимостей.