【问题标题】:How stop RStudio from creating empty "R" folder within "/home" directory at every startup如何阻止 RStudio 在每次启动时在“/home”目录中创建空的“R”文件夹
【发布时间】:2020-11-19 15:22:55
【问题描述】:

在为默认工作目录以及我在 RStudio 选项中的第一个(也是唯一的)项目设置路径后,我想知道为什么 RStudio 每次都在我的“/home”目录中创建一个名为“R”的空文件夹开始了。

有没有我可以删除/编辑(最终创建)的文件来阻止这种烦人的行为,如果有,它在哪里?

系统:Linux Mint v. 19.3 软件:RStudio v. 1.3.959 / R 版本 3.4.4

提前感谢任何提示。

【问题讨论】:

  • 我刚刚在 ubuntu-16.04 上的 R-3.5.3 上测试过,它不会自动创建 ~/R/ 目录。我的猜测是(1)它是 RStudio 的一部分(对不起,我没有在我的 ubuntu 系统上安装它),或者(2)你的 ~/.Rprofile 中有一些东西正在这样做。 (我的赌注是#1。)
  • 您的.libPaths() 是什么样的?当您直接运行 R 而不是通过 RStudio 运行时,它会做同样的事情吗?您使用这么旧版本的 R 有什么原因吗?
  • R 还是.R
  • @r2evans 实际上,是 RStudio 创建了空的“R”,而从命令行启动时 R-3.4.4 不会。但作为 R 的新手,我不觉得通过命令行管理它对我来说是一个有效的选择。
  • 我理解您的沮丧,但我不知道有什么方法可以阻止 RStudio 创建该目录。不过,您可能会考虑这一点:在 R 中,当您以 user 身份安装基本 R 中未包含的软件包时,您无权将软件包安装到系统库中(通常是 @987654326 @ 或 /usr/local/lib/R)。允许您将软件包安装到 R 中的唯一方法是拥有一个可由您写入的目录。因此,~/R/version 目录。如果你正在学习 R,我几乎可以保证你会想要安装一两个包。

标签: r rstudio startup


【解决方案1】:

是的,您可以通过一组环境变量阻止创建 R 目录 — R is configurable

但是,正确设置这些并非易事。第一个问题是许多 R 包对它们安装的 R 版本很敏感。如果您升级 R 并尝试加载现有包,它可能会损坏。因此,R 包库路径应特定于 R 版本。

在集群上,另一个问题是运行在不同架构上的各种集群节点可能会读取相同的库路径;这是罕见的,但它会发生。在这种情况下,编译的 R 包可能需要根据架构而有所不同。

因此,通常 R 库路径需要特定于 R 版本和系统架构。

接下来,即使你配置了替代路径,如果它不存在,R 也会默默地忽略它。所以一定要手动创建你配置的目录。

最后,把这个配置放在哪里?一种选择是将其放入user environment file,其路径可以使用环境变量R_ENVIRON_USER 指定——默认为$HOME/.Renviron。但这并不理想,因为这意味着用户在调用 R 时不能临时覆盖此设置:此文件中的变量覆盖调用环境。

相反,我建议在用户配置文件中进行设置(例如$HOME/.profile)。但是,当您使用桌面启动器启动 RStudio 时,将不会读取此文件,因此请务必发送至 edit your *.desktop file accordingly1

总之,将以下内容添加到您的$HOME/.profile

export R_LIBS_USER=${XDG_DATA_HOME:-$HOME/.local/share}/R/%p-library/%v

并确保该目录存在:重新获取~/.profile(在当前的shell中启动一个新的shell不够),然后执行

mkdir -p "$(Rscript -e 'cat(Sys.getenv("R_LIBS_USER"))')"

以上使用XDG base dir specification,这是Linux系统上的事实标准。2路径使用占位符%p%v。 R 将分别填写系统平台和 R 版本(格式为major.minor)。

如果您想使用自定义 R 配置文件(“用户配置文件”)和/或 R 环境文件,我建议以相同的方式设置它们的位置,通过配置 R_PROFILE_USERR_ENVIRON_USER(因为它们的默认位置,再次位于用户主目录中):

export R_PROFILE_USER=${XDG_CONFIG_HOME:-$HOME/.config}/R/rprofile
export R_ENVIRON_USER=${XDG_CONFIG_HOME:-$HOME/.config}/R/renviron

1 我没有 Linux 桌面系统,但我认为将 Env 条目编辑到以下内容应该可以做到:

Exec=env R_LIBS_USER=${XDG_DATA_HOME:-$HOME/.local/share}/R/%p-library/%v /path/to/rstudio

2 其他系统需要不同的处理方式。在 macOS 上,库位置的规范设置为 $HOME/Library/Application Support/R/library/%v。但是,在 macOS 上为 GUI 应用程序设置环境变量是frustratingly complicated

在 Windows 上,规范位置是 %LOCALAPPDATA%/R/library/%v。要设置此变量,请在 PowerShell 中使用 [Environment]::SetEnvironmentVariable,或者在使用 cmd.exe 时,使用 setx

【讨论】:

  • 顺便说一句,这个设置不是默认设置,而是需要大约 1 A4 页的密集解释,这有点令人生气。
  • 确实,根据您的发行版,在 Rstudio 中进行这项工作的最方便的方法(与从命令行启动的 R 不同)可能是编辑 .desktop 文件。在我的系统(即 Manjaro)上,我可以选择将 /usr/share/applications/rstudio.desktop 移动到 ~/.local/share/applications/ 或就地编辑它这两个可怜的选项。无论哪种方式,用Exec=env R_LIBS_USER=${XDG_DATA_HOME:-$HOME/.local/share}/R/%p-library/%v /usr/bin/rstudio-bin %F 替换当前的Exec = ... 行(并确保该文件夹像您描述的那样存在),都可以。
【解决方案2】:

这对我来说也很烦人,很难理解为什么 RStudio 没有设置库目录的选项。然而,这个问题的解决比上面提到的要简单。 RStudio 只是缺少/usr/lib/R/library/ 的写入权限。使用 $sudo chmod 或适当的文件管理器来启用此特定目录的写入权限(针对组和用户)。之后,RStudio 将能够保存新的或更新的插件,因此不会在 ~/home 中创建新的“R”文件夹。

请注意,更改 /usr/... 中的文件夹或任何系统文件夹的权限只有在您知道自己在做什么时才应该进行(注意潜在的安全隐患,当使用错误的文件夹闪烁时)或文件)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 2015-01-11
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    相关资源
    最近更新 更多