问题描述
我有一个在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/