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。
_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。
一応念のため書いとくけど、実行する前に .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 でターミナルを終了。
ちなみに、スタートメニュー内のショートカット先は以下のようになっていた。
以下、参考ページ。
_2. MSYS2 - とりあえず雑記帳
_MSYS2でWindows上にコマンドライン環境を作る - Qiita
ちなみに自分の環境は、環境変数 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版。
一応念のため書いとくけど、実行する前に .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 を参考に、以下を入力。
ビルドされたっぽい。irb を実行して、require 'nokogiri' とやってみたら true と表示された。たしかに、RubyInstaller と同じ感覚で使えそうな雰囲気。
ちなみに、MSYS2 のフォルダ容量は 1.74GB になっていた。RubyInstaller 時代の DevKit2 は 370MB程度で済んでたのに…。なかなか厳しい。
Ruby 2.4 は 2.3 より5倍のHDD容量を消費するのだから…。2.3 → 2.4 で、例えば処理速度が5倍ぐらい速くなったりしないと割に合いませんなあ。なんちゃって。
実行すると、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本的に無料ソフト・フリーソフト
_Link Shell Extension - k本的に無料ソフト・フリーソフト
*1: もちろん、Ruby本体だけを使うなら、ビルドに使うMSYS2までインストールせずに済むわけだけど、それではライブラリがビルドできない(時がある)ので、道具としてRubyを使うのは厳しい状態になるわけで。おそらく、ライブラリのビルド時に、Perl や Python2 が使われているのかな…? でも、ソレ、Ruby で処理できないの…? 何のために Ruby をインストールしてあるの…?
*2: もっとも、各ライブラリが mingw版のバイナリも含んだ状態で配布されていれば、各ユーザがビルド用にMSYS2をインストールする必要は無くなりそう…ではあるのだけど、今まで mingw版の Ruby2.4 がそもそも無かった・導入が難しかったわけで…。今後このあたり、改善されていくのかなあ…?
*2: もっとも、各ライブラリが mingw版のバイナリも含んだ状態で配布されていれば、各ユーザがビルド用にMSYS2をインストールする必要は無くなりそう…ではあるのだけど、今まで mingw版の Ruby2.4 がそもそも無かった・導入が難しかったわけで…。今後このあたり、改善されていくのかなあ…?
[ ツッコむ ]
以上です。