【问题标题】:Fatal error: cannot mkdir R_TempDir致命错误:不能 mkdir R_TempDir
【发布时间】:2011-06-10 14:34:27
【问题描述】:

尝试运行 R 时,我收到此错误:

致命错误:无法 mkdir R_TempDir

我通过谷歌搜索找到了解决此问题的两种可能方法。第一个是确保我的 tmp 目录不包含大量子目录 - 它不包含并且它实际上是空的。第二个修复是确保我的环境中的 TMP、TMPDIR 和 R_USER 没有设置为不存在的路径——我什至没有设置这些。因此,我在我的主目录中创建了一个 tmp 目录,并在我的环境中添加了它的 TMP 路径。我能够运行 R 一次,然后再次遇到致命错误。我在环境中设置的 TMP 目录中没有任何内容。有谁知道我还能尝试什么?谢谢。

【问题讨论】:

  • 如果你用谷歌搜索过这个问题,请向下滚动到关于磁盘空间的最后一个答案
  • 是的。磁盘空间是我的问题

标签: r


【解决方案1】:

Dirk 是对的,但忽略了一点:如果/tmp 已满,则不能在那里创建子目录。试试

df /tmp

我刚刚在共享服务器上点击了这个,/tmp 安装在它自己的分区上,并被许多用户共享。在这种特殊情况下,您无法真正看出是谁的错,因为权限限制您查看谁在填充 tmp 分区。基本上得请系统管理员搞清楚。

【讨论】:

    【解决方案2】:

    您的默认临时目录似乎具有错误的权限。我这里有

    $ ls -ld /tmp
    drwxrwxrwt 22 root root 4096 2011-06-10 09:17 /tmp
    

    关键部分是“每个人”都可以读或写。你也需要那个。它当然可以包含子目录。

    您正在运行 AppArmor 或 SE Linux 之类的东西吗?

    编辑 2011-07-21: 正如有人刚刚认为有必要否决这个答案 - help(tempfile) 非常清楚 tmpdir 的值(临时文件或目录的默认目录) ) 尝试:

    默认情况下,'tmpdir' 将是'tempdir()' 给出的目录。这 将是临时目录的子目录 遵循规则。环境变量'TMPDIR''TMP''TEMP' 依次检查并找到第一个指向可写的 使用目录:如果没有成功则使用'/tmp'

    所以我的钱是检查这三个环境变量。但是 AppArmor 和 SELinux 在某些发行版上也被证明是一个问题。

    【讨论】:

    • 恐怕没那么简单。我有一台机器现在出现了同样的问题,并且 TMP 设置为 /tmp,并且 /tmp 的权限是正确的。系统日志中似乎也没有任何表明存在问题的内容。
    • 他们不应该记录一些东西来告诉我们发生了什么吗?
    • 如果代码是这样编写的,它记录,是的。假设所有代码都是你的错。
    • 查看扩展答案——在某些时候,一个简单的mkdir() 调用会失败。你需要思考为什么/在哪里。首先将TMPDIR 设置为$(HOME)/tmp 之类的东西(并确保它存在)。
    • 我遇到了这个错误。尽管权限看起来不错“ls -ld /tmp”并且我的驱动器(df)上有空间,但我的操作系统说 /tmp 是只读的。我重新启动,操作系统(Ubuntu 14.04)说我的根分区有问题。我选择尝试修复它(来自修复、忽略、手动)。在那之后很快,我的机器又重新启动了,然后它干净利落地出现了,问题就消失了。每日备份...!
    【解决方案3】:

    转到您的用户目录并创建一个名为 .Renviron 的文件并添加以下行,保存并重新打开 RStudio 或 Rgui 或 Rterm

    TMP = '<path to folder where Everyone has full control>'
    

    这适用于我在 Windows 7 上

    【讨论】:

      【解决方案4】:

      刚遇到这个问题,终于解决了。只是一个Windows权限问题。转到环境变量并找到临时文件夹的位置。然后右键单击文件夹>属性>安全>高级>将所有人更改为完全控制>勾选“用该对象的可继承权限条目替换所有子对象权限条目”>确定>确定。

      【讨论】:

        【解决方案5】:

        当您的计算机完全没有空间时,也会发生这种情况。目前,我的 Mac 有 0 kb 可用空间,它导致了这个错误。释放一些空间解决了这个问题。

        【讨论】:

          【解决方案6】:

          检查用于启动 RStudio 的用户帐户。现在你检查 TMP(系统环境变量)的位置。如果启动 RStudio 的用户对这些目录具有 Write 访问权限,您将不会遇到此问题。据说您正面临这个问题,您所要做的就是更改用户的权限以对这些目录具有访问权限.

          【讨论】:

            【解决方案7】:

            如果您正在运行其中一个摇杆 docker 映像(例如,rocker/verse),则需要将本地目录映射到容器中的/tmp 目录。例如,

            docker run --rm -v ${PWD}/tmp:/tmp -p 8787:8787 -e PASSWORD=password rocker/verse:4.0.4
            

            我的${PWD}~/devProjs/r,我在其中创建了一个/tmp 目录,以便容器的/tmp 映射到我的~/devProjs/r/tmp 目录。

            【讨论】:

            • 感谢@dirk-eddelbuettel 为我指明了正确的方向!
            【解决方案8】:

            在 CentOS 系统上运行 R 并遇到同样的问题。我不得不从 tmp 目录中删除所有 R 文件夹。通常所有 R 文件夹都将采用 /tmp/Rtmp***** 的形式 所以我尝试通过运行以下命令从 /tmp 中删除文件夹。

            CD 进入 /tmp 目录并运行 rm -rf Rtmp*

            R shell 之后为我工作

            【讨论】:

              猜你喜欢
              • 2022-09-29
              • 2019-04-21
              • 2015-03-14
              • 2022-07-12
              • 2018-03-06
              • 2012-06-19
              • 1970-01-01
              • 2019-12-05
              • 1970-01-01
              相关资源
              最近更新 更多