Подтвердить что ты не робот

Установка непубличных пакетов из 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.
4b9b3361

Ответ 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.