我在ssh可访问的服务器上有一个私有R包存储库.在服务器上运行R时,我可以install.packages通过设置以下选项从repo安装软件包
options(repos=c("http://ftp.sunet.se/pub/lang/CRAN",
"file:///path/to/repo/base/directory"))
install.packages("myPrivateGoodies")
Run Code Online (Sandbox Code Playgroud)
是否可以通过在ssh上设置URL来从本地计算机上的R会话执行相同的操作?我想它应该很容易设置,但我无法使用以下任何工作:
options(repos=c("http://ftp.sunet.se/pub/lang/CRAN",
"ssh://user@server:/path/to/repo/base/directory",
"sftp://user@server:/path/to/repo/base/directory"))
Run Code Online (Sandbox Code Playgroud)
该手册没有提及ssh,但声称https通常不起作用,所以也许ssh也有问题.RSA认证得到了处理,~/.ssh/config我可以毫无问题地连接到终端的回购sftp user@server:/path/to/repo/base/directory(无需输入任何密码).
按照@spacedman的建议并使用本指南,我设法让它像我想要的那样无缝地工作.
在bash中
$ sshfs server:/path/to/repo/base/directory ~/mnt/remote-repo
Run Code Online (Sandbox Code Playgroud)
然后在R
options(repos=c("http://ftp.sunet.se/pub/lang/CRAN",
"file:///home/backlin/mnt/remote-repo"))
Run Code Online (Sandbox Code Playgroud)
那是行不通的。
如果您可以在服务器上设置 ssh 网络文件系统,则可行。基本上,这看起来像一个普通的文件路径,可以通过存储库选项中的 file:// URL 访问,但操作系统使用 SSH 协议将该文件夹下的所有访问映射到远程服务器,对用户透明。
您的服务器上需要一个 sshfs 文件系统驱动程序,以及安装它们的客户端工具和权限,这超出了本论坛的范围。