我正在尝试在x86_64
主机的armhf
主机上重建Alpine软件包。据我所知,正确的方法是克隆https://github.com/alpinelinux/aports并运行scripts/bootstrap.sh armhf
以创建一个chroot环境,然后该环境可用于交叉编译软件包。到目前为止,我已经:
${HOME}/packages/main
添加到了/etc/apk/repositories
abuild-keygen -a
cp ${HOME}/.abuild/*.pub /etc/apk/keys
信任但是引导脚本仍然失败,并显示以下信息:
c4a5a8fbf023:~/aports$ scripts/bootstrap.sh armhf
>>> bootstrap-armhf: Building cross-compiler
>>> binutils-armhf: Package is up to date
>>> gcc-armhf: abuild 3.2.0-r0
>>> gcc-armhf: Checking sanity of /home/builder/aports/main/gcc/APKBUILD...
>>> WARNING: gcc-armhf: g++ should not be in makedepends
>>> gcc-armhf: Analyzing dependencies...
ERROR: unsatisfiable constraints:
.makedepends-gcc-armhf-0:
masked in: cache
satisfies: world[.makedepends-gcc-armhf]
musl (missing):
required by:
musl-dev (missing):
required by:
>>> ERROR: gcc-armhf: all failed
>>> gcc-armhf: Uninstalling dependencies...
musl
和musl-dev
是为armhf构建的软件包,位于${HOME}/packages/main/armhf
中。
有人可以指出我正确的魔法来使它起作用吗?我错过了一些有关此的文档吗?
答案 0 :(得分:0)
我有同样的错误,但是我通过执行以下步骤解决了它:
1. abuild-keygen -a
,然后我将我的密钥保存为名称 mykey ,并将我的密钥(私有和公共)都保存在当前目录中。
2.然后只需将 mykey.pub 移至/ etc / apk / keys
3.然后通过CBUILDROOT=/path/to/buildroot ./scripts/bootstrap.sh armhf
和其他方法构建交叉编译工具链,不要直接或手动创建CBUILDROOT,只需让引导脚本创建它即可。
让我知道您是否再次失败。
答案 1 :(得分:0)
当我遇到这个问题时,是因为我急于在设置程序包签名密钥之前运行了引导脚本。这意味着引导sysroot没有填充软件包签名密钥because the bootstrapper only copies it over on its initial run,这导致了上面显示的错误消息。手动将密钥复制到~/sysroot-armhf/etc/apk/keys
中可以解决此问题。
答案 2 :(得分:0)
如果您有一个工作 abuild
环境,正确答案是@Golu 答案的最后一步:
CBUILDROOT=~/sysroot-armhf ~/aports/scripts/bootstrap.sh armhf
我仍然无法通过阅读源代码弄清楚为什么会这样。 CBUILDROOT
实际上是由脚本设置的。它确实包含一个尾随 /
,我想这可能会导致问题。一旦过程开始,手动设置 CBUILDROOT
就不再需要了。无论如何,这对我有用,这就是为什么我要留下一个新答案。
答案 3 :(得分:-1)
abuild-keygen -a -i and install sudo