在构建RPM包时传送*.so和二进制文件

2024-05-19 12:03:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了一个python应用程序,在其中我希望在最终的RPM包中提供.so和一些二进制文件。经过长时间的阅读,我找到了在setup.py中添加二进制文件/图像和其他数据文件的方法。现在,当我使用python setup.py bdist_rpm命令构建一个RPM时,它会抱怨架构依赖性:

    Arch dependent binaries in noarch package
error: command 'rpmbuild' failed with exit status 1

在谷歌搜索之后,我发现我们可以添加:

#%define _binaries_in_noarch_packages_terminate_build 0

或者删除packagename.spec文件中的BuildArch: noarch行,以克服rpmbuild故障。但是,每次我从build/bdist.linux-i686/rpm/SPECS/packagename.spec添加或删除行时,命令python setup.py bdist_rpm总是覆盖.spe文件。

有没有办法避免Arch dependent binaries并在rpm中传送*.so和其他二进制文件?


Tags: 文件inpy命令sosetup二进制bdist
2条回答

bdist_rpm的行为由以下一组设置定义:

  • /usr/lib/rpm/macros
  • /etc/rpm/macros
  • $HOME/.rpmmacros

我敢打赌,你的系统上只存在/usr/lib/rpm/macros。这很正常。

因此,为了防止“noarch包中依赖于Arch的二进制文件”的错误,您可以创建/etc/rpm/macros~/.rpmmacros并添加以下内容:

%_unpackaged_files_terminate_build      0
%_binaries_in_noarch_packages_terminate_build   0

不要修改/usr/lib/rpm/macros,因为每当升级、降级或重新安装rpm生成包时,系统将覆盖该文件。

如果要覆盖系统中每个人的行为,请将设置放入/etc/rpm/macros。如果要覆盖特定用户的行为,请将设置添加到$HOME/.rpmmacros

.rpmmacros胜过/etc/rpm/macros后者胜过/usr/lib/rpm/macros

注意:检查/usr/lib/rpm/macros以查看可用的设置和语法示例很有用。

另外,设置%_unpackaged_files_terminate_build 0可以防止error: Installed (but unpackaged) file(s) found:错误。

据我所知,.so文件始终依赖于arch。

在您的情况下,为了避免一直编辑specs文件,您可以将--force-arch=<your_arch>添加到我们的setup.py bdist_rpm

例如

python setup.py bdist_rpm --force-arch=x86_64

相关问题 更多 >

    热门问题