Python 在RPM环境中管理pip

Python 在RPM环境中管理pip,python,pip,rpm,yum,package-managers,Python,Pip,Rpm,Yum,Package Managers,对于我们的产品应用程序,我们在RPM中管理所有软件包。在一个只有百胜的完美世界里,这很好 然而,每种语言或框架最近都在部署自己的包管理器。例如,对于python,我几乎总是使用pip,然后在投入生产时必须再次为rpm构建包。npm或宝石也是如此 这是这里很多人都遇到的问题吗?避免这一切的最好方法是什么?人们是通过吸吮并手动打包来处理这个问题,还是有一些自动化的方法来集成它们 我很想听听对此的想法。我曾经为rstr模块构建rpm包,我也不喜欢通过pip随机安装一些文件: 但我不知道这是否足以满足您

对于我们的产品应用程序,我们在RPM中管理所有软件包。在一个只有百胜的完美世界里,这很好

然而,每种语言或框架最近都在部署自己的包管理器。例如,对于python,我几乎总是使用pip,然后在投入生产时必须再次为rpm构建包。npm或宝石也是如此

这是这里很多人都遇到的问题吗?避免这一切的最好方法是什么?人们是通过吸吮并手动打包来处理这个问题,还是有一些自动化的方法来集成它们

我很想听听对此的想法。

我曾经为rstr模块构建rpm包,我也不喜欢通过pip随机安装一些文件:


但我不知道这是否足以满足您的生产使用。

我更喜欢安装到不同的sitelib,而不是默认的系统。因此,我:

$ pip install --user django
远不理想,它不使用dnf/rpm/yum,但同时不会干扰系统模块。您可以随时擦拭它们。

您可以安装fpm:

Effing软件包管理!为多个平台(deb、rpm等)构建软件包非常容易和明智

接下来,您可以运行:

$ 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要创建的包的类型
最后一个参数是包的名称


太好了。必须处理EL6上的RPM没有定义_python2宏这一事实,但除此之外,它工作得非常好。没有SRPM。缺乏透明度意味着这是一个瞬间的失败。。。不使用RPM/DNF/YUM,但也不使用SNMP报告或任何利用相同例程的功能。所以,如果你以这种方式安装软件,就要小心,因为这就像在你的盒子上撒上一颗柏油球,进行适当的集中管理。总有一天会让你伤心。
$ 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"}