Windows7にMinGWがインストールできない?

※ 追記あり

gem で nokogiri をインストールしようとしたところ、次のようなエラーが出てインストールできなかった。

^o^ > gem install nokogiri
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing nokogiri:
        ERROR: Failed to build gem native extension.

    C:/Ruby200-x64/bin/ruby.exe extconf.rb
checking for libxml/parser.h... no
-----
libxml2 is missing.  please visit http://nokogiri.org/tutorials/installing_nokog
iri.html for help with installing dependencies.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
        --with-opt-dir
        --without-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --without-make-prog
        --srcdir=.
        --curdir
        --ruby=C:/Ruby200-x64/bin/ruby
        --with-zlib-dir
        --without-zlib-dir
        --with-zlib-include
        --without-zlib-include=${zlib-dir}/include
        --with-zlib-lib
        --without-zlib-lib=${zlib-dir}/lib
        --with-iconv-dir
        --without-iconv-dir
        --with-iconv-include
        --without-iconv-include=${iconv-dir}/include
        --with-iconv-lib
        --without-iconv-lib=${iconv-dir}/lib
        --with-xml2-dir
        --without-xml2-dir
        --with-xml2-include
        --without-xml2-include=${xml2-dir}/include
        --with-xml2-lib
        --without-xml2-lib=${xml2-dir}/lib
        --with-xslt-dir
        --without-xslt-dir
        --with-xslt-include
        --without-xslt-include=${xslt-dir}/include
        --with-xslt-lib
        --without-xslt-lib=${xslt-dir}/lib
        --with-libxslt-config
        --without-libxslt-config
        --with-pkg-config
        --without-pkg-config
        --with-libxml-2.0-config
        --without-libxml-2.0-config
        --with-pkg-config
        --without-pkg-config
        --with-libiconv-config
        --without-libiconv-config
        --with-pkg-config
        --without-pkg-config


Gem files will remain installed in C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/nokog
iri-1.6.1 for inspection.
Results logged to C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/nokogiri-1.6.1/ext/nok
ogiri/gem_make.out

調べてみると、どうやら nokogiri はもはや Pure Ruby ではなく、おまけにほかのCライブラリに依存するらしい。
Windows の Ruby 2.0.0 に nokogiri をインストールする方法はこのページに詳しい。

 cf. WindowsのRuby 2.0でNokogiriを使う ― KaoriYa

というわけで、ここからが今日の本題。C のライブラリをビルドするためにまずは MinGW のインストールに挑戦する。
まずは、ダウンロードページから mingw-get-setup.exe をダウンロード。これを右クリックして管理者として実行する。
順調に進むかと思いきや、「”C:\MinGW\libexec\mingw-get\shlink.js” のスクリプト エンジン “JScript” が見つかりません。」というエラーがでてしまう。先週、有効にしたはずなのにおかしい。
とりあえず「OK」をクリックすると MinGW Installation Manager というパッケージ管理ツールのウィンドウが開く。ここでインストールしたいパッケージを選んで(よくわからんので Basic Setup にあるすべてを選んだ)、メニューから Installation → Apply Changes をクリックするとインストールが始まって、しばらくすると無事終わった(ように見える)。
ところが、スタートメニューにもデスクトップにもショートカットが作成されていない。これってやっぱり正常にインストールされてないってことか?

試しに簡単なプログラムを書いてみた。

実行結果:

^o^ > gcc -o hello.exe hello.c

^o^ > hello.exe
Hello, world.

なんと、コンパイルができてしまった。どういうこと?

[追記]
gcc が使えたのは、MinGW が正常にインストールされているわけじゃなかった。Haskell Platform に含まれてる gcc が動いていた。

^o^ > which gcc
C:/Program Files (x86)/Haskell Platform/2012.4.0.0/mingw/bin/gcc.EXE

MinGW のほうにパスを通せばいいのかなあ。shlink.js が何をやってるのか調べてみようか。

スクリプト エンジン “JScript” が見つかりません。

Windows7 Home Premium での話。
以前 JScript で書いたスクリプトを実行しようとしたら、次のようにエラーになった。

^o^ > cscript arg1.js foo bar baz
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

CScript エラー: スクリプト "C:\Users\takatoh\Documents\w\sandbox\wsh\arg1.js" のス
クリプト エンジン "JScript" が見つかりません。

ググってみたらYahoo知恵袋の↓このページを見つけた。

 cf. http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13100243473

以下、作業のメモとして残しておく。
まず、コマンドプロンプトを管理者権限で起動する。スタート → プログラム → アクセサリ → コマンドプロンプト、を右クリックして、「管理者として実行」。で、次のようにコマンドを打ち込む。

^o^ > regsvr32 jscript.dll

すると、「jscript.dll の DllRegisterServer は成功しました。」というダイアログが出るので「OK」をクリック。これで JScript が動くようになる。

^o^ > cscript arg1.js foo bar baz
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

foo
bar
baz

