R 3.0 и GTK+ / RGTK2 ошибка
Я установил R3.0 на свой Mountain Lion Mac и после некоторых проб и ошибок версия GTK, предложенная http://r.research.att.com/ для R3.0: GTK+ 2.24.17 framework.
Я загружаю пакет в 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 ответов
Я хочу поблагодарить всех людей, которые внесли свой вклад в решение этой проблемы. В конце концов мне удалось это исправить после многочисленных испытаний (и поздних ночей!). Основные методы, которые были предложены:
установить GTk+ и Каир с доморощенным
установить GTk2 и cairo с macports
Мне никогда не удавалось сделать эту работу с макпортом, но в конце концов я добился успеха с домашним пивом, после многих бесплодных попыток. Я очистил мой путь, который становился немного грязным. Затем я в основном удалил X11, GTk+, cairo и все их зависимости.
Я впервые установил XQuartz-2.7.4.
Для установки всех необходимых компонентов я следовал приведенным здесь инструкциям и установил yarp с помощью homebrew и связанных с ним инструкций. Большинству людей это показалось странным (я это сделал), но при установке yarp последовательно устанавливались все необходимые зависимости, чтобы заставить GTk+ работать (очевидно, я пытался просто установить GTk+ и cairo, но это не сработало, или в итоге RGTk2 не удалось скомпилировать).
Затем я установил (используя R CMD INSTALL) GTk2, Cairo, cairoDevice и погремушку из источников. После стольких месяцев попыток решить проблему я не мог поверить, что все работает!
Еще раз спасибо всем тем, кто внес вклад в их усилия и их исследования, чтобы решить проблему.
Энцо
У меня тоже была эта проблема. Вот как я работал с этим, используя 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
затем установите
Я скачал RGtk2 и cairoDevice из CRAN и сделал установку источника:
R CMD INSTALL RGtk2
R CMD INSTALL cairoDevice
В дополнение к ответу jverzani, если вы хотите использовать Homebrew:
brew install gtk+
export PKG_CONFIG_PATH=/usr/X11/lib/pkgconfig:$PKG_CONFIG_PATH
а затем установите RGtk2 и cairoDevice из источника.
Я использовал решение Homebrew (предложенное masaha03) на Snow Leopard, и у меня все еще были проблемы с R. Оказалось, что в такой конфигурации gtk использует cairo, установленный homebrew, тогда как 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.
На MAC при работе с R I старайтесь следовать принципу стараться делать все естественным путем и избегать решений Homebrew и Macports. Хотя для других целей я люблю доморощенный.
Я просто повторю предложение @BondedDust использовать совет Саймона Урбанека.
Шаг 1: Загрузите библиотеку с http://r.research.att.com/
Шаг 2: Просто проверьте, где этот GTK+ фреймворк теперь установлен на вашем компьютере - на моем он был установлен по адресу:/Library/Frameworks/GTK+.framework/
Шаг 3: Найдите подкаталог, в котором находится недавно установленный файл pkg-config GTK+. В моем случае:Versions/2.24.X11/Resources/lib/pkgconfig
Шаг 4: Убедитесь, что это в вашей переменной PKG_CONFIG_PATH. В моем случае я просто установил переменную в R непосредственно перед установкой пакета RGtk2 из исходного кода следующим образом: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, чтобы получить старое значение и добавить его при необходимости.
Обновление: насколько я могу судить, эта проблема все еще сохраняется (версия R 3.1.0), но информация, предоставленная людьми в этой теме, все еще помогает решить эту проблему. В течение последних нескольких месяцев я много раз проходил установку на разных системах Mac OS X и собирал информацию для людей, плохо знакомых с R (в основном немного более подробная версия ответа Джона Верзани, нацеленная на Mac OS X). > 10,7). До сих пор это работало хорошо, поэтому, чтобы быть полезным для других, я хотел опубликовать ссылку:
jverzani очень полезен, вот некоторые дополнительные вопросы, которые я нашел, я отредактировал на его пост:
Установка gtk2: обязательно используйте macports gtk2. Не думайте о сборке gtk2 самостоятельно из исходного кода.
sudo port install gtk2 +x11
## (+x11, а не + кварц / + универсальный / +no_x11)Какой вариант gtk2 и его зависимостей установить:Не устанавливайте вариант + кварц, используйте вариант +x11, даже если (как и во всех Mac OS 10.8.x+) у вас установлен XQuartz, а не X11 для полезного поста Брэндона Олбери в macports-пользователи, объясняющие название варианта + кварц, являются неправильным.
2b. Если вы случайно выберете для gtk2 вариант, отличный от +x11, и / или любой из его вариантов (atk, cairo, pango и т. Д.), Вы получите ошибку компиляции на 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 ...
Затем, как отмечает jverzani, вам нужна исходная установка (ане двоичная установка MacOS):
... # затем установите: загрузите RGtk2 и cairoDevice из CRAN и выполните исходную установку:
R CMD INSTALL RGtk2
R CMD INSTALL cairoDevice