2009-11-10 22 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サーバーを使用します。ヘッドレスのchrootでX11 for Rビルドが必要なパッケージをビルドする場合も同様です。たとえばrggobiから構築依存のPARSは:

xvfb xauth xfonts-base

これらをインストールした後は、xvfb-runコマンドを使用することができます。もしあなたが例えばRを始めるならば。

xvfb-run R --no-save 

これで、X11を必要とするルーチンとコマンドを、たとえば、次のように使用できるようになりました。いくつかのプロットデバイス、またはX11を持っていることを主張するtcl/tkの初期化も含まれます。

同じトリックは、Webサーバーにとって便利です。

9

サーバーの制御権を持っている場合、Dirkの提案はうまくいきます。&はxvfbを実行できます。あなたは今、これを抑制することができ

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

: がない場合は、Rの新しいバージョン(> =多分、以前の2.10 &)が、これはもはやエラーであるに...

を読み、それは警告です警告、およびその後のパッケージローディングメッセージを介し:

> suppressPackageStartupMessages(suppressWarnings(library(tcltk))) 

多くの場合、あなたが原因tcltkに依存qvalueのようなパッケージをロードするには、このメッセージが表示されます。サイレント操作後にしている場合、あなたは黙って最初tcltkロードする必要があり、その後、興味のあるパッケージ:http://dev.list.galaxyproject.org/wrapping-qvalue-in-Galaxy-td4655164.html

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

マーク

原因に復活

関連する問題