2011-06-10 104 views
18

当试图运行R,我得到这个错误:致命错误:无法MKDIR R_TempDir

Fatal error: cannot mkdir R_TempDir

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

+5

如果你已经用你的方式来回答这个问题,向下滚动到最后一个关于磁盘空间 – 2013-11-12 06:24:22

+2

yup的答案。磁盘空间是我的问题 – eyaler 2014-03-06 06:16:54

回答

15

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

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

关键部分是'大家'可以读取或写入。你也需要这个。它当然是可以包含子目录。

您是否在运行AppArmor或SE Linux?

编辑2011-07-21:正如有人只是认为有必要downvote这个答案 - help(tempfile)是什么样的价值观tmpdir很清晰(临时文件或目录的默认目录)尝试:

By default, 'tmpdir' will be the directory given by 'tempdir()' . This will be a subdirectory of the temporary directory found by the following rule. The environment variables 'TMPDIR' , 'TMP' and 'TEMP' are checked in turn and the first found which points to a writable directory is used: if none succeeds '/tmp' is used.

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

+0

恐怕不是那么简单。现在我有一台机器出现了这个问题,并且TMP被设置为/ tmp,并且/ tmp的权限是正确的。系统日志中似乎也没有显示任何问题。 – 2011-07-21 16:56:58

+0

是不是他们应该记录的东西告诉我们发生了什么事? – 2011-07-21 17:04:30

+0

如果代码被写入以便记录,是的。假设所有代码都有错误。 – 2011-07-21 17:06:31

21

德克是正确的,但错过了一点:如果/tmp已满,您不能在那里创建子目录。尝试

df /tmp 

我刚打这个共享服务器,其中/tmp安装在它自己的分区上,并且被许多用户共享。在这种特殊情况下,您无法真正看到是谁的错,因为权限限制您看到谁正在填充tmp分区。基本上必须要求系统管理员弄明白。

0

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

1

转到用户目录并创建一个名为.Renviron文件,并添加以下行,将其保存并重新打开RStudio或RGUI或R项

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

这个工作我在Windows 7

0

这当你的电脑完全没有空间时,也会发生这种情况。目前,我的Mac有0 kb免费,这是造成这个错误。释放一些空间解决了这个问题。