【问题标题】:Setting the RPM Package name in bdist_rpm在 bdist_rpm 中设置 RPM 包名称
【发布时间】:2017-01-12 23:58:13
【问题描述】:

我正在使用 Python setuptools 来构建一个包。由于某些命名限制,我想将使用 bdist_rpm 选项构建的 rpm 命名为与 Python 包名称不同。

可以在[bdist_rpm]部分的setup.cfg完成吗?

【问题讨论】:

    标签: python linux centos rpm


    【解决方案1】:

    fpm 工具可以轻松生成 RPM 包并更改名称或其他参数。默认情况下,fpm 使 RPM 带有 "python- 前缀名称,但可以使用 -n 参数设置包名称。例如:

    fpm -s python -t rpm -n my_package_name <python-source-library>/setup.py
    

    【讨论】:

      【解决方案2】:

      嗯,它确实有点不标准,因此不直接支持。但是,您可以执行python setup.py bdist_rpm --spec-only,这将在 dist/ 中生成一个名为 project.spec 的规范文件,如下所示:

      %define name [name of your pkg as defined in setup.py]
      %define version [version of your pkg]
      %define unmangled_version [version of your pkg]
      %define release 1
      
      Summary: PyQt4 application to download trailers from www.apple.com/trailers
      Name: %{name} # THIS IS WHAT YOU WANT TO CHANGE
      Version: %{version}
      Release: %{release}
      Source0: %{name}-%{unmangled_version}.tar.gz
      

      要从这里成功构建 rpm,您需要:

      1. 将规范文件重命名为 [newname].spec
      2. 将每次出现的 %{name} 更改为 [newname]
      3. rpmbuild -ba [newname.spec](将文件放入 rpmbuild 可以找到它们的目录之后)

      如果你真的想这样做,我相信你可以通过某种方式自动化

      【讨论】:

      • 您的回答有点不完整。 “将文件放入 rpmbuild 将找到它们的目录后”没有解释如何以及在何处运行 rpmbuild 命令来完成该过程。
      • 请注意您更改 Name: 而不是 %define name 会很方便,因为定义也很容易在源包名称中使用,并且源包将(可能)在文件名中具有“常规”名称,而不是覆盖的值(如包含的示例中所示)。这就是为什么您实际上并没有更改每一次出现的原因 - 您只需更改一个 Name: 实例。
      猜你喜欢
      • 2011-01-27
      • 1970-01-01
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多