【问题标题】:How to build binary RPM for a target from a source RPM on a Host using rpmbuild如何使用 rpmbuild 从主机上的源 RPM 为目标构建二进制 RPM
【发布时间】:2017-06-13 08:17:16
【问题描述】:
我必须在我的目标架构上部署 RPM 包,这是一个运行 Windriver Linux 的 x86_64 硬件。我在我的主机系统上使用 rpmbuild 实用程序,它是 x86 32 位 12.04 Ubuntu PC。但是,我的主机上没有安装交叉编译器。我必须在我的主机上生成 RPM,以便它可以在部署到目标时生成二进制文件。截至目前,我发现直接在目标上运行rpm -ivh <source-rpm> 不会创建二进制文件,因此我陷入了困境。在这种情况下还有什么其他选择。如何在我的 Host 上没有 Cross-Compiler 的情况下为某些目标架构制作 RPM 包。我在主机上只有 Source files 和一个 Makefile 以及 rpmbuild 实用程序。我的目标硬件具有编译所需的 gcc 和 make 工具。
【问题讨论】:
标签:
linux
ubuntu
x86-64
rpm
rpmbuild
【解决方案1】:
对于那些可能陷入类似情况的人,我可以使用 FPM 包管理实用程序解决这个问题,可以从下面的 github repo 下载 -
https://github.com/jordansissel/fpm
成功安装 FPM 后,可以在此处看到有用的各种参数列表。其中一个论点是 --after-install 。用脚本传递这个参数允许我们在安装 RPM 包之后做一些操作。而这些操作是在脚本中定义的。所以,基本上我定义这个剧本里面我生成报表。因此,一旦在目标上使用rpm -ivh <package-name> 安装软件包,此脚本将在目标上执行必要的make 和make 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>.
我知道这只是一种解决方法。但是,如果任何人有这样做的更好的方法,那么,请不要让我知道。 P>