我有一个组织文件与R源块。现在我想在服务器上远程执行一些或实际上所有的操作。我遵循组织手册中的设置,并使用= dir:=如下例所示(由于显而易见的原因,我没有显示我的用户名或服务器名称;但是我可以不使用密码连接,所以ssh设置无误) :组织模式远程R无法与组织8.0.7
#+BEGIN_SRC R :dir /[email protected]: :exports both
system("hostname")
#+END_SRC
当我评价这与CC CC我得到以下几点:
executing R code block...
Tramp: Encoding region using function `base64-encode-region'...done
Tramp: Decoding region into remote file /ssh:[email protected]:/var/folders/2m/4d7t6kwx0tn2p6blmf3l7_kh0000gn/T/R-30000dMv...done
byte-code: Couldn't write region to `/ssh:[email protected]:/var/folders/2m/4d7t6kwx0tn2p6blmf3l7_kh0000gn/T/R-30000dMv', decode using `base64 -d -i >%s' failed
显然有一些问题与远程文件夹,因为我的服务器上,我没有写权限/ var或实际上/ var/folders不存在,它仅在我的Mac上本地存在。
我得到类似的错误消息,当我尝试使用SH:
#+BEGIN_SRC sh :dir /[email protected]: :export both
hostname
#+END_SRC
没有任何人对此有一个解决方案吗?或者在远程机器上执行R代码的替代方法?
我的Emacs的版本是24.3,ORG 8.0.7
先感谢您的任何答复!
更新:
我发现下面的职位emacs org-mode mailing list这似乎与我的问题。事实上,如果代码是远程执行的,org似乎使用错误的文件名。我不知道如何解决这个问题,或者如果我能找到一个解决方案自己...
更新:
远程执行R-代码的另一种方法如下:
用“Mx ssh”启动一个远程ssh连接,连接到你的服务器,在那里启动R并在远程缓冲区中调用“Mx ess-remote”。现在,远程[R缓冲区“会话”的指定名称时,它会远程执行代码:
#+BEGIN_SRC R :exports both :results output :session *ssh xxx*
system("hostname")
#+END_SRC
这将返回服务器的主机名(注,在“XXX”上面会是您的服务器名称)。 重要“:结果值”会导致与临时文件相同的问题,只有“:results output”现在似乎有效。
更新和解决方案:
所以:results output
是要走的路。这也适用于:dir
远程代码执行。
你是对的。我应该做到这一点。那么,现在我做了,并尝试使用tramp在服务器上打开一个文件。 Emacs中也很好地显示了文件内容,但Emacs在此之后挂起。所以我必须弄清楚发生了什么......我已经在[link](http://www.emacswiki.org/emacs/TrampMode#toc3)中尝试过所有的东西,但没有成功。我试图从我的Mac(10.8.4 Mountain Lion)连接到运行CentOS 6的服务器。 – jotsetung
这似乎与Mac相关...我测试过它从unix连接到unix,它在那里工作。 – jotsetung
更新:欧洲央行是罪魁祸首。我发现该解决方案:[链接](http://emacs.1067599.n5.nabble.com/ECB-2-40-ecb-tramp-causes-emacs-to-hang-td235473.html)。现在我可以使用tramp在Emacs中打开文件。所以tramp肯定是有用的,但我仍然无法远程执行org模式的代码。 – jotsetung