如何使用 rpmbuild 从主机上的源 RPM 为目标构建二进制 RPM

How to build binary RPM for a target from a source RPM on a Host using rpmbuild

我必须在我的目标架构上部署 RPM 包,它是一个 x86_64 硬件 运行 Windriver Linux。我在我的主机系统上使用 rpmbuild 实用程序,它是一个 x86 32 位 12.04 Ubuntu PC。但是,我的主机上没有安装交叉编译器。我必须以这种方式在我的主机上生成 RPM,以便它可以在部署到目标时生成二进制文件。截至目前,我发现直接 运行 rpm -ivh <source-rpm> 在目标上不会创建二进制文件。在这种情况下还有什么其他选择。如何在主机上没有 Cross-Compiler 的情况下为某些目标架构制作 RPM 包。我在主机上只有 源文件 和一个 Makefile 加上 rpmbuild 实用程序。我的目标硬件有编译所需的 gccmake 工具。

对于那些可能遇到类似情况的人,我可以使用 FPM 包管理实用程序解决这个问题,可以从下面的 github 存储库下载 -

https://github.com/jordansissel/fpm

成功安装 FPM 后,可以在此处看到有用的各种参数列表。其中一个论点是 --after-install 。使用脚本传递此参数允许我们在安装 RPM 包后执行一些操作。而那些操作都在脚本中定义。所以,基本上我在这个脚本中定义了我的构建语句。因此,一旦在目标上使用 rpm -ivh <package-name> 安装软件包,此脚本将在目标上执行必要的 makemake install

我用来在主机上创建 RPM 包的 FPM 命令如下 -

fpm -s dir -t rpm -n <package-name> -a all -v 1.0.0 -C <path-of-Source-file-directory> --post-install <path-to-the-script-for-make> --before-remove <path-to-another-script-for-make clean> --prefix <path-for-downloading-package> .

我知道这只是一种解决方法。但如果其他人有更好的方法,请告诉我。