【发布时间】:2017-01-12 23:58:13
【问题描述】:
我正在使用 Python setuptools 来构建一个包。由于某些命名限制,我想将使用 bdist_rpm 选项构建的 rpm 命名为与 Python 包名称不同。
可以在[bdist_rpm]部分的setup.cfg完成吗?
【问题讨论】:
我正在使用 Python setuptools 来构建一个包。由于某些命名限制,我想将使用 bdist_rpm 选项构建的 rpm 命名为与 Python 包名称不同。
可以在[bdist_rpm]部分的setup.cfg完成吗?
【问题讨论】:
fpm 工具可以轻松生成 RPM 包并更改名称或其他参数。默认情况下,fpm 使 RPM 带有 "python- 前缀名称,但可以使用 -n 参数设置包名称。例如:
fpm -s python -t rpm -n my_package_name <python-source-library>/setup.py
【讨论】:
嗯,它确实有点不标准,因此不直接支持。但是,您可以执行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,您需要:
如果你真的想这样做,我相信你可以通过某种方式自动化
【讨论】:
Name: 而不是 %define name 会很方便,因为定义也很容易在源包名称中使用,并且源包将(可能)在文件名中具有“常规”名称,而不是覆盖的值(如包含的示例中所示)。这就是为什么您实际上并没有更改每一次出现的原因 - 您只需更改一个 Name: 实例。