Yahoo知恵袋の記事では、JScriptが損傷してるとか書いてあるけど、心当たりが無い。もしかしたら何かのときに損傷したのかも。

ちなみに、VBScript も同じ状態。

^o^ > cscript arg.vbs foo bar baz
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

CScript エラー: スクリプト "C:\Users\takatoh\Documents\w\sandbox\wsh\arg.vbs" のス
クリプト エンジン "VBScript" が見つかりません。

同じやり方では復旧できなかった。なんで?

^o^ > regsvr32 vbscript.dll

これで、成功したとダイアログには出る。が、実際にスクリプトを実行してみるとダメ。

^o^ > cscript args.vbs foo bar baz
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

CScript エラー: スクリプト "C:\Users\takatoh\Documents\w\sandbox\wsh\args.vbs" のス
クリプト エンジン "VBScript" が見つかりません。

まあ、VBScriptは使わないからいいか。

パソコンが壊れたのでHikiを引越しした

WindwosXP が動いていた古いほうのPCが壊れた。といっても、ほぼネット専用機になっていたのでたいした実害は無いんだけど、ただ、いくつかWebアプリを動かしていたので、それをどうにかしないといけなくなった。
そのWebアプリのひとつが、WikiクローンのHikiで、幸いハードディスクは無事だったので、データを回収して新しいほうのPC(といってもWindows7)に引っ越すことにした。

VertrigoServ のインストール

何はともあれ、Webサーバが無くては何もできない。古いPCでは、VertrigoServ という、Apache と MySQL と PHP がセットになっているものを使っていた。なので、今回もこれを使うことにする。まずは以下のサイトから VertrigoServ をダウンロード。バージョンは2.29。

 cf. http://vertrigo.sourceforge.net/

ファイルは実行形式のインストーラになっているので、案内に従うだけで簡単にインストールできた。ひとつ注意点としては、インストール先をデフォルトの C:\Program Files (x86)\VertrigoServ ではなく、C:\VertrigoServ に変えたところ。こうしておかないとconfファイルの編集ができない。たぶんWindows7の権限の問題なんだと思うけどそれを追及するより楽な道を選んだ。
で、変えたところは次の2点。
1点めは、httpd.conf内のWebサーバのポート。デフォルトでは 8080 になっているのを 80 に変えた。

#Listen 8080
Listen 80

コメントアウトしてあるのがデフォルトの設定ね。

もう1点は、DocumentRoot。これはvertrigo.conf内に記述がある(vertrigo.confはhttpd.confにインクルードされている)。

#DocumentRoot "C:\VertrigoServ\www"
DocumentRoot "C:\www"
#<Directory "C:\VertrigoServ\www">
<Directory "C:\www">
    Options Indexes FollowSymLinks Includes
    AllowOverride All
    Order allow,deny
    Allow from All
</Directory>

最後に、C:\VertrigoServ\www を C:\www にコピーして終わり。ブラウザで http://localhost/ にアクセスすると無事、Welcome to VertrigoServ というページが表示された。

Hiki のインストール

Hikiは次のサイトからダウンロードした。

 cf. http://hikiwiki.org/ja/

バージョンは1.0.0。これも基本的にはダウンロードしたファイルを展開して、DocumentRoot以下(C:\www\hiki
に配置、いくつかの設定をするだけでいい……はずなんだけど、いざブラウザでアクセスしてみたら、docdiff/difference がロードできないと言うエラーが出た。配布物内の Gemfile を見ると、どうも docdiff という GEM が必要なようなので、インストールする。

^o^ > gem install docdiff

さて、今度は大丈夫かと思ったら、hikidoc がロードできない、というエラーが出たので、これまたインストール。

^o^ > gem install hikidoc

今度こそ大丈夫、無事 FromtPage が表示された。

Hiki のデータを引越し

最初、これはデータを上書きすればいいだけだと思っていた。が、そうはいかなかった。データは、WebサーバのDocumentRootのそと、C:\hiki_data に置いたんだけど、この中のtextディレクトリの中見たデータそのものなので、基本的にはここに以前のデータを放り込んでしまえばいいはずなんだけど、ブラウザからアクセスしたら、エラーになってしまった。なにやらエンコードの問題らしい。
考えてみれば、古いHikiのバージョンは、0.6.3 でエンコードはEUC、対して新しいほうのHiki(1.0.0)のエンコードはUTF-8らしい。ということはEUCからUTF-8にコンバートできればいいはず、と思って配布部図の中を眺めてみると、tool/convert.rb というスクリプトを発見。中を見るとなんかあたりっぽい。これを使ってコンバートした。

^o^ > ruby -Ic:\www\hiki c:\www\hiki\tool\convert.rb --data-directory=BSL -i euc
-jp -o utf-8

なんか warning がいっぱい出たけどとりあえず無視して、変更されたデータを丸ごとhiki_data/textにコピー。
改めてブラウザでアクセスすると、今度はうまく表示された。