TL; DR: я создал файл .spec, который успешно создает .rpm
, но rpm -i <file>.rpm
не выполняет все действия, которые, как мне кажется, должны.Зачем?
Выдержка из <file>.spec
:
%install
sudo python2.7 -m pip install 'tornado<5'
...#other pip commands...
cp -r $RPM_BUILD_DIR/%{name}-%{version}/* %{buildroot}
(я знаю, что это не идеальный способ сделать это, но я вынужден использовать CentOS 6 и не могу обновитьсистемная версия python, потому что корпоративная / общая среда, так что это был лучший способ, который я мог выяснить.)
Все команды в %install
правильно выполняются при сборке .rpm
, поэтому все pip
пакеты устанавливаются на машину, создавая .rpm
из .spec
.rpmbuild -ba <file>.spec
завершается с exit 0
.Тем не менее, когда я пытаюсь установить созданный файл .noarch.rpm
(в другой системе с идентичной ОС / архитектурой), все, что происходит, это то, что устанавливаются зависимости, указанные в rpm, и файлы помещаются в правильные каталоги, но другиекоманды из %install
не выполняются.В конечном итоге я пытаюсь вызвать исполняемый файл, который создается и выдает ошибки из-за отсутствующих пакетов python.
RPM.org говорит:
Выполнение любых задач, необходимых перед установкой:
В некоторых случаях перед фактической установкой пакета должна быть дана одна или несколько команд.RPM выполняет эти команды точно в соответствии с указаниями сборщика пакетов, что устраняет общий источник проблем во время установки.
... Где я должен указать команды, запускаемые до установки пакета, если не вполе %install
файла .spec
?