首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bazel build在构建syntaxnet时出现“执行genrule @six_archive//:copy_six fails”错误

Bazel build在构建syntaxnet时出现“执行genrule @six_archive//:copy_six fails”错误
EN

Stack Overflow用户
提问于 2016-05-13 15:04:51
回答 1查看 937关注 0票数 0

我试图按照syntaxnet的github页面的说明来构建syntaxnet解析器模型。

我的系统是一个Debian 。应该与Ubuntu14.04 LTS或15.05没有太大的不同。我已经从源代码编译了Bazel0.2.2(相对于0.2.2b),它看起来工作正常。

每当我启动bazel test syntaxnet/... util/utf8/...命令时,都不会用一些非常神秘的错误消息执行测试(所有测试都跳过了)。下面是一个例子:

代码语言:javascript
复制
root@host:~/tensorflow_syntaxnet/models/syntaxnet# ../../bazel/output/bazel test syntaxnet/... util/utf8/...
Extracting Bazel installation...
.............
INFO: Found 65 targets and 12 test targets...
ERROR: /root/.cache/bazel/_bazel_root/74c6bab7a21f28ad02405b720243d086/external/six_archive/BUILD:1:1: Executing genrule @six_archive//:copy_six failed: namespace-sandbox failed: error executing command /root/.cache/bazel/_bazel_root/74c6bab7a21f28ad02405b720243d086/syntaxnet/_bin/namespace-sandbox ... (remaining 5 argument(s) skipped).
unshare failed with EINVAL even after 101 tries, giving up.
INFO: Elapsed time: 95.469s, Critical Path: 22.46s
//syntaxnet:arc_standard_transitions_test                             NO STATUS
//syntaxnet:beam_reader_ops_test                                      NO STATUS
//syntaxnet:graph_builder_test                                        NO STATUS
//syntaxnet:lexicon_builder_test                                      NO STATUS
//syntaxnet:parser_features_test                                      NO STATUS
//syntaxnet:parser_trainer_test                                       NO STATUS
//syntaxnet:reader_ops_test                                           NO STATUS
//syntaxnet:sentence_features_test                                    NO STATUS
//syntaxnet:shared_store_test                                         NO STATUS
//syntaxnet:tagger_transitions_test                                   NO STATUS
//syntaxnet:text_formats_test                                         NO STATUS
//util/utf8:unicodetext_unittest                                      NO STATUS

Executed 0 out of 12 tests: 12 were skipped.

我建议使用Oracle Java 8 JDK,我的编译器是:

代码语言:javascript
复制
~/tensorflow_syntaxnet/models/syntaxnet# gcc --version
gcc (Debian 4.7.2-5) 4.7.2
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

试着查看错误消息中提到的namespace-sandbox二进制文件,但是在深入研究这个问题之前,我想我应该在这里问一下。

代码语言:javascript
复制
~/tensorflow_syntaxnet/models/syntaxnet# ls -l /root/.cache/bazel/_bazel_root/74c6bab7a21f28ad02405b720243d086/syntaxnet/_bin/namespace-sandbox
lrwxrwxrwx 1 root root 108 May 13 14:52 /root/.cache/bazel/_bazel_root/74c6bab7a21f28ad02405b720243d086/syntaxnet/_bin/namespace-sandbox -> /root/.cache/bazel/_bazel_root/install/ca381eaad1c931167a6355cb8a2b98cf/_embedded_binaries/namespace-sandbox
~/tensorflow_syntaxnet/models/syntaxnet# readlink /root/.cache/bazel/_bazel_root/74c6bab7a21f28ad02405b720243d086/syntaxnet/_bin/namespace-sandbox
/root/.cache/bazel/_bazel_root/install/ca381eaad1c931167a6355cb8a2b98cf/_embedded_binaries/namespace-sandbox

但是,命令似乎运行得很好:

代码语言:javascript
复制
~/tensorflow_syntaxnet/models/syntaxnet# file $(readlink /root/.cache/bazel/_bazel_root/74c6bab7a21f28ad02405b720243d086/syntaxnet/_bin/namespace-sandbox)
/root/.cache/bazel/_bazel_root/install/ca381eaad1c931167a6355cb8a2b98cf/_embedded_binaries/namespace-sandbox: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[md5/uuid]=0xecfd97b6a6b9a193b045be13654bd55b, not stripped
~/tensorflow_syntaxnet/models/syntaxnet# /root/.cache/bazel/_bazel_root/install/ca381eaad1c931167a6355cb8a2b98cf/_embedded_binaries/namespace-sandbox
No command specified.
Usage: /root/.cache/bazel/_bazel_root/install/ca381eaad1c931167a6355cb8a2b98cf/_embedded_binaries/namespace-sandbox [-S sandbox-root] -- command arg1
  provided: /root/.cache/bazel/_bazel_root/install/ca381eaad1c931167a6355cb8a2b98cf/_embedded_binaries/namespace-sandbox
Mandatory arguments:
  -S <sandbox-root>  directory which will become the root of the sandbox
  --  command to run inside sandbox, followed by arguments

Optional arguments:
  -W <working-dir>  working directory
  -T <timeout>  timeout after which the child process will be terminated with SIGTERM
  -t <timeout>  in case timeout occurs, how long to wait before killing the child with SIGKILL
  -d <dir>  create an empty directory in the sandbox
  -M/-m <source/target>  system directory to mount inside the sandbox
    Multiple directories can be specified and each of them will be mounted readonly.
    The -M option specifies which directory to mount, the -m option specifies where to
    mount it in the sandbox.
  -n if set, a new network namespace will be created
  -r if set, make the uid/gid be root, otherwise use nobody
  -D  if set, debug info will be printed
  -l <file>  redirect stdout to a file
  -L <file>  redirect stderr to a file
  @FILE read newline-separated arguments from FILE

有什么想法吗?

UPDATE:我在Ubuntu14.04LTS(我的小型工作站,而不是运行Debian的生产服务器)上完成了完全相同的步骤,所有的测试都通过了。我想知道有什么区别。

EN

回答 1

Stack Overflow用户

发布于 2016-05-17 07:27:01

显然,在设置沙箱时会出现一些权限错误。一个快速的解决方法是使用--genrule_strategy=standalone --spawn_strategy=standalone (注意第二个沙箱已经在TensorFlow rc文件中指定)来禁用沙箱。

可以在~/..bazelrc:echo "build --genrule_strategy=standalone --spawn_strategy=standalone" >>~/.bazelrc中设置这些标志

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37213455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档