Linux 上で Win32 用の ActivePerl を動かして、PPM パッケージの作成や PAR による実行可能ファイルの作成をできるようにしたい。
調べたところ Wine 上でも ActivePerl が動くらしい。 さっそく Debian GNU/Linux の sid 環境にインストールしてみる。
debパッケージは以下をインストール。
winesetup を実行して ~/.wine 以下を作成。 winesetup が古いのか wine を実行すると
Please use the registry key HKEY_CURRENT_CONFIG\Software\Fonts\LogPixels to set the screen resolution and remove the "Resolution" entry in the config file
という警告がでるので、[fonts] の中の
"Resolution" = "96"
をコメントアウト。
次に msi 形式になっている ActivePerl インストーラを動かすために、Windows Installer をインストールする。
失敗。設定がうまくいっていないのか、何かが足りないのか。
usr/share/wine/wineinstall で ~/.wine 以下を作っても駄目。
要調査。
winetools を使ったところ ~/.wine 以下の設定や、Windows Installer のインストールが簡単に行えた。
/etc/apt/sources.list に
deb http://wine.sourceforge.net/apt/ binary/ deb-src http://wine.sourceforge.net/apt/ source/
を加えて wintools パッケージをインストール。 で winetools を起動し、GUIベースで基本的なソフトウェアをインストールする。
Windows Installer をいれたら ActivePerl をインストールして動かしてみる。
wine "c:\\windows\\system\\msiexec.exe" /i \ ActivePerl-5.8.6.811-MSWin32-x86-122208.msi wine "c:\\Perl\bin\perl" -v
動いた。
VMware の話のなかで Bochs というのが話題にでたのでチェックしてみた。 記事などを見ていると QEMU の上の方が高速に動くという評判である。
先日 Wine を試してみたものの、結局 Windows の DLL とかがたくさん必要でいろいろ面倒なわりにソフトウェアの動作確認環境としては不安定すぎて使えない感じだ。 ということで QEMU の上に Windows をインストールしてみることにした。
Debian のパッケージになっているのでそれをインストール:
apt-get install qemu
今回は Windows 2000 Professional をインストールしてみる。 手元にあるのがアップグレード版なので Windows 98 の CD-ROM も必要。 それぞれ dd でイメージを作っておく (w2kupdate.iso、w98.iso)。
とりあえず2GB。
qemu-img create w2k.img 2G
/var のパーティションに余裕があるので、/var/lib/qemu を作ってそこにおく。
HDD イメージ・CD-ROM イメージを指定し(-hda、-cdrom)、CD-ROM からブートするようにオプションを指定(-boot d)して QEMU を起動。QEMU のグラフィックモードでマウスクリックした後、なぜか Ctrl-Alt してもマウスを grab したまま離してくれないので、QEMUモニタは qemu を起動した端末側にしておく (-monitor stdio)。 メモリは1GB実メモリの半分、512MBにしておく(-m 512)。
qemu -hda /var/lib/qemu/w2k.img \ -cdrom /tmp/w2kupdate.iso \ -boot d \ -m 512 \ -monitor stdio \ -user-net
インストール開始。 途中で Windows 2000 より前の OS の CD-ROM を要求される。 QEMU モニタ上で CD-ROM を交換
change cdrom /tmp/w98.iso
しかし、インストーラは正しい Windows 98 インストールディスクとして認識してくれず。 Windows 2000 を直接インストールするのは諦め。
遊びでちょっと sarge のインストールをちょっと途中まで QEMU 上でやってみる。 以前のインストーラより設定項目が少なくなった?
で気をとりなおして、Windows のインストールの続き。 Windows 98 SE をインストールしてから、Windows 2000 へアップグレードすることにする。
Windows 98 の起動ディスクのイメージを dd で作成 (w98fd1.img)。
これでブート
qemu -hda /var/lib/qemu/w2k.img \ -cdrom /tmp/w98.iso \ -fda w98fd1.img \ -boot a \ -m 512 \ -monitor stdio \ -user-net
こちらは順調にインストールが進む。 1時間以上かかってインストール完了。
Windows 98 起動中はCPUパワーを100%使うので、ファンががんがん回ってうるさいうるさい。
あいかわらず ungrab できないのが困るな。 1度 QEMUのグラフィカルウィンドウ上をクリックして grab されてしまうと、他のウィンドウにフォーカスを与えることができなくなってしまう。 Windows 98 側でシャットダウンして QEMU を終了させるか、Ctrl-Alt-Backspace で X Window System もろとも落とすとかしか手段がない。 Windows 使用中、他のウィンドウが使えないというのでは利用価値半減。
要調査。
Windows 用のインストーラ作成ツール NSIS は、スクリプトベースでインストーラを作っていくのが1つの特徴である。 NSIS スクリプトは、さすがインスーラ作成用だけあって
その他システム関連のコマンドが充実している。 コンパイルするとかなりコンパクトな実行形式ファイル (EXE) を生成してくれるので、ちょっとした処理を自動化するには便利である。
今回 USB メモリに入れておいて、そのドライブ上のいくつかのディレクトリに PATH が通った状態でコマンドプロンプトを開くツールを NSIS で書いておこうかと思って試す。
NSIS は POSIX ベースシステムでビルドし実行でき、NSIS スクリプトをコンパイルできる。 ということで作業を Linux で作業をしていたのだが、どうやら System::Call が使えないようだ(スクリプトのコンパイルに失敗する)。
Debian パッケージが古いせい (2.19-1.1) かと思い、ソースパッケージをビルドしてみたらまさに System 関連らしいところでコンパイルがこけている (そういう背景で Debian パッケージがアップデートされていない?)。
ということでどうも最新の NSIS は Linux では駄目っぽい。
しょうがないので久しぶりに Wine。
Wine 上に NSIS 2.22 をインストールして makensis.exe を実行してみたところ試した範囲ではうまく動いている。 ついでにでき上がった実行可能ファイルも Wine 上で試せる。
しばらくは Wine 上で NSIS スクリプト書きを楽しむことにしよう (最終的には Windows 上でコンパイルしなおして動作確認するのだけれども)。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。