Я пытаюсь установить 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, чтобы установить пакет без проверок зависимостей.