Управление пипсом в среде RPM
Для наших prod-приложений мы управляем всеми пакетами в RPM. В идеальном мире, единственном в мире, это прекрасно.
Однако каждый язык или структура в последнее время развертывают свои собственные менеджеры пакетов. Например, для python я почти всегда использую pip, а затем снова собираю пакеты для rpm при переходе на производство. То же самое относится к гамме или драгоценным камням.
Это проблема, с которой сталкиваются многие люди? Каков наилучший способ избежать всего этого? Люди справляются с этим, просто всасывая его и упаковывая все вручную, или есть какой-то автоматизированный способ их интеграции?
Мне хотелось бы услышать мысли об этом.
Ответы
Ответ 1
Я использовал pyp2rpm для сборки пакета rpm для модуля rstr, и мне не нравятся случайные установки некоторых файлов через pip:
pyp2rpm -n rstr > ~/rpmbuild/SPECS/rstr.spec
rpmbuild -ba ~/rpmbuild/SPECS/rstr.spec
но я не знаю, достаточно ли это для вашего производства.
Ответ 2
Я предпочитаю устанавливать на другой sitelib, чем по умолчанию. Поэтому я:
$ pip install --user django
Вдали от идеала, не играет с dnf/rpm/yum, но в то же время не путается с вашими системными модулями. И вы можете стереть их, когда захотите.
Ответ 3
Вы можете установить fpm: https://github.com/jordansissel/fpm
Управление эффективными пакетами! Создавайте пакеты для нескольких платформ (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"}
-s тип источника
-t тип пакета для создания
и в качестве последнего параметра имя пакета
https://fpm.readthedocs.io/en/latest/source/python.html