英文:
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",然后问题就会解决。
注意:如果您正在尝试安装Docker,则containerd也会出现此问题。
希望这对某人有所帮助,我将向Slackbuilds软件包的维护者报告此问题
英文:
I'm trying to install Docker in Slackware 14.2 via SBoTools, but I got an error message of runc installation.
> 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
I tried to build runc from source, but got the same error. I'm not an specialist with go-lang and don't know if the problem is with it.
Thanks,
More details:
The problem happens when in the installation when it gives that command:
go build -i -ldflags "-X main.gitCommit=54296cf40ad8143b62dbcaa1d90e520a2136ddfe -X main.version=1.0.0-rc2" -tags "seccomp" -o runc .
Edit #2 - Problem solved.
Alright, the problem was in Makefile of runc package from slackbuilds.
There is two lines where the command "go build" will be used and in both there is an flag called "-ldflags"... To solve the problem, just update this flag with "-gccgoflags" and that sould work.
Obs: If you're trying to install Docker, you'll have this problem with containerd too.
Hope this can help someone and I'll report this for the mainteiner of the package in Slackbuilds
答案1
得分: 2
在构建时,您的PATH变量没有正确设置。go可执行文件被从/usr/bin目录中获取;该可执行文件对应于gccgo,而不是google-golang软件包中的那个,后者应该被使用。
英文:
You did not have your PATH variable correctly set when building. The go executable is being picked up from /usr/bin; that executable corresponds to gccgo, not to the one in the google-golang package, which is the one to be used.
答案2
得分: 2
问题不在于-ldflags
,问题在于你在安装google-go-lang
之后没有设置你的PATH。
要解决这个问题,你可以从你安装了go
的root提示符注销并重新登录,或者简单地执行以下命令来加载/etc/profile.d/go.sh
:
source /etc/profile.d/go.sh
然后在刚刚加载了go.sh
的提示符下继续安装runc
和其他软件包。
参考:slackware:howtos:docker
英文:
The problem isn't -ldflags
, The problem is that you haven't set your PATH after installing google-go-lang
.
To do this you can logout from root prompt that you installed go
and log back in, or simply just source /etc/profile.d/go.sh
:
source /etc/profile.d/go.sh
and then continue on installing runc
and other packages from the prompt that you just sourced go.sh
.
see:slackware:howtos:docker
答案3
得分: 0
不,这与Go语言无关。这个错误是在编译(或者更准确地说是链接)C代码时发生的。乍一看,问题似乎是因为你的libseccomp
版本过旧。缺失的符号是在该库的2.0版本和2.1版本之间添加的。
英文:
No, it's nothing to do with Go at all. That error is occurring while compiling (or rather linking) C code. At first glance, it looks like the problem is that your libseccomp
is out of date. The missing symbol was added betwen version 2.0 and 2.1 of that library.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论