【问题标题】:Managing pip in an RPM environment在 RPM 环境中管理 pip
【发布时间】:2014-02-07 04:54:57
【问题描述】:

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

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

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

我很想听听对此的看法。

【问题讨论】:

    标签: python pip rpm yum package-managers


    【解决方案1】:

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

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

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

    【讨论】:

    • 太棒了。必须处理 EL6 上的 RPM 没有定义 __python2 宏这一事实,但除此之外它工作得很好。
    【解决方案2】:

    我更喜欢安装到与默认系统不同的站点库。因此我这样做:

    $ pip install --user django
    

    远非理想,不能与 dnf/rpm/yum 一起使用,但同时不会与您的系统模块混淆。您可以随时擦拭它们。

    【讨论】:

    • .. 不能使用 RPM/DNF/YUM,但也不能使用 SNMP 报告或任何利用相同例程的东西。因此,如果您以这种方式安装软件,请务必小心,因为就任何适当的集中管理而言,这就像将 tarball 喷洒到您的盒子上一样。总有一天会让你伤心。
    【解决方案3】:

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

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

    【讨论】:

    • 无 SRPM。缺乏透明度意味着它会立即失败。
    猜你喜欢
    • 2020-08-15
    • 1970-01-01
    • 2020-07-21
    • 2023-04-10
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    相关资源
    最近更新 更多