R fails after installing GTK and RGtk2

心不动则不痛 提交于 2019-12-17 17:45:18

问题


I've installed R3.0 on my Mountain Lion Mac and after some trial and error the version of GTK suggested by http://r.research.att.com/ for R3.0: GTK+ 2.24.17 framework.

I load the package into R3.0 and run one of the demo. I see (for an instant) that a graph is generated, but immediately R crashes. Typically the crash takes place when I run the line "win$showAll()" (CairoDevice work no problem). This is the beginning of the error log generated (with the details of my configuration). Thanks!


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 

回答1:


I too had this problem. Here is how I worked around it using macports gtk2 -- not the http://r.research.att.com/ version. This was with R version 3.0.1 (2013-05-16) -- "Good Sport", also compiled from source.

install gtk2

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

configure

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

then install

I downloaded RGtk2 and cairoDevice from CRAN and did source install:

R CMD INSTALL RGtk2
R CMD INSTALL cairoDevice



回答2:


In addition to jverzani's answer, if you want to use Homebrew:

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

and then install RGtk2 and cairoDevice from source.




回答3:


I used the Homebrew solution (suggested by masaha03) on Snow Leopard and still had crashing problems with R. It turned out that in such a configuration, gtk is using cairo installed by homebrew whereas RGtk2 and cairoDevice are using the native cairo installation which is a different version. Since cairo and other dependent libraries are "keg-only" I needed to force a symlink for those:

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

These two were sufficient for me but there might be others that need to be linked. The reason is that the Homebrew cairo might be dependent on a specific version of a library, but the system version of that library might be lower. In such a case, the installation of RGtk2 fails with a message that gtk+ is not installed.

Lastly, the PKG_CONFIG_PATH has to point to the Homebrew packages first and then to the native ones:

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

Then install RGtk2 and cairoDevice.




回答4:


On a MAC when working with R I try to follow the principle of trying to do everything natively and avoid Homebrew and Macports solutions. Even though for other uses I love homebrew.

I will just reiterate the suggestion by @BondedDust to use Simon Urbanek's advice.

Step 1: Download the library from http://r.research.att.com/#other

Step 2: Just verify where this GTK+ framework is now installed on your computer---on mine it was installed at:
/Library/Frameworks/GTK+.framework/

Step 3: Find the sub-directory where the newly installed GTK+'s pkg-config file is placed. In my case:
Versions/2.24.X11/Resources/lib/pkgconfig

Step 4: Make sure this is in your PKG_CONFIG_PATH variable. In my case I just set the variable in R directly before installing the RGtk2 package from source as follows:
Sys.setenv(PKG_CONFIG_PATH= "/Library/Frameworks/GTK+.framework/Versions/2.24.X11/Resources/lib/pkgconfig")
install.packages("RGtk2", type="source")

NOTE: my PKG_CONFIG_PATH was previously empty so I didn't need to concatenate to the old value, but if that is not the case for you it is easy to use Sys.getenv to get the old value and append that if necessary.




回答5:


I want to thank all the people that contributed to a solution of this problem. Eventually I managed to fix it, after numerous trials (and late nights!). The basic methods that have been proposed are:

  • install GTk+ and cairo with homebrew

  • install GTk2 and cairo with macports

I never managed to make this work with macports, but eventually I've been successful with homebrew, after many fruitless attempts. I cleaned up my PATH that was getting a bit messy. Then I basically uninstalled X11, GTk+, cairo and all their dependencies.

I've first installed XQuartz-2.7.4.

For the installation of all the needed components I've followed the instructions found here and installed yarp using homebrew and the associated instructions. Most people may found this bizarre (I did), but installing yarp installed sequentially all the needed dependencies to make GTk+ work (obviously I tried just to install GTk+ and cairo but it never worked or eventually RGTk2 failed to compile).

I then installed (using R CMD INSTALL) GTk2, Cairo, cairoDevice and rattle from sources. After so many months trying to fix the problem I couldn't believe that everything worked!

Thanks again to all those that contributed with their effort and their research to fix the problem.

Enzo




回答6:


Update: as far as I can tell, this problem still persists (R version 3.1.0) but the information provided by people in this thread still does the trick for working around it. I ended up running through the installation many times on different Mac OS X systems in the last couple of months and ended up throwing the info together for people new to R (basically a little more detailed version of John Verzani's answer, aimed at Mac OS X > 10.7). It's worked well so far so at the chance of being useful to others I wanted to post the link:

Working around GTK trouble on R > 3.0




回答7:


jverzani's answer is very useful, here are some further issues I found, I edited on to his post:

  1. Installing gtk2: definitely use macports gtk2. Don't contemplate building gtk2 yourself from source.

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

  2. Which variant of gtk2 and its dependencies to install: Do not install the +quartz variant, use the +x11 variant, even if (as with all Mac OS 10.8.x+) you have XQuartz and not X11 installed per Brandon Allbery's useful post to macports-users explaining the +quartz variant name is a misnomer.

    2b. If you accidentally end up selecting anything other than +x11 variant for gtk2 and/or any of its variants (atk, cairo, pango, etc.) you will get compile fails on gtk2. Example: atk was failing for me with compile error on /opt/local/include/atk-1.0/atk/atk.h . You must both delete the wrong installed variants: e.g. sudo port uninstall --follow-dependents cairo @1.12.14_0+quartz+x11 and also clean the unwantedly selected variants with sudo port clean atk cairo pango ...

  3. Then as jverzani notes notes you need a source install (not the MacOS binary install) of these:

    ...#then install: download RGtk2 and cairoDevice from CRAN and do source install:

    R CMD INSTALL RGtk2

    R CMD INSTALL cairoDevice



来源:https://stackoverflow.com/questions/15868860/r-fails-after-installing-gtk-and-rgtk2

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!