#r
#r
Вопрос:
При попытке запустить R я получаю эту ошибку:
Неустранимая ошибка: не удается выполнить mkdir R_TempDir
Я нашел два возможных решения этой проблемы, поискав в Google. Первым делом нужно было убедиться, что мой каталог tmp не содержит множества подкаталогов — это не так, и он практически пуст. Второе исправление заключалось в том, чтобы убедиться, что для TMP, TMPDIR и R_USER в моей среде не были установлены несуществующие пути — у меня даже их не было установлено. Поэтому я создал каталог tmp в моем домашнем каталоге и добавил его путь к TMP в моей среде. Мне удалось запустить R один раз, а затем я снова получил неустранимую ошибку. В каталоге TMP, который я установил в своей среде, ничего не было. Кто-нибудь знает, что еще я могу попробовать? Спасибо.
Комментарии:
1. Если вы прогуглили свой путь к этому вопросу, прокрутите вниз до последнего ответа, касающегося дискового пространства
2. да. проблема с дисковым пространством была для меня
Ответ №1:
Дирк прав, но упускает один момент: если /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 также оказались проблемой в некоторых дистрибутивах.
Комментарии:
1. Боюсь, это не так просто. У меня на компьютере сейчас возникает такая же проблема, и для TMP установлено значение / tmp, а разрешения для / tmp правильные. В системных журналах, похоже, также нет ничего, что указывало бы на проблему.
2. разве они не должны регистрировать данные, чтобы сообщить нам, что происходит?
3. Если код написан таким образом, что он регистрируется, да. Ваша ошибка в предположении, что весь код выполняет.
4. Смотрите расширенный ответ — в какой-то момент простой
mkdir()
вызов завершается неудачей. Вам нужно продумать, почему / где. Начните с установкиTMPDIR
чего-то вроде$(HOME)/tmp
(и убедитесь, что оно существует).5. У меня возникла эта ошибка. Несмотря на то, что разрешения выглядели нормально «ls -ld / tmp» и у меня было свободное место на моем диске (df), моя ОС сказала, что / tmp доступен только для чтения. Я перезагрузился, и ОС (Ubuntu 14.04) сообщила, что в моем корневом разделе возникла проблема. Я решил попробовать исправить это (из Fix, Ignore, Manual). Очень быстро после этого моя машина снова перезагрузилась, а затем все заработало чисто, и проблема исчезла. Ежедневные резервные копии …!
Ответ №3:
Перейдите в каталог вашего пользователя и создайте файл с именем .Обновите файл и добавьте следующую строку, сохраните его и снова откройте RStudio, Rgui или Rterm
TMP = '<path to folder where Everyone has full control>'
Это сработало со мной в Windows 7
Ответ №4:
Если вы используете один из образов rocker 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
каталогом.
Комментарии:
1. спасибо @dirk-eddelbuettel за то, что указал мне правильное направление!
Ответ №5:
Только что столкнулся с этой проблемой и, наконец, решил ее. Просто проблема с разрешениями Windows. Перейдите в раздел переменные среды и найдите расположение временных папок. Затем щелкните правой кнопкой мыши на папке > свойства > безопасность > дополнительно > измените все на полный контроль > отметьте «заменить все записи разрешений дочернего объекта на наследуемые записи разрешений от этого объекта» > Ok > ok.
Ответ №6:
Это также произойдет, когда на вашем компьютере совершенно не хватит места. В настоящее время на моем Mac свободно 0 кб, и это вызывает эту ошибку. Высвободив немного места, мы решили проблему.
Ответ №7:
Проверьте учетную запись пользователя, с которой вы запускаете RStudio. Теперь вы проверяете TMP (системную переменную окружения) на предмет ее местоположения. Если пользователь, который запускает RStudio, имеет доступ на запись для этих каталогов, вы не столкнетесь с этой проблемой. Учитывая, что вы столкнулись с этой проблемой, все, что вам нужно сделать, это изменить разрешения для этого пользователя, чтобы иметь доступ на запись в эти каталоги.
Ответ №8:
Запускал R в системе CentOS и столкнулся с той же проблемой. Мне пришлось удалить все папки R из каталога tmp. Обычно все папки R будут иметь вид /tmp / Rtmp ***** поэтому я попытался удалить папки из / tmp, выполнив приведенную ниже команду.
Вставьте компакт-диск в каталог /tmp и запустите rm -rf Rtmp*
R shell впоследствии у меня сработал
Ответ №9:
У меня была эта проблема, решение было немного другим. Я запускаю R на сервере Linux — оказалось, что R полностью загрузил временные папки при выполнении заданий с cron, которые зависли и не были очищены, засоряя корневой /tmp
каталог ~ 300 RtmpXXXXXX
папками.
Используя доступ к терминалу, я перешел в /tmp
папку, выполнил рекурсивный поиск / rm — удалив их все с помощью этой команды:
find . -type d -name 'Rtmp*' -exec rm -r -v {} ;
После этого Rstudio потребовалось некоторое время для загрузки, но он снова был доволен, и мои скрипты снова начали выполняться.
Для этого решения вам понадобятся соответствующие права администратора. И всегда будьте осторожны при запуске rm -r
, особенно с find
командой, так как ее легко неожиданно удалить.
Ответ №10:
Когда дело доходит до удаления файлов tmp, убедитесь, что файлы tmp находятся на сервере или локально.
Если он находится на удаленном компьютере, сначала проверьте df /tmp
на сервере или на удаленном компьютере, чтобы узнать, кто использует больше памяти.
Затем используйте rm
(имя_файла)` для удаления файлов, которые вызывают блокировку.
Если он находится на удаленном сервере, то используйте rm /tmp/(имя_файла)..
Кроме того, вы также можете обратиться к https://support.rstudio.com/hc/en-us/articles/218730228-Resetting-a-user-s-state-on-RStudio-Server