Visual Studio 2008でruby(1.8.7-p160)、rubygems(1.3.2)を素からコンパイル&インストールしてみた。

Visual Studio6.0持ってないからいろいろコンパイルできないとエラー
→そんじゃ持ってるのでコンパイルしていれればいいんじゃね?
というわけでやってみた。
今回使ったのは Visual Studio 2008 Pro(Academic)だけど多分Expressでもいけるとおもう。

下準備

スタートメニュー
 →すべてのプログラム
  →Microsoft Visual Studio 2008
   →Visual Studio Tools
    →Visual Studio 2008 コマンド プロンプト
としてVisual Studio 2008 コマンド プロンプト(以降cmdと省略)を起動。
まずは次のように*1

>cd c:\
>mkdir ruby
>cd ruby
>mkdir bin lib include src
>PATH c:\ruby\bin;%PATH%
>cd src

zlib-1.2.3.tar.gz
ruby-1.8.7-p160.tgz
rubygems-1.3.2.tgz
をc:\ruby\srcにDLして保存。(ダウンロード方法は自由に)
tarとgzip入れてパスを通してあるならcmdに次のように。

>tar zxvf zlib-1.2.3.tar.gz
>tar zxvf ruby-1.8.7-p160.tgz
>tar zxvf rubygems-1.3.2.tgz

cmdはそのまま閉じないでおく。

zlib

エクスプローラでC:\ruby\src\zlib-1.2.3を開いて
zlib.hとzconf.hをC:\ruby\includeへcopy。
そのあと
projects\visualc6と進んで
zlib.dswを実行。
変換するというダイアログが出るので「すべてはい」を選択。
あとはDLL Releaseを選択し、ソリューションエクスプローラからzlibを右クリックしてビルド。
できたものはC:\ruby\src\zlib-1.2.3\projects\visualc6\Win32_DLL_Releaseにある。
中のもののうち
zlib1.dllをc:\ruby\binにcopy
zlib1.libをc:\ruby\libにcopy
これでおk。

ruby

cmdにて次のようにする。

>cd ruby-1.8.7-p160
>win32\configure.bat
>nmake
>nmake test
>nmake DESTDIR=C:\ruby install
>cd ext/zlib
>ruby extconf.rb --with-zlib-include=C:\ruby\include
>nmake
>nmake install
>cd ../..

これでおk。
ruby extconf.rbのところのオプションはc:\では通らないので必ずC:\で。*2

rubygems

>cd rubygems-1.3.2
>ruby setup.rb
>nmake
>nmake test
>nmake install

ここで試しにrails入れようとしたらこけた。
調べるとC:\ruby\lib\ruby\site_ruby\1.8\rubygems\package\tar_input.rb
のzipped_stream(entry)を次のように変更する必要があるらしい。

  def zipped_stream(entry)
    if defined? Rubinius then
      zis = Zlib::GzipReader.new entry
      dis = zis.read
      is = StringIO.new(dis)
    else
      # This is Jamis Buck's Zlib workaround for some unknown issue
      entry.read(10) # skip the gzip header
      zis = Zlib::Inflate.new(-Zlib::MAX_WBITS)
             ######### EDIT START ###
       #is = StringIO.new(zis.inflate(entry.read))
       __buf = ""
       while __temp = entry.read( 128 * 1024 ) do
         __buf << zis.inflate( __temp )
       end
       is = StringIO.new( __buf )
       ######### EDIT END #####
    end
  ensure
    zis.finish if zis
  end

これで通った。

+α

rubyまでのパス(c:\ruby\bin)を環境変数PATHへ登録しておきましょう。
あとコマンドでruby関係のコマンド(rubygemsとか)を使うときは「Visual Studio 2008 コマンド プロンプト」からやると
ネイティブでコンパイルできたりしていいかも?

余談

twbot.rbが向いていないことが発覚したのでTwitter4rを入れようとしたらこけた - bot構築雑記 - はてなグループ::ついったー部
今までどうやっても入らなかったtwitter4rがこれで入れたらすんなりはいった。なぜだ…
まぁうん、とりあえずこれでbot制作できるようになるからいっか(ぁ

*1:めんどくさいならバッチファイル作るといいと思うよ!

*2:なぜかはわからん。

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy