Python项目的RPM子包
当你在处理一个大项目,并且需要为基于RHEL的Linux发行版创建RPM包时,把你的软件分成多个小包是很方便的。这些小包可以是 RPM子包,比如说:-client(客户端)、-server(服务器)、-devel(开发包)、-debuginfo(调试信息包)等等。这样,你就可以通过一个spec文件生成多个包含项目不同部分的包。
我想知道这种功能是否在标准的Python打包模块(setuptools或distutils)中得到支持,以便从一个项目构建多个不同的rpm包。我猜我的setup.py中的某些内容应该与spec文件的这一部分相关联:
%package server
%package client
1 个回答
1
不,distutils及其衍生工具不支持这个功能。你会有两个代码库,每个都有一个setup.py脚本,分别生成两种不同的sdist/wheel/RPM包。或者你可以在一个仓库里放两个脚本,比如setup_client.py和setup_server.py(它们的包名和要打包的文件列表不同),但这种做法比较少见。
在我们开发distutils2的时候,Tarek Ziadé写了一个叫pypi2rpm的工具,目的是改进distutils中提供的bdist_rpm命令。最近没有更新,可能是因为它已经提供了他团队需要的功能,不过你可以联系他,看看他是否愿意接受一个增加对子包支持的请求。