mieki256's diary



2017/04/12(水) [n年前の日記]

#1 [ruby] RubyInstaller2 を使って Ruby 2.4 を Windows上でインストールしてみたり

現在、 _RubyInstaller for Windows でインストールできるのは、Ruby 2.3 まで、らしい。

_RubyInstaller2でWindows環境にRuby 2.4 + Rails 5.0.2をインストールする - Qiita
_Windows でも Ruby 2.4.0 が使えるんです。そう、RubyInstaller2 ならね。 - Qiita

Ruby 2.4 は RubyInstaller2 とやらを使うとインストールできるのだとか。試しにインストールしてみたり。環境は Windows10 x64。

MSYS2のインストール。 :

Rubyのライブラリをビルドする際、RubyInstaller なら DevKit とやらをインストールすれば済んだけど。RubyInstaller2 の場合は MSYS2 とやらをインストールしないといけないらしくて。なので、まずは MSYS2 をインストール。

ちなみに自分の環境は、環境変数 HOME をあらかじめ指定してある。環境変数 HOME が指定されてない場合、C:\Users\アカウント名\ あたりがホームフォルダとして使われる、という話をどこかで見かけた、とメモ。

_MSYS2 homepage から、msys2-i686-20161025.exe と msys2-x86_64-20161025.exe をDL。
  • msys2-i686-20161025.exe が 32bit版。
  • msys2-x86_64-20161025.exe が 64bit版。
今回は32bit版、msys2-i686-20161025.exe をインストールしてみた。

一応念のため書いとくけど、実行する前に .exe を右クリックして Windows Defender でスキャンして、問題無いと言ってきたら、右クリック → プロパティ → ブロックを解除。コレをしてから実行しないと、えてして「他のPCで作られたexeなんて今時怖くて実行できねえよ」とWindowsから怒られる。

デフォルトではインストール場所が C:\msys32 になってるけど、HDD容量が厳しいので今回は D:\msys32\ にインストールすることにした。が、コレは罠。デフォルトのままにしておけるなら、そのほうがいい…。

インストールが終わると、最後に「MSYS2 32bit を実行中」というボタンがあるのでクリック。ちなみに「実行中」は「実行する」の誤訳という説有り。

ターミナル(おそらくmintty)が起動。pacman -Syu と打ってパッケージを更新。最初の1回目は処理が完了すると無反応になる、というか「一旦exitしてくれよ」的な英文メッセージが表示されるので、ウインドウを閉じる。

スタートメニュー → MSYS2 32bit → MSYS2 MSYS を起動。再度、pacman -Syu と打つ。更にパッケージが更新される。処理が終わったら、Ctrl + D でターミナルを終了。

ちなみに、スタートメニュー内のショートカット先は以下のようになっていた。
  • MSYS2 MSYS : MSYS2インストールフォルダ\msys2_shell.cmd -msys
  • MSYS2 MinGW 32-bit : MSYS2インストールフォルダ\msys2_shell.cmd -mingw32

以下、参考ページ。

_2. MSYS2 - とりあえず雑記帳
_MSYS2でWindows上にコマンドライン環境を作る - Qiita

RubyInstaller2のインストール。 :

_Releases - oneclick/rubyinstaller2 から、rubyinstaller-2.4.0-8-x86.exe と rubyinstaller-2.4.0-8-x64.exe をDL。今回は32bit版の rubyinstaller-2.4.0-8-x86.exe をインストールした。

実行すると、RubyInstaller と同様に、ウイザード形式でインストールができる。

インストールが終わると、MSYS2のインストールだか設定画面だかが出てくるのだけど…。ここで、MSYS2のインストールフォルダをデフォルトから変えていたことが裏目に出た。

「MSYS2はインストール済みだから3番だな」と選んだところ、MSYS2がインストールされていないものと判断され、MSYS2のインストーラをDLしたあげく実行までしてきた。どうやらMSYS2のインストール場所を決め打ちで処理してるらしい。ひどいや。

仕方ないのでインストール済みの MSYS2 の場所から、C:\msys32 にシンボリックリンクを貼った。その状態で3番を選んだら先に進んでくれた。

が、しかし、やたらめったらパッケージがインストールされていく。しかも、Python2 や Perl までインストールしてる…。嘘だろ…マジかよ…。処理終了後、MSYS2 (mintty) を起動して、perl -v や python2 --version と打ったら、やっぱりインストールされてた。

つまり、「Windows上で Ruby 2.4 を使うためにはPerlやPythonも必要になりますぜ!」という状況らしい。だったら最初からPython使ったほうがいいのでは…? Rubyって一体何のために存在しているの? Rubyって何なの? *1 *2

それはともかく、何かビルドが必要になるライブラリをインストールしてみる。とりあえず nokogiri をインストール。 _oneclick/rubyinstaller2 の README.md を参考に、以下を入力。
ridk exec pacman -S mingw-w64-i686-libxslt
gem install nokogiri --platform ruby -- --use-system-libraries
自分は32bit版をインストールしたから、x86_64 を i686 に置き換えて実行。

ビルドされたっぽい。irb を実行して、require 'nokogiri' とやってみたら true と表示された。たしかに、RubyInstaller と同じ感覚で使えそうな雰囲気。

ちなみに、MSYS2 のフォルダ容量は 1.74GB になっていた。RubyInstaller 時代の DevKit2 は 370MB程度で済んでたのに…。なかなか厳しい。

Ruby 2.4 は 2.3 より5倍のHDD容量を消費するのだから…。2.3 → 2.4 で、例えば処理速度が5倍ぐらい速くなったりしないと割に合いませんなあ。なんちゃって。

余談。 :

自分の環境では、シンボリックリンクについては以下のユーティリティをインストールして作成してる…と思ったけど、違ったかな…。たしかそのはず…。

_Link Shell Extension - k本的に無料ソフト・フリーソフト

*1: もちろん、Ruby本体だけを使うなら、ビルドに使うMSYS2までインストールせずに済むわけだけど、それではライブラリがビルドできない(時がある)ので、道具としてRubyを使うのは厳しい状態になるわけで。おそらく、ライブラリのビルド時に、Perl や Python2 が使われているのかな…? でも、ソレ、Ruby で処理できないの…? 何のために Ruby をインストールしてあるの…?
*2: もっとも、各ライブラリが mingw版のバイナリも含んだ状態で配布されていれば、各ユーザがビルド用にMSYS2をインストールする必要は無くなりそう…ではあるのだけど、今まで mingw版の Ruby2.4 がそもそも無かった・導入が難しかったわけで…。今後このあたり、改善されていくのかなあ…?

以上です。

過去ログ表示

Prev - 2017/04 - 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

カテゴリで表示

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


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

Powered by hns-2.19.6, HyperNikkiSystem Project