2009年12月30日水曜日

Windows 7 64bitでrubyやmingwやPowershell ISEなどもろもろ

重要(Update)
以下に記載されたものは、環境構築がうまく行かず、最終的に断念しました。現状gemをうまく動かせていません。rubyの64bitバイナリが独自ビルドされたものという事で、少しずつ環境を整備しながらの構築にはもっと時間とスキルが必要でした。最終的にはAptanaStudio+JRubyの方向に切り替えました。
以下は、断念するまでの記録という事になります。有用な情報でない事をあらかじめご了承願います。

Win7にアップデートしたものの、プログラミングらしいことは何一つ行っていないことに気づき、せっかくの休みを使って勉強がてら。
  • rubyはruby on railsでちょっとだけ触った事がある程度
  • mingwは使ったことがない
  • PowerShell ISEなんて、存在自体しりませんでした
こんな状態で、Herokuにアプリケーションを作ってみようとするなんて、我ながら詰め込み過ぎ。ぶっ込みこそ我が人生。さらに、なぜか「64bitNativeにこだわる」、と初めてしまったので、着手そうそうから、すでに終わりが見えません。
とりあえず、実施した手順を示します。
手順(予測)はこんなところです
  1. 1.mingw環境を構築
  2. 2.mingw環境にruby on rails開発環境を構築
  3. 3.mingwにheroku環境を構築
  4. 4.herokuにSinatraを入れて静的ページでもよいから何か作ってみる
前提条件としては、
・nmakeが実行可能であること。VCのコンパイラが使えること。
VisualStudioの開発環境が入っていれば、これらのモジュールへのパスを通してやればmingw上で動くrubyもこれらを使ってコンパイルするようになります。rubyのgemなどは、コンパイルとリンクにより環境に使用するモジュールパッケージ(gem)を入れるので、コンパイルの環境が必要になります。なお、私の環境にはVisualStudio 2010betaしか入っていないので、このコンパイル環境を拝借する事になります。
  1. mingwをインストール
    Browse MinGW-w64 - for 32 and 64 bit Windows Files on SourceForge.net
    から、適当と思われるzipファイルをダウンロード。bz.tarなどのファイルがあったが、解凍ツールを導入する面倒さを考えれば、win標準のzipで使えるものにしたかった。
    screenちょっとよくわからないが、上の画像で選択されているzipを解凍すれば、\x86_64-w64-mingw32\binにgcc.exeとか、聞き覚えのあるプログラムがあるので、各プログラム単体では動きそうです。
    まずはこのあたりから、ruby環境を構築していきます。なお、このBlogエントリ内では「B:\mingw」というフォルダをルートパスとします。

  1. ruby 1.9.1をダウンロードします。x64ネイティブにすると誓いをたてた関係から、ruby本体も64bitバイナリを下記からダウンロードします。
    Release - Ruby-mswin32 (ja)
    リンクのコメントには32bitとありますが、64bit版も用意されています。
    ダウンロードしたZIPは、適宜わかりやすいフォルダに展開しておきます。このblogエントリ内では「B:\ruby64」というフォルダをルートパスとします。

  2. 普通ならmsys+mingwが普通の取り合わせでしょうが、Powershellというのが有ったなと思い出しました。ですので、今回はWindows 7に標準搭載されたPowershell ISEを使ってみます。
    こんな画面です。screen_1
    スタートメニュー(Windows7はスタートという文字は出ていないが)から起動するPowerShell ISEの作業フォルダは「C:\Users\<ログインユーザーID>(実際の設定は%HOMEDRIVE%%HOMEPATH%)」で、起動のたびにいちいちパスを入れ直すことになり面倒なので、PowerShell_ISE.exeのショートカットを作り、作業フォルダをB:\mingw\x86_64-w64-mingw32\binなどとしてやると便利でしょう。(方法の詳細は割愛します)

    上の画像は、タイトルが「コマンドプロンプト」などとなっていたりしますが、作成したショートカットの名称が表示されているだけなので、あまり気にしないでください。ここまで至るまでの紆余曲折試行錯誤が現れているだけです。

    このISEには、作成したシェルスクリプトをデバッグする機能もあるようなので、今後の展開に期待できます。ただし、今回はそこまではしません。
  1. 環境変数PATHにrubyのバイナリがあるパスを追加します。たとえばB:\ruby64\binなどと追加します。
  2. さらに環境変数PATHに、nmakeなどのVCコンパイル環境へのパスを追加します。私の場合、VisualStudio 2010betaの環境だったので、"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64"というパスを追加しました。

  3. zlib.dllが必要です。ruby.exeが64bitネイティブである以上、dllも64bitにしてやる必要があります。このライブラリが無かったり、32bit版ライブラリしか無かった場合、多くのgem操作でエラーになります。64b itと32bitのそれぞれ別のアプリケーション実行空間を持っているといえるので、exeとexeから呼ばれるdllは必ずビット数をそろえてやる必要があります。
    ZLIBの64bitネイティブライブラリは下記からダウンロードできます。screen
    ZLIB DLL Home Page  
    解凍後のzlib123dllx64\dll_x64フォルダにあるzlibwapi.dllを、rubyのbinフォルダ、たとえば、「B:\ruby64」以下のbinフォルダなどに追加してやります。先ほど環境変数PATHに同様のパスを追加したので、ここに配置するのが良いでしょう。 その際ライブラリのファイル名をzlibwapi.dllからzlib.dllに変えてやります。
環境変数PATHを変更したので、すぐ反映させる為にも、一回再起動します。しました。 再起動は必須でないかもしれませんが、PATHの反映が遅れるケースもどこかで見た気もしたので、私の場合は都度再起動するようにしています。

眠さのあまり意識がもうろうとしてきたので、今日はここまで。明日に続きます。

0 件のコメント:

コメントを投稿