Установка непубличных пакетов из Gitlab с помощью devtools:: install_git
Моя организация недавно установила для нас GitLab. Я выяснил, как установить R-пакеты с сервера GitLab с помощью devtools::install_git
, и он работает до тех пор, пока проект является общедоступным.
#* 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.
Ответы
Ответ 1
Вы должны попробовать комбинацию пакетов devtools
и getPass
.
https://github.com/wrathematics/getPass
devtools::install_git(
"https://gitlab.com/foo/bar.git",
credentials = git2r::cred_user_pass("uname", getPass::getPass())
)
Где uname
- ваше имя пользователя Gitlab
.
Ответ 2
Я очень рекомендую перейти на 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)
Два быстрых дополнительных комментария:
- git2r импортируется с помощью devtools, вам не нужно устанавливать его отдельно.
- Также я не думаю, что это должно упоминаться, но пароли в открытом тексте в вашем script - очень плохая идея.
Ответ 3
За комментарий Ciro, аутентификация с использованием
https://user:[email protected]/user/repo.git
делает трюк. Таким образом, полный вызов будет
devtools::install_git('https://user:[email protected]/nutterb/modeltable.git')
Обратите внимание, что могут возникнуть проблемы с безопасностью при передаче имени пользователя и пароля. Я не полностью обучен этим проблемам. Это работает достаточно хорошо для моих целей, потому что я аутентифицирован в своей сети, чтобы даже видеть сервер GitLab.