16

我已经在我的 Mountain Lion Mac 上安装了 R3.0,经过反复试验,http ://r.research.att.com/ 为 R3.0 建议的 GTK 版本:GTK+ 2.24.17 框架。

我将包加载到 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 
4

7 回答 7

8

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

安装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
于 2013-06-01T02:07:25.053 回答
8

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

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

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

于 2013-06-02T19:59:47.443 回答
4

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

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。

于 2013-07-10T17:50:57.240 回答
3

在 MAC 上使用 RI 时,请尽量遵循尝试以原生方式完成所有操作的原则,并避免使用 Homebrew 和 Macports 解决方案。即使对于其他用途,我也喜欢自制软件。

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

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

第 2 步:只需验证此 GTK+ 框架现在安装在您计算机上的哪个位置——在我的计算机上,它安装在:
/Library/Frameworks/GTK+.framework/

第三步:找到新安装的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 来获取旧值并在必要时附加它。

于 2015-01-29T14:18:41.590 回答
2

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

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

  • 使用 macports 安装 GTk2 和 cairo

我从来没有设法用 macports 完成这项工作,但经过多次徒劳无功的尝试,最终我在自制软件上取得了成功。我清理了变得有点混乱的 PATH 。然后我基本上卸载了 X11、GTk+、cairo 和它们的所有依赖项。

我首先安装了 XQuartz-2.7.4。

对于所有需要的组件的安装,我已经按照此处找到的说明进行操作,并使用自制软件和相关说明安装了 yarp。大多数人可能会觉得这很奇怪(我确实如此),但是安装 yarp 会按顺序安装所有需要的依赖项以使 GTk+ 工作(显然我尝试只安装 GTk+ 和 cairo 但它从未工作过,或者最终 RGTk2 无法编译)。

然后我从源代码安装(使用 R CMD INSTALL)GTk2、Cairo、cairoDevice 和拨浪鼓。经过这么多月试图解决这个问题,我无法相信一切都奏效了!

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

恩佐

于 2013-08-01T15:35:03.893 回答
1

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

在 R > 3.0 上解决 GTK 问题

于 2014-05-07T22:00:28.240 回答
0

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

  1. 安装 gtk2:绝对使用 macports gtk2。不要考虑自己从 source 构建 gtk2

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

  2. 安装 gtk2 的哪个变体及其依赖项:不要安装 +quartz 变体,使用 +x11 变体,即使(与所有 Mac OS 10.8.x+ 一样)根据Brandon Allbery 对macports的有用帖子安装 XQuartz 而不是 X11 - 解释 + quartz变体名称的用户是用词不当

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

  3. 然后正如 jverzani 所指出的,您需要以下源安装(而不是MacOS 二进制安装):

    ...#then install:从 CRAN 下载 RGtk2 和 cairoDevice 并进行源代码安装:

    R CMD INSTALL RGtk2

    R CMD INSTALL cairoDevice

于 2013-07-11T12:20:57.903 回答