组织模式远程R不使用org 8.0.7

时间:2013-08-27 15:52:22

标签: r emacs remote-access org-mode

我有一个带有R源块的组织文件。现在我想在我的服务器上远程执行一些或实际上所有这些。我按照组织手册中的设置进行操作,并在下面的示例中使用= dir:=(因为显而易见的原因我没有显示我的用户名或服务器名称;但我可以在没有密码的情况下连接,因此ssh设置正常) :

#+BEGIN_SRC R :dir /xxx@xxx: :exports both
  system("hostname")
#+END_SRC

当我用C-c C-c评估时,我得到以下结果:

executing R code block...
Tramp: Encoding region using function `base64-encode-region'...done
Tramp: Decoding region into remote file /ssh:xxx@xxx:/var/folders/2m/4d7t6kwx0tn2p6blmf3l7_kh0000gn/T/R-30000dMv...done
byte-code: Couldn't write region to `/ssh:xxx@xxx:/var/folders/2m/4d7t6kwx0tn2p6blmf3l7_kh0000gn/T/R-30000dMv', decode using `base64 -d -i >%s' failed

显然远程文件夹存在一些问题,因为在我的服务器上我没有写入/ var的权限,或者实际上/ var /文件夹不存在,它只存在于我的Mac本地。

当我尝试使用sh:

时,我收到类似的错误消息
#+BEGIN_SRC sh :dir /xxx@xxx: :export both
hostname
#+END_SRC

有人有解决方案吗?或者在远程机器上执行R代码的替代方法?

我的Emacs版本是24.3,org 8.0.7

提前感谢任何回复!

更新

我发现以下帖子emacs org-mode mailing list似乎与我的问题有关。实际上,如果远程执行代码,组织似乎使用了错误的文件名。我不知道如何解决这个问题,或者我自己能找到解决方案......

更新

远程执行R代码的另一种方法如下:

使用“M-x ssh”启动远程ssh连接,连接到服务器,在那里启动R并在远程缓冲区中调用“M-x ess-remote”。现在,当将远程R缓冲区的名称指定为“会话”时,它将远程执行代码:

#+BEGIN_SRC R :exports both :results output :session *ssh xxx*
  system( "hostname" )
#+END_SRC

这将返回服务器的主机名(注意,上面的“xxx”将是您的服务器名称)。 重要“:结果值”将导致临时文件出现同样的问题,只有“:结果输出”似乎现在可以正常工作。

更新和解决方案:

所以:results output是要走的路。这也适用于:dir远程代码执行。

1 个答案:

答案 0 :(得分:0)

我首先测试Tramp是否适用于您的Emacs。