Aid*_*len 6 authentication authorization r credentials cran
与 python pip 不同,R 似乎公开了为.Rprofile. 我想这是因为 R 将字符串视为 URL。
local({r <- getOption("repos")
r["Nexus"] <- "https://username:password@my-private-r-repo.com/repository/r-group"
options(repos=r)
})
Run Code Online (Sandbox Code Playgroud)
然后当我安装包时:
> install.packages("shinydashboard")
trying URL 'https://username:password@my-private-r-repo.com/repository/r-group/bin/macosx/el-capitan/contrib/3.6/shinydashboard_0.7.1.tgz'
Content type 'application/x-tgz' length 326031 bytes (318 KB)
==================================================
downloaded 318 KB
The downloaded binary packages are in
/var/folders/7_/pt_pgg2j531f2jc_n5znht600000gn/T//RtmpZkpXkN/downloaded_packages
Run Code Online (Sandbox Code Playgroud)
R 是否有配置选项来防止凭据泄露?
我使用renv 和 Authorization header解决了这个问题(以及其他问题)。
renv帮助您为 R 项目创建虚拟环境,锁定项目中使用的所有包(及其版本)。
您可以在此处阅读有关身份验证标头的信息:Web API 身份验证基本与承载
.Rprofile您可以通过向项目添加文件来使 renv 与私有存储库一起使用,如下所示:
source("renv/activate.R")
local({
project_repos <- c(
CRAN = "https://cloud.r-project.org",
PRIVATE_CRAN = "https://your-private-cran.io"
)
options(repos = project_repos)
options(
renv.download.headers = function(url) {
if (grepl(paste0("^", project_repos["PRIVATE_CRAN"]), url))
return(c(Authorization = paste0("Bearer", Sys.getenv("AUTH_TOKEN"))))
})
Run Code Online (Sandbox Code Playgroud)
每次您从私有 CRAN 访问文件时,这都会自动添加授权标头。
如果满足了所有先决条件,安装包将如下所示:
> renv::install("private_packge@2.7.2")
Retrieving 'https://your-private-cran.io/Cran-local/src/contrib/Archive/private_packge/2.7.2/private_packge_2.7.2.tar.gz' ...
OK [file is up to date]
Installing private_packge [2.7.2] ...
OK [built from source]
Moving private_packge [2.7.2] into the cache ...
OK [moved to cache in 1.3 milliseconds]
Run Code Online (Sandbox Code Playgroud)
前提条件是:
AUTH_TOKEN。username:password,那么您需要使用基本身份验证,并且调用的环境变量AUTH_TOKEN应该是 的 base64 编码username:password。| 归档时间: |
|
| 查看次数: |
360 次 |
| 最近记录: |