使用sudo的org babel sh失败

时间:2019-02-19 03:33:59

标签: emacs org-babel

我正在使用org babel安装nvidia cuda。我什么时候使用

pmap

评估失败:

None

1 个答案:

答案 0 :(得分:2)

如上所述,CUDA脚本本身必须存在一些错误,尤其是第437行。那是您应该寻求解决问题的地方。

编辑:我看了看脚本:它使用了变量$ XTERM,该变量似乎未定义。实际上,第437行是

                exec $XTERM -title "$label" -e "$0" --xwin "$initargs"

和$ XTERM被替换为空,将-title保留为要执行的“命令”并触发错误消息。 XTERM应该在上面的循环中定义(第428-434行),但是似乎在emacs环境中根本没有设置它(在这种情况下,我不明白为什么要在shell提示中设置它)。通常,我建议您使用bash -x执行它以了解更多信息,但我不确定是否值得。

您可能想尝试使用--nox11选项执行,该选项应绕过整个部分。

由于它是从命令行运行的,为什么不这样执行它并完成它呢?为什么需要从源代码块运行它?


但是,我还想指出,您不需要在代码块的主体中​​使用sudo:指定:dir /sudo::表示“执行目录/sudo::中的主体这是一个伪目录,被Tramp解释为一种以sudo特权打开文件的方法,然后在该上下文中执行源代码块的主体:

#+BEGIN_SRC sh :dir /sudo::
pwd
#+END_SRC

#+RESULTS:
: /root

#+BEGIN_SRC sh :dir /sudo::
id
#+END_SRC

#+RESULTS:
: uid=0(root) gid=0(root) groups=0(root)  context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

如您所见,在:dir /sudo::上下文中,我的工作目录为/root,而我的uid0(root)

或者,您可以在块的主体中​​使用sudo并省略:dir规范:

#+BEGIN_SRC sh
sudo id
#+END_SRC

#+RESULTS:
: uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

是的,您可以像以前那样做,但这太过分了。