mieki256's diary



2022/08/01(月) [n年前の日記]

#1 [ruby] ruby-gtk2をWindows10上で動かしたい

Windows10 x64 21H2 + Ruby で、ruby-gtk2 を動かしたい。昨日動作確認したところ、どのバージョンの Ruby でも動いてくれなかったのだけど、しつこく試していたら動く組み合わせが少しだけ見つかった。

Ruby は、RubyInstaller 版。

_RubyInstaller for Windows

前提知識として、各gem に x86-mingw32 や x64-mingw32 とついているバージョンは、バイナリ(*.soファイル)も含んでいるのでインストール時にビルドしなくて済む。ついてないバージョンはソースからビルドすることになるので、DevKit のインストールも必要になる。

Ruby 2.2.6 x86 の場合。 :

Windows10 x64 21H2 + Ruby 2.2.6 p396 x86-mingw32 では、以下の組み合わせで動作した。

  • Ruby 2.2.6 x86-mingw32 + cairo 1.15.9 x86-mingw32 + gtk2 3.1.1 x86-mingw32

> ruby -v
ruby 2.2.6p396 (2016-11-15 revision 56800) [i386-mingw32]

> gem list | grep -E "gobject|gio2|gdk_pixbuf2|cairo|pango|atk|gtk2|glib2"
atk (3.1.1 x86-mingw32)
cairo (1.15.9 x86-mingw32)
gdk_pixbuf2 (3.1.1 x86-mingw32)
gio2 (3.1.1 x86-mingw32)
glib2 (3.1.1 x86-mingw32)
gobject-introspection (3.1.1 x86-mingw32)
gtk2 (3.1.1 x86-mingw32)
pango (3.1.1 x86-mingw32)

ただし、Ruby 2.2.6 x86 をインストールした直後は、gem が使えなかった。

gem を使うためには、rubygems-update-2.7.11.gem をダウンロードして、ローカルからインストールして、gem (rubygems)をアップデートする必要がある。ちなみに、rubygems-update 2.7.11 の次バージョンは 3.0.0 になるけれど、そこからは Ruby 2.3.0 以上を要求されるので Ruby 2.2.6 では使えない。

gem のアップデートは、以下のページを参考にして作業した。

_Windowsでgem installでSSLのエラーが出た話 - Qiita

wget https://rubygems.org/downloads/rubygems-update-2.7.11.gem
gem install --local ./rubygems-update-2.7.11.gem
update_rubygems --no-ri --no-rdoc

gem のアップデートができたら、cairo、glib2、gtk2 を、バージョンを指定してインストール。

gem install cairo -v 1.15.9
gem install glib2 -v 3.1.1
gem install gtk2 -v 3.1.1

  • cairo 1.15.9 (2017/06/03) ならインストールできたし、require "cairo" も実行できた。
  • しかし、gtk2 3.2.1 をインストールしたら、pango.so がロードできなくてエラーになった。
  • cairo 1.15.9 と同時期の pango は 3.1.6 のはずだけど、glib2 3.1.6 や gtk2 3.1.6 をインストールしても pango.so がロードできなくてエラーになった。
  • gtk2 3.1.1 をインストールしたところ、require "gtk2" が通った。

そんなわけで、Ruby 2.2.6 x86-mingw32 + cairo 1.15.9 x86-mingw32 + gtk2 3.1.1 x86-mingw32 の組み合わせなら、ruby-gtk2 が一応動いてくれた。

Ruby 2.3.3 x86 の場合。 :

手元のメモによると、2019/04/19 の時点では、以下の組み合わせでも動いていたらしいのだけど…。

  • Ruby 2.3.3 x86-mingw32 + cairo 1.15.14 x86-mingw32 + gtk2 3.2.9 x86-mingw32
  • Ruby 2.3.3 x86-mingw32 + cairo 1.15.11 x86-mingw32 + gtk2 3.2.1 x86-mingw32

2022/08/01現在、上記の組み合わせでは何故か動かなくなっていた。

しかし、バージョンを変えて試していったところ、以下の組み合わせなら動作した。

  • Ruby 2.3.3 x86-mingw32 + cairo 1.15.9 x86-mingw32 + gtk2 3.1.1 x86-mingw32

> ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [i386-mingw32]

> gem list | grep -E "gobject|gio2|gdk_pixbuf2|cairo|pango|atk|gtk2|glib2"
atk (3.1.1 x86-mingw32)
cairo (1.15.9 x86-mingw32)
cairo-gobject (3.1.1 x86-mingw32)
gdk_pixbuf2 (3.1.1 x86-mingw32)
gio2 (3.1.1 x86-mingw32)
glib2 (3.1.1 x86-mingw32)
gobject-introspection (3.1.1 x86-mingw32)
gtk2 (3.1.1 x86-mingw32)
pango (3.1.1 x86-mingw32)

ただ、インストール時に注意点がある。glib2 3.1.1 その他をインストールしようとした際、何故か cairo 1.15.14 も一緒にインストールされてしまう。cairo 1.15.14 は Ruby 2.3.3 x86 上で動かないので、そのままだと require "gtk2" をした時に「cairo.so が読み込めない」と言ってきて動かない。gem uninstall cairo で 1.15.14 をアンインストールして、1.15.9 だけを残した状態にすれば動く。

ちなみに、Ruby 2.3.3 x86-mingw32 も、インストールした直後は gem が動かない。rubygems-update 最新版を入手してアップデートする必要がある。

_Download RubyGems | RubyGems.org

rubygems-3.3.19.zip を入手して解凍。中に入って、ruby setup.rb を実行すればアップデートされる。

Ruby 1.8.7 の場合。 :

昨日メモしたのでそちらを参考に。

_2022/07/31 何が何でもruby-gtk2を動かす。

余談。 :

それにしても、昔は Ruby の各バージョンで動いてたのに、どうして動かなくなってしまったのか…。Windows10 x64 21H2 側に原因があるのだろうか。それとも自分の環境に起因している不具合なのだろうか。

どうも Windows上でGTK関係は鬼門だなと…。

以上です。

過去ログ表示

Prev - 2022/08 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project