在Windows上从私有gitlab服务器安装软件包

时间:2020-01-21 09:39:11

标签: r windows gitlab devtools

我正在努力从Windows计算机上的gitlab存储库安装软件包。

我发现了不同的提示,但是仍然无法从gitlab安装我的软件包。 首先,我使用puttygen.exe生成了一个公钥和私钥。
之后需要更改文件,我必须删除注释和内容,以便它们看起来像我的unix系统上的文件。因此,现在,公钥和私钥文件都只有一行。

我尝试通过devtools::install_git安装软件包,这花费了很长时间,并且收到错误消息

Error: Failed to install 'unknown package' from Git:
  Error in 'git2r_remote_ls': Failed to authenticate SSH session: Unable to send userauth-publickey request

使用devtools::install_gitlab时,我收到一条不同的错误消息,并且以某种方式感到,生成的链接不适合我的gitlab服务器。

Error: Failed to install 'unknown package' from GitLab:
  cannot open URL 'https://gitlab.rlp.net/api/v4/projects/madejung%2FMQqueue.git/repository/files/DESCRIPTION/raw?ref=master'

我目前要测试的完整代码是

creds <- git2r::cred_ssh_key(publickey="~/.ssh/id_rsa_gitlab.pub",
                             privatekey="~/.ssh/id_rsa_gitlab")
devtools::install_git(
  url='git@gitlab.rlp.net:madejung/MQqueue.git',
  quiet=FALSE, 
  credentials=creds)

devtools::install_gitlab(
  repo='madejung/MQqueue.git',
  host='gitlab.rlp.net',
  quiet=FALSE, 
  credentials=creds
)

我的id_rsa_gitlab.pub文件看起来像这样,只是一行

ssh-rsa AAAA....fiwbw== rsa-key-20200121

id_rsa_gitlab文件仅包含代码

AAABA.....3WNSIAGE=

更新

在我的Mac系统上,通过libssh2安装homebrew库并用git2r重新编译install.packages("git2r", type = "source")后,它可以按预期工作。

所以我机器上的工作代码是

creds <- git2r::cred_ssh_key(publickey="~/.ssh/id_rsa_gitlab.rlp.net.pub",
                             privatekey="~/.ssh/id_rsa_gitlab.rlp.net")
devtools::install_git(
  url='git@gitlab.rlp.net:madejung/MQqueue.git',
  quiet=FALSE, 
  credentials=creds
)

由于某些奇怪的原因,devtools::install_git呼叫最终需要大约一分钟才能失败。我不知道这里的问题在哪里。

1 个答案:

答案 0 :(得分:0)

在奋斗了将近一天之后,我找到了可以解决的解决方案...

我首先在gitlab帐户中创建了PAT(个人访问令牌),并授予了完整的API访问权限。由于某种原因,只读访问权限无效,现在我很累找出问题所在。

此后,我仍然无法安装我的软件包,由于某种原因,用于下载的wininet设置不起作用。

我使用命令capabilities("libcurl")来检查libcurl在我的窗口上是否可用,并尝试使用wininetlibcurl覆盖为method='libcurl'在安装功能中。不知何故,这还不够,所以我直接覆盖了选项变量download.file.method

options("download.file.method"='libcurl')
devtools::install_gitlab(
  repo='madejung/MQqueue',
  auth_token='Ho...SOMETHING...xugzb',
  host='gitlab.rlp.net',
  quiet=FALSE, force=TRUE
)