Настройка depencencies в файле спецификации RPM


Я пытаюсь разместить веб-приложение django, используя RPM.

Этот RPM-пакет, устанавливаемый на простую металлическую машину centos, должен установить все необходимые зависимости и настроить сервер httpd для обслуживания приложения.

Это суть моего файла спецификации RPM.

Requires:       epel-release, python2, python-setuptools, python-pip, python-virtualenv, python-devel, httpd, mod_wsgi, git, sqlite

Насколько мне известно, python-pip можно установить на centos 7 после установки пакета epel-release.

Https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F

Так что в принципе,

Мой пакет RPM -- > зависит от --> python-pi --> зависит от --> epel-release

Именно поэтому я добавил epel-release в качестве первой зависимости в моем файле спецификации в требуется тег.

Однако, когда я устанавливаю свой пакет RPM, я получаю ошибку и установка завершается неудачей.

Вот как я устанавливаю свой пакет.

yum localinstallinstall packagename-1-1.0.x86_64.rpm -v

Ошибка, которую я получаю: "не найден пакет python-pip"

Epel-релиз помечен для установки. Но пока не установлен, и поскольку python-pip также не найден, он терпит неудачу.

Чего я хочу добиться, так это установить epel-release, а затем установить python-pip.

1 2

1 ответ:

RPM пытается разрешить все зависимости Перед установкой чего-либо. Это мешает вам установить кучу пакетов, а затем сказать "Ой, мы не можем найти python-pip" и откатиться назад. Если пакет epel-release еще не установлен, то yum не знает, где найти python-pip, поэтому он не может настроить зависимости.

Проблема в том, что python-pip не зависит от epel-release таким же образом; это не зависимость, управляемая системой RPM. Вместо этого установка epel-release расскажет yum о новое хранилище, о существовании которого он раньше и не подозревал. Как только у него это есть, он может установить python-pip просто отлично.

Вместо этого вы должны отбросить зависимость epel-release и просто сказать в документации, что ваш пакет требует EPEL.