2023/10/19(木) [n年前の日記]
#2 [ruby] Ruby 1.9.3 x86 でruby-gtk2を動かしてみたい
Windows10 x64 22H2上の Ruby 1.9.3 x86 で、gtk2(Ruby/GTK2, ruby-gtk2) を動かせるのか気になったので、動作するバージョンがどれなのか試して確認してみた。
手元で試した限りでは、Windows10 x64 22H2 + Ruby 1.9.3 x86 で利用できる gtk2関連パッケージの最終バージョンは 2.0.0 以下に見えた。これより上のバージョンでは動かない。また、インストールする順番も重要。cairo, glib2, pango, atk, gdk_pixbuf2, gtk2 の順でインストールすること。
Ruby 1.9.3 x86上では、cairo 1.12.4 までは動くが、cairo 1.12.5以上は動かないので、そのことで他のパッケージの依存関係的に制限が出てきて、gtk2 2.0.0 より上のバージョンは選べなくなる。
_mieki256's diary - cairo + Ruby Windows版が使えない
更に、gem を使ってネットワーク経由でインストールすると、最後の gtk2 のインストール時に、--platform=x86-mingw32 を指定していても、何故かソース(?)をダウンロードしてビルドが始まってしまう。
ビルドを回避するには、必要になる gemファイルを全部Webブラウザ等で別途ダウンロードして、ローカルからインストールしたほうが良さそう。
ちなみに、Rubygemsサイトの各ページの、「ダウンロード」をクリックすれば、.gem がダウンロードできる。
_glib2 | RubyGems.org | コミュニティのgemホスティングサービス
_pango | RubyGems.org | コミュニティのgemホスティングサービス
_atk | RubyGems.org | コミュニティのgemホスティングサービス
_gdk_pixbuf2 | RubyGems.org | コミュニティのgemホスティングサービス
_gtk2 | RubyGems.org | コミュニティのgemホスティングサービス
余談。各パッケージのバージョンが 1.2.6 でも動くことを確認した。2.x.x 以降は対応する Ruby のバージョンが引き上げられたりしていたので、gtk2関連パッケージの内部でも何か大きな変化があったのかもしれない。だとすると、1.2.x系を利用したほうがまだ安定して動く可能性もある…?
ただ、glib2 1.2.2 は gem内の構成がバグっていて、修正した 1.2.3 を出したという話もあったので、1.2.3 以降を利用したほうがいいのかもしれない。
_Thread: [ruby-gnome2-devel-ja] Windowsへのinstallでエラー | Ruby-GNOME 2
手元で試した限りでは、Windows10 x64 22H2 + Ruby 1.9.3 x86 で利用できる gtk2関連パッケージの最終バージョンは 2.0.0 以下に見えた。これより上のバージョンでは動かない。また、インストールする順番も重要。cairo, glib2, pango, atk, gdk_pixbuf2, gtk2 の順でインストールすること。
- cairo-1.12.4-x86-mingw32.gem
- glib2-2.0.0-x86-mingw32.gem
- pango-2.0.0-x86-mingw32.gem
- atk-2.0.0-x86-mingw32.gem
- gdk_pixbuf2-2.0.0-x86-mingw32.gem
- gtk2-2.0.0-x86-mingw32.gem
> gem list | grep -E "cairo|atk|glib2|pango|gdk_pixbuf2|gtk2" atk (2.0.0 x86-mingw32) cairo (1.12.4 x86-mingw32) gdk_pixbuf2 (2.0.0 x86-mingw32) glib2 (2.0.0 x86-mingw32) gtk2 (2.0.0 x86-mingw32) pango (2.0.0 x86-mingw32)
Ruby 1.9.3 x86上では、cairo 1.12.4 までは動くが、cairo 1.12.5以上は動かないので、そのことで他のパッケージの依存関係的に制限が出てきて、gtk2 2.0.0 より上のバージョンは選べなくなる。
_mieki256's diary - cairo + Ruby Windows版が使えない
更に、gem を使ってネットワーク経由でインストールすると、最後の gtk2 のインストール時に、--platform=x86-mingw32 を指定していても、何故かソース(?)をダウンロードしてビルドが始まってしまう。
gem install gtk2 -v=2.0.0 --platform=x86-mingw32
ビルドを回避するには、必要になる gemファイルを全部Webブラウザ等で別途ダウンロードして、ローカルからインストールしたほうが良さそう。
gem install -l cairo-1.12.4-x86-mingw32.gem gem install -l glib2-2.0.0-x86-mingw32.gem gem install -l pango-2.0.0-x86-mingw32.gem gem install -l atk-2.0.0-x86-mingw32.gem gem install -l gdk_pixbuf2-2.0.0-x86-mingw32.gem gem install -l gtk2-2.0.0-x86-mingw32.gem
ちなみに、Rubygemsサイトの各ページの、「ダウンロード」をクリックすれば、.gem がダウンロードできる。
_glib2 | RubyGems.org | コミュニティのgemホスティングサービス
_pango | RubyGems.org | コミュニティのgemホスティングサービス
_atk | RubyGems.org | コミュニティのgemホスティングサービス
_gdk_pixbuf2 | RubyGems.org | コミュニティのgemホスティングサービス
_gtk2 | RubyGems.org | コミュニティのgemホスティングサービス
余談。各パッケージのバージョンが 1.2.6 でも動くことを確認した。2.x.x 以降は対応する Ruby のバージョンが引き上げられたりしていたので、gtk2関連パッケージの内部でも何か大きな変化があったのかもしれない。だとすると、1.2.x系を利用したほうがまだ安定して動く可能性もある…?
ただ、glib2 1.2.2 は gem内の構成がバグっていて、修正した 1.2.3 を出したという話もあったので、1.2.3 以降を利用したほうがいいのかもしれない。
_Thread: [ruby-gnome2-devel-ja] Windowsへのinstallでエラー | Ruby-GNOME 2
◎ exe化について :
Ruby 1.9.3 x86上では、ocra 1.3.10 なら使える。ocra 1.3.11 はエラーを出して動かない。
ruby-gtk2 を使ったRubyスクリプトも、ocra 1.3.10 を使えばexe化できるが、スクリプト内に日本語文字列(UTF-8文字列)が入っていると、そこでエラーが出て処理が止まってしまった。ただ、ファイルの最初のあたりに以下の指定があればexe化できる時もある模様。
とりあえず、Ruby 1.9.3 x86 + ruby-gtk2 2.0.0 を使えば exe化できる可能性もある、と分かった。とはいえ、Ruby 1.9 まで戻って使うというのも…。なんだかな。
gem install ocra -v=1.3.10
ocra 01_hellogtk2.rb
ruby-gtk2 を使ったRubyスクリプトも、ocra 1.3.10 を使えばexe化できるが、スクリプト内に日本語文字列(UTF-8文字列)が入っていると、そこでエラーが出て処理が止まってしまった。ただ、ファイルの最初のあたりに以下の指定があればexe化できる時もある模様。
# -*- mode: ruby; coding: utf-8 -*-
とりあえず、Ruby 1.9.3 x86 + ruby-gtk2 2.0.0 を使えば exe化できる可能性もある、と分かった。とはいえ、Ruby 1.9 まで戻って使うというのも…。なんだかな。
[ ツッコむ ]
以上です。