【问题标题】:Compile R with Cairo support without X11在没有 X11 的情况下使用 Cairo 支持编译 R
【发布时间】:2014-10-08 18:31:13
【问题描述】:

我正在尝试从启用 cairo 支持的源代码编译 R 3.1.1。我想要这个是因为我试图在没有图形环境(因此没有 X11)但仍输出 PNG 的服务器上运行 R。

我尝试使用 R 配置

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

这样做会生成一个不支持 png 或 cairo 的 R 二进制文件(capabilities() 证明了这一点)。在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.

如您所见,configure 知道 cairo 和 pango,它也知道我没有使用 X11。但它仍然尝试编译需要cairo-xlib.h 的文件?我可以在这里做什么?

【问题讨论】:

    标签: r installation cairo


    【解决方案1】:

    我已经能够在 CentOS-6.5 和 R-3.1.2 上完成这项工作。我必须先 yum 安装 cairo 和 pango。这是我的配置命令:

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

    【讨论】:

      【解决方案2】:

      我确实有一些问题。我通过使用下面非常hackish的方式解决了这个问题。

      在 R.x.y.z src 目录中,编辑配置文件。有一行:

      #include <cairo-xlib.h>
      

      我只是删除了这一行。然后运行这个文件并制作。一切都对我有用。我的 cairo 是在不支持 x11 的情况下编译的。因为我在一个共享的 RHEL6 盒子上。我做任何事情都没有根。我这样做的目的是让 R 与 Jupyter notebook 一起工作。除此之外,我还需要在$HOME/.Rprofile 中添加options(bitmapType='cairo')。这个Link 很有帮助。

      通过所有这些技巧,现在一切都对我有用。 :)

      【讨论】:

        【解决方案3】:

        在最狭义的意义上,Cairo 似乎需要 x11 标头。

        在更广泛的意义上,查看详细说明xvfb 虚拟 x11 服务器使用的各种答案——它们允许您无头使用。

        此外,您可以尝试在不使用 x11、png、cairo 的情况下进行构建——然后使用 CRAN 提供的两个 cairo 包之一来创建图形。在 Debian/Ubuntu 中,我们至少还为您预构建了 cairoDevice 软件包。

        【讨论】:

        • Cairo 不需要 X11 标头。我成功地构建了没有 X11 标头的 Cairo。问题在于,出于某种原因,R 要求 Cairo 必须使用 Xlib 支持构建,尽管要配置 --with-x=no 标志。
        • 向我抱怨这件事毫无意义。如果您认为世界需要这个,请准备一个补丁并将其发送到 R Core——否则可能存在对 x11 字体指标或类似内容的剩余依赖。我向您展示了即使在无头机器上工作时也可以创建图表的几种方法,因此我认为整点主要没有实际意义。但是您的里程当然可能会有所不同。
        • 谢谢。我道歉,我不是在抱怨,而是我认为你误解了我的问题。不幸的是,我正在运行其他人的代码,因此无法选择其他软件包。我想我会调查 xvfb,谢谢。
        • 不用担心,是的,xvfb 应该可以帮助您。我想这些年来我也在这里回答了一些关于它的问题,例如this old one。你想把你的脚本包装在xvfb-run中。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-22
        • 2012-10-06
        • 2020-09-19
        • 1970-01-01
        • 1970-01-01
        • 2016-09-30
        • 2012-04-19
        相关资源
        最近更新 更多