Подтвердить что ты не робот

Как запустить R на сервере без X11 и избежать ошибок

Я запускаю R 2.9 на большом экземпляре EC2 Ubuntu, загруженном ОЗУ, но без терминала. Когда я загружаю библиотеку с зависимостями отображения, такую ​​как пакет sqldf, я получаю следующую ошибку:

library(sqldf)
...
Loading required package: tcltk
Loading Tcl/Tk interface ... Error in fun(...) : couldn't connect to display "localhost:11.0"
Error : .onLoad failed in 'loadNamespace' for 'tcltk'
Error: package 'tcltk' could not be loaded

Это, кажется, общая проблема, и мне интересно, как другие ее решили. Установка сервера X11 не является желательным решением.

4b9b3361

Ответ 1

Использовать сервер X11 виртуального фреймбуфера - мы делаем то же самое, чтобы создавать пакеты, требующие X11 для R-сборки в безгласных chroots. Принимая, например, pars Build-Depends от rggobi:

xvfb xauth xfonts-base

После их установки вы можете использовать команду xvfb-run. Если вы запустите R, например,

xvfb-run R --no-save

теперь вы сможете использовать подпрограммы и команды, требующие X11, например. некоторые из графических устройств или инициализация tcl/tk, которая также настаивает на наличии X11.

Тот же трюк полезен для веб-серверов.

Ответ 2

Предложение Dirk действительно работает хорошо, если у вас есть контроль над сервером и вы можете запустить xvfb. Если нет, прочитайте...

в новых версиях R ( >= 2.10 и, возможно, раньше), это уже не ошибка, это предупреждение:

> library(tcltk)
Loading Tcl/Tk interface ... done
Warning message:
In fun(libname, pkgname) : no DISPLAY variable so Tk is not available

Теперь вы можете подавить это предупреждение и последующее сообщение загрузки пакета через:

> suppressPackageStartupMessages(suppressWarnings(library(tcltk)))

Часто вы увидите это сообщение из-за загрузки пакета, такого как qvalue, который зависит от tcltk; если вы после бесшумной работы, вы должны сначала загрузить tcltk, а затем пакет интересов:

> suppressPackageStartupMessages(suppressWarnings(library(tcltk)))
> library(qvalue)

Марк

воскрешено из-за: http://dev.list.galaxyproject.org/wrapping-qvalue-in-Galaxy-td4655164.html