为什么 `renv` 符号链接到旧包版本?
Why does `renv` symlink to older package version?
我正在开发一个 R 项目,其中包 renv
用于 manage project-local dependencies。
当我第一次 运行 renv::init()
包做它的事情时,在我的项目中找到依赖项并将它们记录在本地项目目录中。根据 renv
文档,此本地目录中的每个包文件都是指向存储在全局 renv
包缓存中的 实际 包文件的符号链接。
现在,在全局缓存中,一些包有两个版本。例如,有一个 rlang v0.4.6
和一个 rlang v0.4.10
。但是,出于某种原因 renv
决定符号链接到旧版本而不是新版本,这让我在尝试加载类似 tidyverse
的内容时感到头疼(这需要 rlang v0.4.10
而不是 rlang v0.4.6
).
有人知道如何解决这个问题吗?非常感谢。
renv::init()
基本上“分叉”用户库的状态以便在项目本地库中使用,因此最可能的解释是用户库中安装的 rlang
版本是 0.4.6。您可以在 renv
之外使用以下内容验证这一点:
find.package("rlang")
packageVersion("rlang")
解决此问题的最简单方法是在您的项目中安装 rlang
的更新版本;例如
install.packages("rlang")
或者,如果您想更新项目中使用的所有包,则可以使用:
renv::update()
最终,renv
只是为您的项目提供一个项目本地库,您可以根据特定项目的需要自由更新和安装不同版本的包。
我正在开发一个 R 项目,其中包 renv
用于 manage project-local dependencies。
当我第一次 运行 renv::init()
包做它的事情时,在我的项目中找到依赖项并将它们记录在本地项目目录中。根据 renv
文档,此本地目录中的每个包文件都是指向存储在全局 renv
包缓存中的 实际 包文件的符号链接。
现在,在全局缓存中,一些包有两个版本。例如,有一个 rlang v0.4.6
和一个 rlang v0.4.10
。但是,出于某种原因 renv
决定符号链接到旧版本而不是新版本,这让我在尝试加载类似 tidyverse
的内容时感到头疼(这需要 rlang v0.4.10
而不是 rlang v0.4.6
).
有人知道如何解决这个问题吗?非常感谢。
renv::init()
基本上“分叉”用户库的状态以便在项目本地库中使用,因此最可能的解释是用户库中安装的 rlang
版本是 0.4.6。您可以在 renv
之外使用以下内容验证这一点:
find.package("rlang")
packageVersion("rlang")
解决此问题的最简单方法是在您的项目中安装 rlang
的更新版本;例如
install.packages("rlang")
或者,如果您想更新项目中使用的所有包,则可以使用:
renv::update()
最终,renv
只是为您的项目提供一个项目本地库,您可以根据特定项目的需要自由更新和安装不同版本的包。