我在一个大型EC2 Ubuntu实例上运行R 2.9,加载了RAM,但是没有终端.当我加载具有显示依赖性的库,如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
Run Code Online (Sandbox Code Playgroud)
这似乎是一个普遍的问题,我想知道其他人是如何解决它的.安装X11服务器不是理想的解决方案.
Dir*_*tel 39
使用虚拟帧缓冲X11服务器 - 我们也做同样的事情来构建需要X11的软件包,用于无头chroots中的R版本.以构建取决于例如rggobi:
xvfb xauth xfonts-base
安装完成后,您可以使用该xvfb-run命令.如果你通过例如启动R.
xvfb-run R --no-save
Run Code Online (Sandbox Code Playgroud)
你现在应该能够使用需要X11的例程和命令,例如某些绘图设备,或者tcl/tk初始化,它们也坚持使用X11.
同样的技巧对Web服务器很有用.
如果您可以控制服务器并且可以运行xvfb,那么Dirk的建议确实很有效.如果没有,请继续阅读......
在较新版本的R(> = 2.10且可能更早)中,这不再是错误,它是一个警告:
> library(tcltk)
Loading Tcl/Tk interface ... done
Warning message:
In fun(libname, pkgname) : no DISPLAY variable so Tk is not available
Run Code Online (Sandbox Code Playgroud)
您现在可以通过以下方式禁止此警告和后续程序包加载消息:
> suppressPackageStartupMessages(suppressWarnings(library(tcltk)))
Run Code Online (Sandbox Code Playgroud)
通常你会看到这个消息,因为加载了一个qvalue依赖于它的包tcltk; 如果你是在沉默操作之后,你应该首先默默地加载tcltk,然后是感兴趣的包:
> suppressPackageStartupMessages(suppressWarnings(library(tcltk)))
> library(qvalue)
Run Code Online (Sandbox Code Playgroud)
标记
由于以下原因而复活:http://dev.list.galaxyproject.org/wrapping-qvalue-in-Galaxy-td4655164.html