1

我正在尝试通过 SBoTools 在 Slackware 14.2 中安装 Docker,但我收到了 runc 安装的错误消息。

未定义对“seccomp_rule_add_exact_array”collect2 的引用:错误:ld 返回 1 个退出状态

make: *** [全部] 错误 2

Makefile:30:目标“全部”的配方失败

失败:runc:runc.SlackBuild 返回非零

我试图从源代码构建 runc,但得到了同样的错误。我不是 go-lang 的专家,不知道问题是否与它有关。

谢谢,


更多细节:

在安装时发出该命令时会出现问题:

go build -i -ldflags "-X main.gitCommit=54296cf40ad8143b62dbcaa1d90e520a2136ddfe -X main.version=1.0.0-rc2" -tags "seccomp" -o runc .

编辑 #2 - 问题已解决。

好的,问题出在 slackbuilds 的 runc 包的 Makefile 中。有两行将使用命令“go build”,并且在这两行中都有一个名为“-ldflags”的标志...要解决问题,只需使用“-gccgoflags”更新此标志即可。Obs:如果你尝试安装 Docker,你也会遇到 containerd 的这个问题。

希望这可以帮助某人,我会为 Slackbuilds 中的软件包维护者报告这个:)

4

3 回答 3

2

构建时您没有正确设置 PATH 变量。正在从 /usr/bin 获取 go 可执行文件;该可执行文件对应于 gccgo,而不是 google-golang 包中的那个,后者是要使用的那个。

于 2017-09-05T17:00:27.207 回答
2

问题不是-ldflags,问题是你安装后没有设置PATH google-go-lang。为此,您可以从安装的根提示符注销go并重新登录,或者只是 source /etc/profile.d/go.sh

source /etc/profile.d/go.sh

然后runc从您刚刚采购的提示继续安装和其他软件包go.sh。参见:slackware:howtos:docker

于 2018-06-13T14:23:49.580 回答
0

不,这与 Go 完全无关。编译(或更确切地说是链接)C 代码时发生该错误。乍一看,问题似乎在于您libseccomp的已过时。缺少的符号是在该库的 2.0 和 2.1 版本之间添加的。

于 2017-08-31T04:36:09.790 回答