devtools::install_git 通过 SSH

devtools::install_git Over SSH

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

我尝试了以下操作:

devtools::install_git("ssh://user_name@remote/path/to/repository")

但我收到错误

    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

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

运行 我自己进入这个问题。我知道这个问题有点老了,但是对于其他 运行 遇到同样问题的人(比如我),这是我发现的。

问题

可能您没有 git2rdevtools 用于与 git 交互的包)用于通过 SSH 通信的库。

解决方案

安装它。下面的示例假设 Ubuntu.

sudo apt-get install libssh2-1 libssh2-1-dev

git2r 使用名为 LibSSH2 的库来启用 SSH 传输。如果你在 Linux,你可以使用你的包管理器安装它。 注意 如果您使用 Windows,git2r 还不支持 SSH 协议:/ 截至 git2r 版本 0.11.0(使用 libgit2 的更新版本)it looks like SSH is supported on Windows。在这次编辑中,git2r 的最新版本是 0.15,所以如果您在 Windows 上没有 SSH 支持,请尝试更新 git2r(向 zeehio 大声疾呼以获取新闻)。

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

来源

关于 GitHub 的问题:

为什么我需要 LibSSH2? git不会用吧?

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