web-dev-qa-db-ja.com

devtools :: install_gitを使用してGitlabから非公開パッケージをインストールする

私の教育機関は最近、GitLabをインストールしてくれました。私はdevtools::install_gitを使用してGitLabサーバーからRパッケージをインストールする方法を理解し、プロジェクトがパブリックである限り機能します。

#* When modeltable project has Public status
devtools::install_git('https://mini-me2.lerner.ccf.org/nutterb/modeltable.git')

ただし、「内部」または「プライベート」と表示されているパッケージがある場合、なんらかの認証がなければパッケージをインストールできません。現時点では、URLを介して認証を渡す方法がわかりません。誰かがGitLabからパッケージをダウンロードした経験がありますか?

#* After changing the 'modeltable' project to Private status
devtools::install_git('https://mini-me2.lerner.ccf.org/nutterb/modeltable.git')
Preparing installation of modeltable using the Git-URL: https://mini-me2.lerner.ccf.org/nutterb/modeltable.git
'/usr/bin/git'clone --depth 1 --no-hardlinks https://mini-me2.lerner.ccf.org/nutterb/modeltable.git /tmp/Rtmp5aj1cU/file24493dc03a32
Error: There seems to be a problem retrieving this Git-URL.
32
Benjamin

devtoolsgetPassパッケージの組み合わせを試すことができます。

https://github.com/wrathematics/getPass

devtools::install_git(
  "https://gitlab.com/foo/bar.git", 
  credentials = git2r::cred_user_pass("uname", getPass::getPass())
)

ここで、unameGitlabユーザー名です。

18
jsta

私はSSHルートに行くことを強くお勧めします、そしてそれは以下のために機能します。 SSHに飛躍するのは簡単で、特にRとRStudioの場合は簡単でした。以下の例ではWindowsを使用しています。実際に使用するコードからの編集はすべて大文字です。

creds = git2r::cred_ssh_key("C:\\Users\\MYSELF\\.ssh\\id_rsa.pub",
                            "C:\\Users\\MYSELF\\.ssh\\id_rsa")
devtools::install_git("[email protected]:GITLABGROUP/PACKAGE.git",
                      credentials = creds)

2つの簡単な追加コメント:

  • git2rはdevtoolsでインポートされます。個別にインストールする必要はありません。
  • また、これについて言及する必要はないと思いますが、スクリプト内のプレーンテキストのパスワードは非常に悪い考えです。
19
Rafael Zayas

Ciroのコメントによると、

https://user:[email protected]/user/repo.git

トリックを行います。したがって、完全な呼び出しは

devtools::install_git('https://user:[email protected]/nutterb/modeltable.git')

この方法でユーザー名とパスワードを渡すことには、セキュリティ上の懸念があることに注意してください。私はそれらの懸念について完全に教育されていません。私の会社のネットワークで認証され、GitLabサーバーを見ることさえできるので、これは私の目的には十分に機能します。

9
Benjamin