Установка непубличных пакетов из Gitlab с помощью devtools:: установить 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-адрес. Кто-нибудь имеет опыт загрузки пакетов из Гитлаб?
#* 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.
3 ответов
вы можете попробовать комбинацию 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
имя пользователя.
Я бы настоятельно рекомендовал пройти маршрут 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("git@gitlab.WORKDOMAIN.com:GITLABGROUP/PACKAGE.git",
credentials = creds)
два быстрых дополнительных комментария:
- git2r импортируется с devtools, вам не нужно устанавливать его отдельно.
- также я не думаю, что это нужно упомянуть, но пароли в открытый текст в вашем сценарии - очень плохая идея.
в комментарии Ciro, аутентификация с использованием
https://user:password@domain.com/user/repo.git
делает трюк. Таким образом, полный вызов будет
devtools::install_git('https://user:password@mini-me2.lerner.ccf.org/nutterb/modeltable.git')
обратите внимание, что могут возникнуть проблемы с безопасностью при передаче имени пользователя и пароля таким образом. Я не совсем разбираюсь в этих проблемах. Это работает достаточно хорошо для моих целей, потому что я прошел проверку подлинности сети моей компании даже видеть сервер Гитлаб.