16

Mountain Lion Mac に R3.0 をインストールしました。試行錯誤の末、 R3.0 用にhttp://r.research.att.com/で提案された GTK のバージョン: GTK+ 2.24.17 フレームワーク。

パッケージを R3.0 にロードし、デモの 1 つを実行します。グラフが生成されていることが(一瞬)わかりますが、すぐに 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

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 でまだクラッシュの問題がありました。異なるバージョン。cairo およびその他の依存ライブラリは「樽のみ」であるため、それらのシンボリック リンクを強制する必要がありました。

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

私にはこれらの 2 つで十分でしたが、他にもリンクする必要があるかもしれません。その理由は、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 に答える
2

この問題の解決に貢献してくれたすべての人に感謝します。最終的に、何度も試行錯誤した後(そして深夜に!)、なんとか修正することができました。提案されている基本的な方法は次のとおりです。

  • 自作で GTk+ と cairo をインストール

  • macports で GTk2 と cairo をインストール

私は macports でこれを機能させることができませんでしたが、多くの無駄な試みの後、最終的に自作で成功しました。少し乱雑になっていた PATH をクリーンアップしました。次に、基本的に X11、GTk+、cairo、およびそれらのすべての依存関係をアンインストールしました。

最初に XQuartz-2.7.4 をインストールしました。

必要なすべてのコンポーネントをインストールするために、ここにある手順に従い、 homebrew と関連する手順を使用して yarp をインストールしました。ほとんどの人はこれを奇妙に感じるかもしれませんが (私はそうしました)、yarp をインストールすると、GTk+ を機能させるために必要なすべての依存関係が順番にインストールされました (明らかに、GTk+ と cairo をインストールしようとしましたが、うまくいかなかったか、最終的に RGTk2 のコンパイルに失敗しました)。

次に、ソースから (R CMD INSTALL を使用して) GTk2、Cairo、cairoDevice、rattle をインストールしました。何ヶ月も問題を解決しようとした後、すべてがうまくいったとは信じられませんでした!

問題を解決するための努力と研究に貢献してくれたすべての人に改めて感謝します。

エンツォ

于 2013-08-01T15:35:03.893 に答える
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 がインストールされていない場合でも、+x11 バリアントを使用してください。 +quartz バリアント名を説明するユーザーは誤称です

    2b. 誤って gtk2 の +x11 バリアントおよび/またはそのバリアント (atk、cairo、pango など) 以外のものを選択してしまうと、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. 次に、jverzani が指摘しているように、これらのソース インストール (MacOS バイナリ インストールではない) が必要です。

    ...#次にインストール: CRAN から RGtk2 と cairoDevice をダウンロードし、ソース インストールを実行します。

    R CMD INSTALL RGtk2

    R CMD INSTALL cairoDevice

于 2013-07-11T12:20:57.903 に答える