Управление pip в среде RPM

Для наших приложений prod мы управляем всеми пакетами в RPM. В идеальном мире только для ням это нормально.

Однако каждый язык или среда в последнее время развертывают свои собственные менеджеры пакетов. Например, для python я почти всегда использую pip, а затем мне приходится снова собирать пакеты для rpm при запуске в производство. То же самое касается npm или драгоценных камней.

Это проблема, с которой сталкивается много людей здесь? Какой лучший способ избежать всего этого? Люди справляются с этим, просто всасывая и упаковывая все вручную, или есть какой-то автоматизированный способ их интеграции?

Я хотел бы услышать мысли по этому поводу.

3 ответа

Я использовал pyp2rpm для сборки пакета rpm для модуля rstr, и мне не нравятся случайные установки некоторых файлов через pip:

pyp2rpm -n rstr > ~/rpmbuild/SPECS/rstr.spec
rpmbuild -ba ~/rpmbuild/SPECS/rstr.spec

но я не знаю, достаточно ли это для вашего производственного использования.

Вы можете установить fpm: https://github.com/jordansissel/fpm

Управление пакетом Effing! Создавайте пакеты для нескольких платформ (deb, rpm и т. Д.) С легкостью и разумностью http://fpm.readthedocs.io/en/latest/

Далее вы можете запустить:

$ fpm -s python -t rpm pyramid
no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"python-pyramid-1.9a2-1.noarch.rpm"}

тип источника
-t тип пакета для создания
и в качестве последнего параметра имя пакета

https://fpm.readthedocs.io/en/latest/source/python.html

Я предпочитаю установку на другой сителиб, чем системный по умолчанию. Поэтому я делаю:

$ pip install --user django

Далеко от идеала, не играет с dnf/rpm/yum, но в то же время не связывается с вашими системными модулями. И вы можете стереть их, когда захотите.

Другие вопросы по тегам