通过ssh安装包

时间:2014-05-30 07:31:26

标签: r repository

我在ssh可访问的服务器上有一个私有R包存储库。在服务器上运行R时,我可以通过设置以下选项从install.packages的仓库中安装软件包

options(repos=c("http://ftp.sunet.se/pub/lang/CRAN",
                "file:///path/to/repo/base/directory"))
install.packages("myPrivateGoodies")

是否可以通过在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"))

The manual没有提及ssh但是说https通常不起作用,所以也许ssh也有问题。 RSA身份验证由~/.ssh/config处理,我可以从终端连接到repo而没有sftp user@server:/path/to/repo/base/directory的问题(无需输入任何密码)。

更新

根据@spacedman的建议并使用this guide,我设法让它像我想要的那样无缝地工作。

在bash中

$ sshfs server:/path/to/repo/base/directory ~/mnt/remote-repo

然后在R

options(repos=c("http://ftp.sunet.se/pub/lang/CRAN",
                "file:///home/backlin/mnt/remote-repo"))

1 个答案:

答案 0 :(得分:3)

那不会奏效。

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

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