通过ssh安装包

Bac*_*lin 5 r repository

我在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)

Spa*_*man 4

那是行不通的。

如果您可以在服务器上设置 ssh 网络文件系统,则可行。基本上,这看起来像一个普通的文件路径,可以通过存储库选项中的 file:// URL 访问,但操作系统使用 SSH 协议将该文件夹下的所有访问映射到远程服务器,对用户透明。

您的服务器上需要一个 sshfs 文件系统驱动程序,以及安装它们的客户端工具和权限,这超出了本论坛的范围。