В настоящее время я пытаюсь настроить среду для одного из наших приложений на CentOS 6, используя репозиторий SCL python33. Приложение также требует ряда дополнительных модулей Python, таких как numpy, поэтому я пытаюсь их создать; Я приближаюсь, но когда я создаю пакет, он требует python(abi) => 3.3
.
Согласно документам SCL, я хочу изменить требования, что достаточно очевидно, и я вижу кучу слизи в /etc/rpm/macros.python3.python33
который выглядит так, как будто он должен справиться с этим (это неявное требование, а не то, которое я могу просто изменить в specfile), но я не могу понять, как заставить эти макросы переопределить различные в specfile. Кто-нибудь создавал RPM для модулей Python для добавления в SCL python33, и какие шаги вы предприняли?
Для записи, это моя процедура до сих пор:
setup.py bdist --format=rpm # to generate the base specfile, numpy.spec
spec2scl numpy.spec # to generate the SCLed specfile
(edit specfile to remove %define __os_install_post bloc which doesn't cooperate with SCL)
rpmbuild -ba numpy.py -D 'scl python33' # to try and build the RPM from the specfile
Это дает мне RPM, но с нарушенным требованием (которое должно быть python33-python(abi)
).
Возможно, эта проблема исчезла, но я хотел обновить ее с помощью метода, который легко работал у меня.
Вот моя ситуация:
Я создавал несколько RPM-пакетов SCL для python27 из загруженных файлов яиц, используя скрипт, чтобы делать все - примечание: так я извлек все зависимости для нашего веб-приложения Python Django и запустил его из плана Atlassian Bamboo для создания Интернета. об / мин приложения.
Что касается обсуждаемой здесь проблемы требований -
Я программно заменил имена пакетов префиксом «python27-python-», и все упакованные файлы получили корневой путь SCL «/ opt / rh / python27 / root», так что все было хорошо ... ЗА ИСКЛЮЧЕНИЕМ того, что они все подобрали требования для python (abi) = 2.7, как и у вас для 3.3
Примечание. Поскольку я заменил «имя» пакета версией SCL, я сохранил его в новом файле setup.py, который назвал:
setupSCL.py
Я попробовал несколько заклинаний макросов, но то, что решило проблему требований для меня, было на самом деле простым.
В моей командной строке setup.py я только что добавил:
--no-autoreq
Чтобы заменить это ошибочное автоматическое требование, я добавил обратно в версию SCL, которую мы оба искали:
--requires "python27-python"
Итак, моя фактическая командная строка была:
python setupSCL.py bdist_rpm --no-autoreq --requires "python27-python" &> /dev/null
Бум! Работает как чемпион
Поэтому, когда я проверяю, требуется использование yum deplist (в этом примере для djangorestframework):
Я получил:
yum deplist /root/rpmbuild/SOURCES/djangorestframework-2.4.4/dist/python27-python-djangorestframework-2.4.4-1.noarch.rpm
Finding dependencies:
package: python27-python-djangorestframework.noarch 2.4.4-1
dependency: python27-python
provider: python27-python.x86_64 2.7.5-7.el6.centos.alt
Надеюсь, однажды это поможет кому-то ...