如何将go代码打包为独立的RPM?

问题描述

我有一个在OSX上构建的go项目。我已经通过使用docker运行linux编译器和使用GOARCH = arm64生成arm代码来为arm linux编译了它。现在我想将其打包为RPM。

问题是我不知道如何获得rpmbuild来给我一个arm包。我尝试设置--target arm--target arm64--target arm-test-linux--target arm64-test-linux

所有结果都相同

file project.arm.rpm => project.arm.rpm: RPM v3.0 bin noarch

我如何识别结构而不是产生noarch rpm?

解决方法

使用规格文件中的BuildArch选项:

BuildArch: arm64
,
rpmbuild -bs project.spec

这将创建project.src.rpm。然后:

sudo dnf install qemu-user-static
mock -r fedora-33-aarch64 project.src.rpm

将使用此功能:https://github.com/rpm-software-management/mock/wiki/Feature-forcearch 使用最新版本的Mock,您甚至无需指定--forcearch,因为它会自动检测到。

如果省略BuildArch,它将使用您用作Mock参数的chroot自动设置。

这里的BTW是有关将Go打包为RPM的一般指南。 https://docs.fedoraproject.org/en-US/packaging-guidelines/Golang/

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...