2009-11-10 71 views
22

我在装有RAM的大型EC2 Ubuntu实例上运行R 2.9,但没有终端。当我装载有显示器的依赖,如sqldf包库,我收到以下错误:如何在没有X11的情况下在服务器上运行R,并避免依赖关系破损

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服务器不是一个理想的解决方案。

回答

32

使用虚拟帧缓冲区X11服务器 - 我们也是这样做的,以构建需要X11 for R的软件包构建在无头chroot中。以例如从rggobi的构建时刻依赖的标准杆:

xvfb xauth xfonts-base

安装这些之后,你可以使用xvfb-run命令。如果你通过例如

xvfb-run R --no-save 

您现在应该能够使用需要X11的例程和命令,例如,一些绘图设备,或tcl/tk初始化,它们也坚持使用X11。

相同的技巧对于Web服务器很有用。

9

德克的建议确实很好,如果你有控制服务器&可以运行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

相关问题