Slackware 14.2中runc安装报错

runc installation error in Slackware 14.2

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

undefined reference to `seccomp_rule_add_exact_array' collect2: error: ld returned 1 exit status

make: *** [all] Error 2

Makefile:30: recipe for target 'all' failed

Failures: runc: runc.SlackBuild return non-zero

我尝试从源代码构建 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 中的软件包维护者报告此信息:)

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

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

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

source /etc/profile.d/go.sh

然后继续安装 runc 和您刚刚获取 go.sh 的提示中的其他包。 参见:slackware:howtos:docker