设置bdist_rpm中的RPM包名称

11 投票
2 回答
5191 浏览
提问于 2025-04-16 23:57

我正在使用Python的setuptools来构建一个软件包。我希望用bdist_rpm这个选项生成的rpm文件名和Python软件包的名字不一样,因为有一些命名限制。

我可以在setup.cfg文件的[bdist_rpm]部分做到这一点吗?

2 个回答

3

其实这个方法有点不太标准,所以没有直接的支持。不过你可以运行 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 能找到的目录里)

如果你真的想的话,我相信你可以用某种方式把这些步骤自动化。

5

fpm这个工具可以很方便地生成RPM包,并且可以更改包的名称或其他参数。默认情况下,fpm生成的RPM包名称会以"python-"开头,但你可以使用-n参数来设置包的名称。下面是一个例子:

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

撰写回答