对于我们的prod应用程序,我们以RPM管理所有包。在一个完美的百胜世界,这很好。
但是,最近每种语言或框架都在部署自己的包管理器。例如,对于python,我几乎总是使用pip,然后在进入生产时再次为rpm构建包。同样适用于npm或宝石。
这是一个很多人遇到的问题吗?什么是避免这一切的最佳方法?人们是通过吮吸它并手动包装所有东西来处理这个问题,还是有一些自动化的方法来整合它们?
我很乐意听到这方面的想法。
对于我们的prod应用程序,我们以RPM管理所有包。在一个完美的百胜世界,这很好。
但是,最近每种语言或框架都在部署自己的包管理器。例如,对于python,我几乎总是使用pip,然后在进入生产时再次为rpm构建包。同样适用于npm或宝石。
这是一个很多人遇到的问题吗?什么是避免这一切的最佳方法?人们是通过吮吸它并手动包装所有东西来处理这个问题,还是有一些自动化的方法来整合它们?
我很乐意听到这方面的想法。
我用过 pyp2rpm 为...构建rpm包 RSTR 模块,我不喜欢通过随机安装一些文件 果仁 以及:
pyp2rpm -n rstr > ~/rpmbuild/SPECS/rstr.spec
rpmbuild -ba ~/rpmbuild/SPECS/rstr.spec
但我不知道这对你的生产用途是否足够好。
我用过 pyp2rpm 为...构建rpm包 RSTR 模块,我不喜欢通过随机安装一些文件 果仁 以及:
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"}
-s源类型
-t类型的包创建
并作为最后一个参数包的名称
我更喜欢安装到与默认系统不同的sitelib。因此,我这样做:
$ pip install --user django
远非理想,不使用dnf / rpm / yum但同时不会弄乱你的系统模块。你可以随时擦拭它们。