Управление 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 тип пакета для создания
и в качестве последнего параметра имя пакета
Я предпочитаю установку на другой сителиб, чем системный по умолчанию. Поэтому я делаю:
$ pip install --user django
Далеко от идеала, не играет с dnf/rpm/yum, но в то же время не связывается с вашими системными модулями. И вы можете стереть их, когда захотите.