r-在没有明文密码的代理后面使用Renv



我在代理服务器后面处理R项目,这就是为什么我使用keyring库来存储我的代理凭据,并在需要时手动在代理上进行身份验证。这样,我就不需要在某个地方以明文编写HTTPS_PROXY=http://usr:pw@proxy:port——无论是在全局环境中还是在项目方面。当然,在运行时,Sys.env确实包含此字符串,但至少仅用于会话。

到目前为止还不错。现在我需要使用虚拟环境,因为我的项目中有些包版本不匹配。为此,我创建了renv:init()。在关闭并重新绑定程序包后,Rstudio在加载程序包时似乎冻结了。我猜renv以某种方式试图访问这些包(有些在cran上,有些在本地gitlab上(,但由于没有设置代理,这些包无法工作。当我用用户名和密码创建一个包含代理设置的.Renviron时,一切都很好。

你知道在项目开始时阻止renv尝试连接到包源的方法吗?还是你认为问题出在其他地方?

我的最佳猜测是renv试图在启动时向活动包存储库发出请求,作为其验证lockfile+库是否同步的尝试的一部分。如果是这样的话,你可以通过以下方式禁用它:

RENV_CONFIG_SYNCHRONIZED_CHECK = FALSE

在您的.Renviron中。看见https://rstudio.github.io/renv/reference/config.html了解更多详细信息。

或者,您可以告诉renv以几种方式提前加载您的凭据,例如

  1. 尝试将初始化工作添加到您的项目.Rprofile或(使用RENV_CONFIG_USER_PROFILE = TRUE(您的用户~/.Rprofile

  2. 尝试将初始化代码添加到位于renv/settings.R的文件中,renv将在加载过程中相对较早地获取该文件。

最新更新