Rscript запускает проблему с TMPDIR через plink -ssh в Windows

Я хочу создать свой собственный вариант makePSOCKcluster а также newPSOCKnode используя ssh соединение через plink. Итак, я переписываю код

    if (machine != "localhost") {
        rshcmd <- getClusterOption("rshcmd", options)
        user <- getClusterOption("user", options)
        cmd <- shQuote(cmd)
        cmd <- paste(rshcmd, "-l", user, machine, cmd)
    }
    if (.Platform$OS.type == "windows") {
        system(cmd, wait = FALSE, input = "")
    }
    else system(cmd, wait = FALSE)

по моему варианту, который дает мне cmd как это:

plink -ssh Rebelion@ClusterNode1 -pw myPasswd123 "Rscript --default-packages=datasets,utils,grDevices,stats,graphics,methods -e parallel!:::.slaveRSOCK MASTER=CLUSTERNODE1 PORT=11038 TIMEOUT=2592000 XDR=TRUE". 

ClusterNode1 - это текущая машина (я вошел как Rebelion, это логин администратора).

Но system(cmd, wait=FALSE, input="") дает мне это:

Fatal error: creation of tmpfile failed -- set TMPDIR suitably?

Я не знаю, почему я получаю эту ошибку и что мне делать. Я поставил TMPDIR, TMP а также TEMP переменные как %USERPROFILE%/AppData/Local/TempЯ установил максимальные привилегии для всех пользователей, кроме гостей.

Может ли кто-нибудь помочь мне решить эту проблему? Thnxs.

4 ответа

TMPDIR должен быть реальный путь, как C:\Users\martin\AppData\Local\Temp,

Он не может содержать другие переменные среды.

Использование system2 вызовите и передайте переменную TMPDIR, используя env аргумент.

Из документации:

system2(command, args = character(), stdout = "", stderr = "", stdin = "", input = NULL, env = character(), wait = TRUE, minimized = FALSE, invisible = TRUE)

env: символьный вектор строки name=value для установки переменных окружения.

Также попробуйте указать путь TMPDIR как абсолютный путь, например C:\Windows\Temp, вместо использования переменных среды CMD.

Это похоже на проблему с настройками входа в систему на этом удаленном компьютере. Я бы попытался заставить следующее работать (из командной строки Windows):

plink -ssh Rebelion@ClusterNode1 -pw myPasswd123 "Rscript --version"

и если это работает, убедитесь, что:

plink -ssh Rebelion@ClusterNode1 -pw myPasswd123 "Rscript -e 1+2"

тоже работает. Только тогда начните беспокоиться об этом с помощью параллельного пакета в R.

Благодарю вас. Я не знаю, как дать очки всем вам, извините, но я действительно хочу дать награду всем вам. Основная проблема заключалась в OpenSSH и отдельном правиле привилегий, которое не позволяет создавать сеанс с правами администратора. Сегодня я могу запустить Rscript нормально, но есть проблемы с parallel!:::.slaveRSOCK() часть (я полагаю, это связано с разделителями и путями, я тоже скоро решу эту проблему). Спасибо снова и снова. Если вы знаете, как дать щедрость всем вам - пожалуйста, скажите мне, я сделаю.

Другие вопросы по тегам