devtools :: install_git通过SSH

Jos*_*osh 10 git ssh r devtools

我写了一个R包,我保存在SSH服务器上的(裸)git存储库中,我希望能够在本地机器上安装它,而无需手动克隆存储库.

我尝试过以下方法:

devtools::install_git("ssh://user_name@remote/path/to/repository")
Run Code Online (Sandbox Code Playgroud)

但我得到了错误

    Downloading git repo ssh://user_name@remote/path/to/repository
    Error in git2r::clone(x$url, bundle, progress = FALSE) : 
    Error in 'git2r_clone': Failed to start SSH session: Unable to exchange encryption keys
Run Code Online (Sandbox Code Playgroud)

我在Windows 7机器上,使用R 3.1.2,git2r版本0.11.0和devtools版本1.9.1.任何帮助将不胜感激.谢谢!

wsp*_*gin 14

我自己就是这个问题.我知道这个问题有点旧,但对于其他遇到同样问题的人(比如我),这就是我发现的.

问题

可能你没有git2r(devtools用于与之交互的包git)用于通过SSH进行通信的库.

解决方案

安装它.下面的例子假设是Ubuntu.

sudo apt-get install libssh2-1 libssh2-1-dev
Run Code Online (Sandbox Code Playgroud)

git2r使用名为LibSSH2的库来启用通过SSH传输.如果您使用的是Linux,则可以使用软件包管理器进行安装.注意如果你在Windows上,git2r不支持SSH协议:/git2r版本0.11.0(使用更新版本libgit2)开始,Windows上也支持SSH.在此编辑中,最新版本git2r为0.15,因此如果您在Windows上没有SSH支持,请尝试更新git2r(向新闻发送zeehio).

安装LibSSH2之后,您需要重新安装git2r软件包以启用SSH传输(因为它在软件包构建期间启用/禁用).

来源

关于GitHub的问题:

为什么我需要LibSSH2?git不使用它,对吗?

你是对的!git不使用它(据我所知).但是,libgit2是使用的纯C gitAPI实现git2r.

  • _注意,如果您使用的是Windows,则git2r还不支持SSH协议:/ _这就解释了,谢谢您的回答! (2认同)
  • 更新:从 git2r 0.11.0 开始支持 SSH 传输。`git2r::libgit2_features()` 显示有 SSH 支持。 (2认同)