2011-06-10 103 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免費,這是造成這個錯誤。釋放一些空間解決了這個問題。