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

标签 python rpm rpm-spec

我创建了一个 python 应用程序,我想在其中发送 .so 和最终 RPM 包中的一些二进制文件。经过长时间的阅读,我找到了一种在 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 依赖的二进制文件 并在 rpm 中传送 *.so 和其他二进制文件?

最佳答案

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-build 软件包升级、降级或重新安装时,该文件将被系统覆盖。

如果你想覆盖系统上每个人的行为,请将设置放在 /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: 错误。

关于python - 在构建 RPM 包时传送 *.so 和二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21288374/

相关文章:

linux - 在现有 RPM 中添加新文件

我构建的 Python RPM 无法安装

python - 我可以让 SQLAlchemy 在不重复完整的原始查询的情况下进行子查询预加载吗?

python - 异步将对象转换为协程。加载对象字段

python - 夏季阿拉斯加的 Astral 包错误 "sun remains below horizon"

rpm - 构建 RPM 以安装文件

Python 无法从某些 scipy.signal 方法导入名称

linux - 使用yum install命令如何获取软件的版本号?

无需安装的 RPM 构建过程

linux - 重新运行 rpm -e 后保留 RPM 生成的文件