web-dev-qa-db-ja.com

GTKとRGtk2をインストールした後、Rが失敗する

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 
16
Enzo

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

  • 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をインストールし、ソースからガラガラと鳴らしました。何ヶ月も問題を解決しようとした後、私はすべてがうまくいったとは信じられませんでした!

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

エンツォ

2
Enzo

私もこの問題を抱えていました。これが私がmacportsgtk2を使ってそれを回避した方法です http://r.research.att.com/ バージョンではありません。これは、Rバージョン3.0.1(2013-05-16)-「GoodSport」で、これもソースからコンパイルされています。

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
8
jverzani

Jverzaniの答えに加えて、Homebrewを使用したい場合:

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

次に、ソースからRGtk2とcairoDeviceをインストールします。

8
masaha03

Snow LeopardでHomebrewソリューション(masaha03が提案)を使用しましたが、Rでクラッシュの問題が発生しました。このような構成では、gtkはhomebrewによってインストールされたcairoを使用しているのに対し、RGtk2とcairoDeviceはネイティブのcairoインストールを使用していることがわかりました。別のバージョン。 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をインストールします。

4
hanaS

Rを使用するMACでは、すべてをネイティブに実行し、HomebrewおよびMacportsソリューションを回避するという原則に従うようにしています。他の用途のために私は自作が大好きですが。

@BondedDustによる、SimonUrbanekのアドバイスを使用するという提案を繰り返します。

ステップ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を使用して古い値を取得し、必要に応じて追加するのは簡単です。

3
mcheema

更新:私が知る限り、この問題はまだ解決していません(Rバージョン3.1.0)が、このスレッドの人々から提供された情報は、それを回避するためのトリックを実行します。私は過去数か月の間にさまざまなMacOS Xシステムで何度もインストールを実行し、R(基本的にはMac OSXを対象としたJohnVerzaniの回答のも​​う少し詳細なバージョン)の人々のために情報をまとめることになりました。 > 10.7)。これまでのところうまく機能しているので、他の人に役立つ可能性があるので、リンクを投稿したいと思いました。

R> 3.0でのGTKトラブルの回避

1
sebkopf

jverzani's 答えは非常に便利です、ここに私が見つけたいくつかのさらなる問題があります、私は彼の投稿に編集しました:

  1. Gtk2のインストール:間違いなくmacportsgtk2を使用してください。考えないでください ソースからgtk2を自分で構築する

    Sudo port install gtk2 +x11 ##(+ quartz/+ Universal/+ no_x11ではなく+ x11)

  2. Gtk2のどのバリアントとその依存関係をインストールするか:+ quartzバリアントをインストールしないしない場合でも、+ x11バリアントを使用するすべてのMacOS 10.8.x +)X11ではなくXQuartzがインストールされていますBrandon Allberyのmacports-usersへの役立つ投稿+クォーツバリアント名は誤った名称です

    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. 次に、jverzaniが指摘しているように、これらのソースインストール(notMacOSバイナリインストール)が必要です。

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

    R CMD INSTALL RGtk2

    R CMD INSTALL cairoDevice

0
smci