2014-10-08 30 views
2

我試圖從啓用cairo支持的源代碼編譯R 3.1.1。我想這是因爲我試圖在沒有圖形環境(因此沒有X11)的服務器上運行R,但仍輸出PNG。使用開羅支持編譯R而不使用X11

我試圖與

./configure --with-x=no --with-cairo=yes --with-libpng=yes --enable-R-shlib --prefix=$HOME 

這樣做產生與沒有PNG或開羅支持(如由capabilities())的R二進制配置R上。在config.log,有以下。

configure:31563: checking for X 
configure:31749: result: disabled 
configure:32420: result: using X11 ... no 
configure:32530: checking whether pkg-config knows about cairo and pango 
configure:32542: result: yes 
configure:32576: checking whether cairo including pango is >= 1.2 and works 
configure:32599: gcc -std=gnu99 -o conftest -g -O2 -fpic -I/usr/local/include -pthread -I/home/rmccloskey/include/pango-1.0 -I/home/rmccloskey/include/cairo -I/home/rmccl 
oskey/include/glib-2.0 -I/home/rmccloskey/lib/glib-2.0/include -I/home/rmccloskey/include/pixman-1 -I/usr/include/freetype2 -I/home/rmccloskey/include/freetype2 -I/home/rmc 
closkey/include/libpng16 -L/usr/local/lib64 conftest.c -lrt -ldl -lm -L/home/rmccloskey/lib -lpangocairo-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lpng16 -lz -lcairo > 
&5 
conftest.c:232:24: fatal error: cairo-xlib.h: No such file or directory 
#include <cairo-xlib.h> 
         ^ 
compilation terminated. 

正如你所看到的,配置知道cairo和pango,它也知道我沒有使用X11。但它仍然試圖編譯一個需要cairo-xlib.h的文件?我能在這裏做什麼?

回答

1

從最狹隘的意義上說,開羅似乎需要x11標題。

從更廣泛的角度來看,詳細瞭解使用虛擬x11服務器的各種答案 - 它們允許您無頭使用。

此外,您可以嘗試不使用x11,png,cairo構建 - 然後使用CRAN的兩個cairo軟件包之一來創建圖形。在Debian/Ubuntu中,我們至少還有爲您預編譯的cairoDevice包。

+0

開羅不需要X11標頭。我成功地建造了沒有X11標題的開羅。問題在於,出於某種原因,儘管使用了「--with-x = no」標誌來配置,R仍然要求開羅使用Xlib支持。 – rmccloskey 2014-10-08 19:20:09

+0

向我抱怨是毫無意義的。如果你認爲這個世界需要這個,請準備一個補丁並將其發送給R核心 - 否則可能會有對x11字體度量標準的依賴或類似的東西。我向您展示了即使在無頭機器上工作時也可以創建圖形的幾種方法,因此我認爲整個方面大都沒有實際意義。但是你的里程可能會有所不同。 – 2014-10-08 19:22:44

+1

謝謝。我道歉,我沒有抱怨,而是我認爲你誤解了我的問題。不幸的是,我正在運行別人的代碼,所以其他軟件包不是一個選項。我想我會研究xvfb,謝謝。 – rmccloskey 2014-10-09 01:34:05

2

我已經能夠使用CentOS-6.5和R-3.1.2進行這項工作。我不得不先安裝cairo和pango。這是我的配置命令:

./configure --with-recommended-packages = no --without-x --with-cairo --with-libpng --with-libtiff --with-jpeglib --enable -R-shlib

0

我有確切的問題。我通過使用下面非常黑客的方式解決了這個問題。

在R.x.y.z src目錄中,編輯配置文件。有線:​​

#include <cairo-xlib.h> 

我只是刪除了這一行。然後運行這個文件並製作。一切都適合我。我的開羅編譯出x11支持。因爲我在共享的RHEL6盒子上。我做所有事情都沒有根。我這樣做的目的是讓R與Jupyter筆記本一起工作。除此之外,我還需要在$HOME/.Rprofile中添加options(bitmapType='cairo')。這Link是非常有幫助的。

通過做所有這些黑客,現在一切都適合我。 :)