Windowsで/usr/bin/perlを実現する方法
Windowsで/usr/bin/perlを実現する方法を紹介します。
1.はじめに
WindowsでPerl環境を実現するには、Strawberry PerlやXAMPPに同梱されたPerlの利用が一般的と思われます。
ただしPerlスクリプトのShebang行は、
#!/usr/bin/perl
となっているものが多く、Strawberry PerlやXAMPPで提供されるperl.exeはこのパス(C:\usr\bin)にインストールすることができません。
よって、Strawberry PerlやXAMPPでこういったPerlスクリプトを実行するには、
- Windowsのジャンクション機能またはシンボリックリンクを利用してC:\usr\binにパスを設定
- Shebang行をStrawberry PerlやXAMPPのパスに書き換える
のいずれかを行う必要があります。
ということで、このエントリーでは上記の手間をなくすためにC:\usr\binにperl.exeをインストールする方法を紹介します。
Perlは以下の方法でインストールします。
- CPAN Perlを利用
- CPAN Perlはビルドが必要なので、Strawberry Perlに同梱されているmake(dmake)を使用
- CPAN Perlのデフォルトパスである「C:\perl」を「C:\usr」に書き換えてからビルド
デフォルトパスの書き換えはMakefileを1行書き換えるだけです。
2.Strawberry Perlのダウンロード・インストール
Strawberry Perlを「Strawberry Perlのインストール」を参考にダウンロード・インストールしてください。
32bit版と64bit版があるので、お使いのPCに合った方をダウンロードします。
Strawberry Perlを使う訳ではないのでzip版でもいいのですが、msi版でインストールすれば、あとで利用するdmakeのパスが自動的に設定されるので便利です。
3.CPAN Perlのダウンロード
「Ricardo SIGNES / perl - search.cpan.org」の「Download」をクリック。
4.アーカイブの展開
ダウンロードしたアーカイブをCドライブ直下に展開。ここでは「perl-5.18.2」というフォルダ名で展開し、その配下に「win32」というフォルダがある前提で説明を進めます。
展開の仕方によってフォルダ名や階層が異なるので適宜読み替えてください。
5.Makefileの修正
ビルドで利用するmakefile.mk(dmake版のMakefile)に記述されているパスを修正します。
任意のエディタで以下のファイルを修正します。
変更前
#
# Set these to wherever you want "nmake install" to put your
# newly built perl.
#
INST_DRV = c:
INST_TOP = $(INST_DRV)\perl
変更後
#
# Set these to wherever you want "nmake install" to put your
# newly built perl.
#
INST_DRV = c:
INST_TOP = $(INST_DRV)\usr
6.dmakeの実行
コマンドプロンプトを起動し、win32フォルダに移動してコンパイルを実行します。
C:\>cd C:\perl-5.18.2\win32
C:\perl-5.18.2\win32>dmake
このコマンドが完了するまでに数十分かかります。
7.dmake testの実行
同じコマンドプロンプトで、コンパイルしてできたものが正しく動作するか検証するためのコマンドを実行します。
C:\perl-5.18.2\win32>dmake test
このコマンドは完了するまでに数十分~数時間かかります。
8.インストールの実行
最後にインストールを実行します。
C:\perl-5.18.2\win32>dmake install
このコマンドも完了するまでに数十分かかります。
なお、CPAN PerlにはDBI.pmがインストールされていないので個別にインストールする必要があります。
その方法については別途エントリーする予定です。
9.注意事項
3項の修正を行わずにビルドを行ってから3項の修正を行っても、C:\usr\binにperlが配置されません。
厳密には、最初のdmakeで「C:\perl-5.18.2\libConfig_heavy.pl」というファイルが生成され、dmake installではこのファイルに記載された「C:\perl」というパスを出力パスとして使ってしまうようです。
また、いくつかのPCで試したところ、dmake testが途中で「libgcc_s_sjis-1.dllが見つからなかったため、このアプリケーションを開始できませんでした。」というエラーとなるケースがありました。
「OK」をクリックすると、プログラム終了のダイアログも出力されます。
このエラーが何回か出ましたが、「OK」および「キャンセル」をクリックして作業を進めると後続の処理が実行します。
さらに「cpan/Module-Build/t/compat/exit.t」というところで処理が止まってしまったのでCtrl-Cで強制終了しましたが、最後のdmake installは正常終了できたので、途中でエラーなどになってもとりあえず作業は最後まで進めてみてください。
10.参考サイト
参考サイトは以下です。ありがとうございました。
- Perlでansibleライブラリを作成する方法
- perlのCPANモジュールからRPMを作成する方法
- Perlで「Subroutine permission redefined at~」を抑止する方法
- XML::Simpleのインストールでエラーになる場合の対処
- YAML::Tinyで「YAML::Tiny found bad indenting in line~」というエラーになる場合の対処
- Perlの正規表現を使って文字列をまとめて取得する方法
- Perlのハッシュでキーの有無を調べる方法
- perlで配列の途中の要素を削除する方法
- YAML::Tinyでコロンを利用する方法
- Perlで改行コードがCRのファイルを読み込む方法
- Perlで「Possible precedence issue with control flow operator」という警告の対処
- PerlのLWPで「Can't verify SSL peers without knowing which Certificate Authorities to trust」というエラーになったときの対処
- Perl+Windowsでファイルを再帰的にリネームする方法
- Perlプログラムの中でファイルの一部を書き換える方法
- Perlの「Bareword "%s" not allowed while "strict subs" in use~」というエラーについて