安装GTK和RGtk2后R失败

时间:2013-04-07 22:59:02

标签: r gtk rgtk2

我在Mountain Lion Mac上安装了R3.0,经过一些试验和错误后,http://r.research.att.com/为R3.0:GTK + 2.24.17框架提出了GTK版本。

我将软件包加载到R3.0并运行其中一个演示。我看到(暂时)生成了一个图形,但是R立刻崩溃了。 通常,当我运行“win $ showAll()”行时发生崩溃 (CairoDevice工作没问题)。 这是生成错误日志的开始(包含我的配置的详细信息)。 谢谢!


Process:         R [2307]
Path:            /Applications/R.app/Contents/MacOS/R
Identifier:      org.R-project.R
Version:         R 3.0.0 GUI 1.60 Snow Leopard build (6476)
Code Type:       X86-64 (Native)
Parent Process:  launchd [231]
User ID:         501

Date/Time:       2013-04-07 23:54:11.976 +0100
OS Version:      Mac OS X 10.8.3 (12D78)
Report Version:  10

Interval Since Last Report:          11186 sec
Per-App Interval Since Last Report:  1133 sec
Per-App Crashes Since Last Report:   11
Anonymous UUID:                      2C9EB7F4-E0B7-FDC4-7300-075C23CD86BB

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000

Application Specific Information:
Assertion failed: (_cairo_status_is_error (status)), function _cairo_error, file cairo-error.c, line 68.


Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib          0x00007fff8afbd212 __pthread_kill + 10
1   libsystem_c.dylib               0x00007fff867ccb54 pthread_kill + 90
2   libsystem_c.dylib               0x00007fff86810dce abort + 143
3   libsystem_c.dylib               0x00007fff86811e2a __assert_rtn + 146
4   libcairo.2.dylib                0x000000010d383cdc _cairo_error + 48
5   libcairo.2.dylib                0x000000010d37c6f7 _cairo_set_error + 19
6   libgtk-x11-2.0.0.dylib          0x000000010eca326a gtk_default_draw_focus + 554
7   libgtk-x11-2.0.0.dylib          0x000000010ec63dfc gtk_range_expose + 1644
8   libgtk-x11-2.0.0.dylib          0x000000010ec7e2b8 gtk_scale_expose + 120
9   libgtk-x11-2.0.0.dylib          0x000000010ec22e79 _gtk_marshal_BOOLEAN__BOXED + 169
10  libgobject-2.0.0.dylib          0x0000000109642455 g_closure_invoke + 245
11  libgobject-2.0.0.dylib          0x00000001096524c8 signal_emit_unlocked_R + 2216
12  libgobject-2.0.0.dylib          0x0000000109653528 g_signal_emit_valist + 3336
13  libgobject-2.0.0.dylib          0x0000000109653a64 g_signal_emit + 116
14  libgtk-x11-2.0.0.dylib          0x000000010ed38bd8 gtk_widget_event_internal + 664
15  libgtk-x11-2.0.0.dylib          0x000000010eba0fc1 gtk_container_propagate_expose + 369
16  libgtk-x11-2.0.0.dylib          0x000000010eb72e06 gtk_box_forall + 54
17  libgtk-x11-2.0.0.dylib          0x000000010eba3936 gtk_container_expose + 150
18  libgtk-x11-2.0.0.dylib          0x000000010ec22e79 _gtk_marshal_BOOLEAN__BOXED + 169
19  libgobject-2.0.0.dylib          0x0000000109642455 g_closure_invoke + 245
20  libgobject-2.0.0.dylib          0x00000001096524c8 signal_emit_unlocked_R + 2216
21  libgobject-2.0.0.dylib          0x0000000109653528 g_signal_emit_valist + 3336
22  libgobject-2.0.0.dylib          0x0000000109653a64 g_signal_emit + 116
23  libgtk-x11-2.0.0.dylib          0x000000010ed38bd8 gtk_widget_event_internal + 664
24  libgtk-x11-2.0.0.dylib          0x000000010eba0fc1 gtk_container_propagate_expose 

7 个答案:

答案 0 :(得分:8)

我也有这个问题。以下是我使用macports gtk2解决它的问题 - 而不是http://r.research.att.com/版本。这是与R版本3.0.1(2013-05-16) - “好运动”,也是从源代码编译。

安装gtk2

sudo port install gtk2 ## (X11 -- not aqua)

配置

export PATH=/opt/local/bin:/opt/local/sbin:$PATH

然后安装

我从CRAN下载了RGtk2和cairoDevice并做了源安装:

R CMD INSTALL RGtk2
R CMD INSTALL cairoDevice

答案 1 :(得分:8)

除了jverzani的回答,如果你想使用Homebrew:

brew install gtk+
export PKG_CONFIG_PATH=/usr/X11/lib/pkgconfig:$PKG_CONFIG_PATH

然后从源代码安装RGtk2和cairoDevice。

答案 2 :(得分:4)

我在Snow Leopard上使用了Homebrew解决方案(由masaha03建议)并且仍然遇到了R的崩溃问题。事实证明,在这样的配置中,gtk使用自制软件安装的cairo,而RGtk2和cairoDevice使用本机cairo安装这是一个不同的版本。由于cairo和其他依赖库是“keg-only”,我需要为这些库强制使用符号链接:

brew link --force cairo
brew link --force pixman

这两个对我来说已经足够了,但可能还有其他一些需要联系起来。原因是Homebrew cairo可能依赖于库的特定版本,但该库的系统版本可能更低。在这种情况下,RGtk2的安装失败,并显示未安装gtk +的消息。

最后,PKG_CONFIG_PATH必须首先指向Homebrew包,然后指向本地包:

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/X11/lib/pkgconfig:$PKG_CONFIG_PATH

然后安装RGtk2和cairoDevice。

答案 3 :(得分:3)

在使用R时使用MAC我尝试遵循尝试本地操作并避免使用Homebrew和Macports解决方案的原则。即使用于其他用途,我也喜欢自制软件。

我将重申@BondedDust建议使用Simon Urbanek的建议。

第1步:从http://r.research.att.com/#other

下载库

步骤2:只需验证您的计算机上现在安装此GTK +框架的位置---我的安装位置如下:
    /Library/Frameworks/GTK+.framework/

步骤3:找到新安装的GTK +的pkg-config文件所在的子目录。就我而言:
    Versions/2.24.X11/Resources/lib/pkgconfig

步骤4:确保这是在PKG_CONFIG_PATH变量中。在我的例子中,我只是在从源安装RGtk2包之前直接在R中设置变量,如下所示:
    Sys.setenv(PKG_CONFIG_PATH= "/Library/Frameworks/GTK+.framework/Versions/2.24.X11/Resources/lib/pkgconfig")
    install.packages("RGtk2", type="source")

注意:我的PKG_CONFIG_PATH以前是空的,所以我不需要连接到旧值,但如果不适合你,可以很容易地使用Sys.getenv来获取旧值并附加如果有必要的话。

答案 4 :(得分:2)

我要感谢为解决这个问题做出贡献的所有人。经过无数次试验(和深夜!),我最终设法解决了这个问题。 已经提出的基本方法是:

  • 使用自制软件安装GTk +和cairo

  • 使用macports安装GTk2和cairo

我从来没有设法用macports做这项工作,但最终我在使用自制软件后取得了很多成功。 我清理了我的PATH,它有点凌乱。 然后我基本上卸载了X11,GTk +,cairo及其所有依赖项。

我首先安装了XQuartz-2.7.4。

为了安装所有需要的组件,我按照here的说明进行了操作,并使用自制软件和相关说明安装了yarp。大多数人可能会发现这个奇怪的(我做过),但安装yarp按顺序安装所有需要的依赖项以使GTk +工作(显然我只是尝试安装GTk +和cairo但它从未起作用或最终RGTk2无法编译)。

然后我从源头安装(使用R CMD INSTALL)GTk2,Cairo,cairoDevice和rattle。 经过这么多个月试图解决问题,我无法相信一切正常!

再次感谢所有那些为解决问题而付出努力和研究的人。

恩佐

答案 5 :(得分:1)

更新:据我所知,此问题仍然存在(R版本3.1.0),但此线程中的人员提供的信息仍然可以解决它。在过去的几个月里,我最终在不同的Mac OS X系统上多次运行安装,并最终将信息一起扔给R新手(基本上是John Verzani的更详细版本的答案,目的是在Mac OS X> 10.7)。它到目前为止运作良好,因此有机会对其他人有用,我想发布链接:

Working around GTK trouble on R > 3.0

答案 6 :(得分:0)

jverzani's回答非常有用,以下是我发现的其他一些问题,我编辑了他的帖子:

  1. 安装gtk2:绝对使用macports gtk2。不要考虑building gtk2 yourself from source

    sudo port install gtk2 +x11 ##(+ x11,不是+ quartz / + universal / + no_x11)

  2. 要安装的gtk2及其依赖项的哪个变体: 安装+ quartz变体,使用+ x11变体,即使(与所有Mac OS 10.8一样)。 x +)你已经安装了XQuartz而不是X11 Brandon Allbery's useful post to macports-users explaining the +quartz variant name is a misnomer

    2B。如果您不小心为gtk2和/或其任何变体(atk,cairo,pango等)选择+ x11变体以外的其他任何内容,您将在gtk2上获得编译失败。示例:在/opt/local/include/atk-1.0/atk/atk.h上遇到编译错误,atk失败了。您必须删除错误安装的变体:例如sudo port uninstall --follow-dependents cairo @1.12.14_0+quartz+x11也是 使用sudo port clean atk cairo pango ...

  3. 清除不需要的选定变体
  4. 然后正如jverzani所说,您需要安装源代码( MacOS二进制安装):

    ...#然后安装:从CRAN下载RGtk2和cairoDevice并做源安装:

    R CMD INSTALL RGtk2

    R CMD INSTALL cairoDevice