nDiki : ActivePerl

ActivePerl

Perl ディストリビューション。

がパッケージ化されている。

Perl モジュールについては PPM によって管理されている。 普通にソースパッケージから (n)make install でインストールすることもできるが、できれば PPM パッケージを作成してインストールした方がトラブルが少ない。

メモ

コマンド プロンプトを開かない -> wperl.exe を使う。

関連情報

スポンサード リンク

2006年12月12日 (火)

PAR::Repositoryビルド済み Perl モジュールをネットワーク配信

実行可能ファイル作成としての PAR

PAR といえば Perl スクリプトを実行可能ファイル(Windows なら EXE 形式ファイル)に変換するモジュールとして有名である。

ちなみに実行可能ファイルを作成する部分はは PAR 0.97 より PAR-Packer パッケージに分けられ、PAR 自体はインストールしやすい pure Perl なパッケージになっている。

PAR モジュールアーカイブからのローダとしての PAR

PAR が提供するもう一つの(こちらが本来はメイン?)機能は、プログラムの実行時に必要な Perl モジュールPAR ファイルと呼ばれる Perl モジュールアーカイブファイルからロードする機能である。 XS モジュールなどもコンパイルすることができるどこかの環境で1度ビルドして PAR ファイルにしておけば、同じアーキテクチャのホスト上でそのまま利用することができる。

PAR リポジトリ

ロードしたい PAR ファイルはファイルパスだけではなく URL でも指定することができ、必要な時にオンデマンドでフェッチさせることができる。 これを使えば Perl プログラムの集中管理可能だ。

PAR 0.951 からは PAR リポジトリというコンセプトが追加され、パッケージ毎に作った PAR ファイルをサーバ上(あるいはローカル)のリポジトリに蓄積してオンデマンドでロードできるようになった。

個別に PAR ファイルを指定する従来の方式に比べてかなり便利そうである。 ということで試用してみた。

まずは

あたりをインストールし準備 OK。

1. PAR リポジトリを作成する

最初に PAR-Repository に含まれている parrepo で。

 parrepo create -r /tmp/PAR

PAR リポジトリファイルの中にはデータベースファイルが作成されるが、これは DBM::Deep というアーキテクチャ非依存のものを使っているので、Linux でも Windows でもどちらからでもアクセス可能である (つまり Linux 上でリポジトリをメンテできるということだ)。

2. Perl パッケージを PAR ファイル化する

次に必要な PAR ファイルを作成する。 作成したいパッケージを展開してビルドし、blib ができている状態で PAR::Dist を使ってパッケージ化する。

 perl Makefile.PL
 make
 make test
 perl -MPAR::Dist -e blib_to_par

例えば ActivePerl*1 上で WWW-Mechanize-1.20 を PAR ファイル化すると

 WWW-Mechanize-1.20-MSWin32-x86-multi-thread-5.8.8.par

というファイルが作成される。

普段から ActivePerl で必要なライブラリは基本的に自前で PPM パッケージ化して、動作確認した上で PPM リポジトリに蓄積するようにしているので、合わせて次の手順でパッケージを作ることになる。

 perl Makefile.PL
 nmake
 nmake test
 perl -MPAR::Dist -e blib_to_par
 make_ppm

*1ここでは Windows 上の

3. PAR リポジトリPAR ファイルを登録する

PAR ファイルができたら parrepo でリポジトリに登録する。

 parrepo inject -r /tmp/PAR -f xxx.par

4. PAR リポジトリ上のライブラリを使用してみる

例えば先ほどの WWW::Mechanize がリポジトリに登録されている状態で

 #!/usr/bin/perl
 use PAR { repository => 'file:///tmp/PAR/' };
 use WWW::Mechanize;
 my $mech = WWW::Mechanize->new;
 $mech->get('http://www.example.com');
 print $mech->content;

というスクリプトを書いて実行すると、PAR リポジトリから WWW::Mechanize がロードされて正しく実行される。

ここでリポジトリを Web サーバアップロードして、repository のところに URL を指定するようにすることもできる。 例えばリポジトリを http://www.example.com/PAR/ に配置したとすると

 #!/usr/bin/perl
 use PAR { repository => 'http://www.example.com/PAR/' };
 use WWW::Mechanize;
 my $mech = WWW::Mechanize->new;
 $mech->get('http://www.example.com');
 print $mech->content;

と書き換えることで、インストールしていない WWW::Mechanize を使用できるようになる。

Perl プログラムを実行形式化する

先ほどの Perl スクリプトを get_top_page.pl という名前で保存して pp で実行可能ファイル化する。

 pp -o get_top_page.exe -M PAR::Repository::Client get_top_page.pl

とすれば get_top_page.exe という実行可能ファイルが作成される。 WWW::Mechanize はオンデマンドで http://www.example.com/PAR/ からフェッチされるので、アップデートが必要な場合は新しい PAR ファイルを作成してリポジトリを更新するだけでよい。 EXE ファイルを作成しなおして利用者に配付しなすといった作業も不要だ。

スクリプトもリポジトリにおく

さらには実行するスクリプトをも PAR リポジトリに置いておくことが可能だ。

例えば WWW-Mechanize に含まれている mech-dump をオンデマンドにフェッチして実行する実行形式ファイルは以下のコマンドで作成できる。

 pp -o mech-dump.exe -M PAR::Repository::Client \
   -e "use PAR { repository => 'http://www.example.com/PAR/', \
                 run => 'mech-dump' }"

まとめ

ActivePerl では PPM があるとはいえ、普通のユーザにちょっとしたプログラムを使ってもらうのに「ActivePerlインストールして、PPM パッケージインストールして、……」というのは手間すぎる。

pp で プログラムに必要なものを全てバンドルした実行形式化ファイルにするという方法ももちろんあるのだが、頻繁にアップデートするようなスクリプトの場合には、起動のための部分だけ pp で作成しておいてあとは PAR リポジトリで集中管理するというのもちょっと魅力的である。

スポンサード リンク
[ 12月12日全て ]

2006年12月17日 (日)

USB メモリPerl を入れて持ち歩きたい

ポータブルアプリケーション詰め込み。

自分の場合エディタPerl があれば随分できることが増えるので、何とか Perl を入れておきたい。 しかし定番の WindowsActivePerl はセットアップが必要であり、持ち歩きには向かない。

何かいい Perl ディストリビューションがないかなと探してみたところ、インストール不要Apache ディストリビューションが目についた。 そういえばこれらには Perl が含まれていてインストール不要で使えるものがあるらしいので、それらが使えるかもしれない。

XAMPP for Windows 1.5.5

標準の XAMPP では Perl インタプリタしか入っていなかった。 さすがにこれでは使い物にならない。

XAMPP for Windows ADD-Ons Perl 5.8.8-2.2.3

XAMPP で実用的な Perl 環境を用意するにはこちら。ActivePerl 5.8.8.817 上に Web アプリケーションに必要そうな パッケージが用意されている。 そのかわり 200MB (!) 近い容量が必要。 でかすぎ。

README には setup_xampp.bat に実行の指示がある。

Uniform Server 3.3

ActivePerl 5.8.7.815 が含まれている。 Perl インタプリタと、いくつかのパッケージが含まれている。 パッケージは結構少なめにおさえてあるので、容量はかなり少ない。 しかし

 perl -MConfig -e "print Config::myconfig()"

が動かないなどそのまま使えるわけではなさそうだ。

やっぱり ActivePerl?

試した2つとも結局は ActivePerl を使っているようである。 ActivePerl の部分のライセンスはどうなっているのだろう?

もしかしたら ActivePerl の AS package を展開して、不要なファイルを削除すれば (インストーラで設定されるリポジトリなどの情報を使う部分は駄目にしろ)、ある程度動くのかな。

それと Installer.bat の中で、一部ファイル(.bat、Config.pm、Config_heavy.pl、perllocal.pod、.packlist、config.h) のリロケーションをしているので、このあたりがポイントになりそう。

要確認。

[ 12月17日全て ]

2007年2月5日 (月)

ActivePerl 5.8.8.820PPM では ppd/tar.gz を置いただけの PPM リポジトリを使えなくなった

ActivePerl 5.8.8.819 までは .ppd と .tar.gz ファイルを置いたディレクトリを Web サーバで公開しておけば、そのディレクトリの URLPPM リポジトリとして指定して使うことができた。

これが build 820 付属の PPM だとスキャンしてくれなくなった。 リポジトリの URL を指定する際、package.xml を指定しないと駄目らしい。

PPM リポジトリとして必要なファイル群を生成する

PPM リポジトリとして必要なファイル群は PPM-Make に含まれている rep_summary コマンドで生成することができる。

 rep_summary --rep /path/to/ppm/repository

今後はこれで package.xml その他のファイルを生成しておくことにする。

複数の PPM リポジトリ

一方複数の PPM リポジトリの扱いは良くなった。build 819 付属の PPM では、複数のリポジトリにまたがってパッケージの依存解決ができなくなっていて不便だったのだが、build 820 のものでは、以前のバージョンのもののようにまたがれるようになった。

基本的な PPM パッケージ群用と、プロジェクト毎の PPM パッケージ群用の PPM リポジトリを組み合わせて使うときに、依存解決できないと厄介だったのでこれは○。

PATH

build 819 のインストーラでは site\bin に PATH を通してくれないので、site にインストールしたパッケージ付属のコマンドが呼び出せず不便であった(もちろん自分で PATH を通せばよいのだが)。

build 820 のインストーラでは site\bin も PATH にいれてくれるようになった。○。


[ ActivePerl ]

[ 2月5日全て ]

2007年12月20日 (木)

今日のさえずり - 「この場ではずれる!」と書くべき

  • 09:38 オバサンが車内で脳トレ系ソフトで激しく DS をタタタタタップしてて、ウルサイ。[mb]
  • 10:15 Natera Bonsai outliner for U3 リリース案内のメールが届いてた。 *Tw*
  • 12:16 「この場で当たる!」は確率的にいって「この場ではずれる!」と書くべき。[mb]
  • 15:55 Visual C# 2005 の IntelliSense、「スペース バーを押すことによって確定する」がデフォルトってひどい。定義書く前に呼出しコードを書いて変な補完確定されるとムキー。
  • 16:21 SERIAL 使ったのに、シーケンスの方に GRANT してなかったのを直した。
  • 19:55 クイックルワイパー買った。乾燥してきているなか、すぐ綿埃がたまるので、これで退治する。[mb]
  • 24:22 ActivePerl 5.10.0.1001 が出てる。http://tinyurl.com/2h7gzh
[ 12月20日全て ]

2008年9月5日 (金)

Pentium 4 マシンから Athron 64 マシンに乗り替え

Dell Dimension 4500C

今会社で使っているデスクトップ PC は Dell Dimension 4500C。 Pentium 4 2.40 GHz、メモリ 768MB の Windows XP Home Edition SP2。

ここ最近メモリが足りないのかすぐアプリケーションが落ちまくり。 またいろんなソフトウェアインストールしたりアンインストールしたりを繰り返していたのでシステムがおかしくなってきているのか、動作も怪しい。

ちょっと仕事にならないレベルなってきたので、空いている別の Dell の PC に乗り替えることにした。

Dell Dimension C521

乗り替え先は Dell Dimension C521。 AMD Athlon 64 3200+、メモリ 1GB の Windows XP Home Edition SP2。

OSDell PC リストアで出荷状態に戻す。 と思ったらテストサーバとして Fedora とデュアルブートとして使われていたため、MBR が書き換えられていたのか Dell PC リストアに入れない。 Web で調べたところ Dsrfix というので元に戻せるとのことなので、これを使って MBR を戻す。

Dell PC リストア。リストア自体は結構あっという間に終わる。

Windows XP セットアップ後、順次ソフトウェアの追加・削除。 以下今日の作業分。

  1. [削除] Google デスクトップ
  2. [追加] Google Chrome
  3. [追加] Windows XP SP3
  4. [削除] マカフィー製品
  5. [追加] Norton Internet Security
  6. [追加] Skype
  7. [削除] Dell Network Assistant
  8. [削除] Adobe Reader 7
  9. [追加] Adobe Flash Player 9
  10. [追加] Adobe Reader 9
  11. [追加] ActivePerl
  12. [追加] 7-Zip
  13. [追加] Skype4COM
  14. [追加] Microsoft Office

あとは前の環境で入れていたもののうち、必要になったら順次入れていく予定。

XKeymacsSKKIME、zyzzy、 Unlocker、TrueCryptSubversionTortoiseSVN、WinMerge ThinkingRockRipplex、 PDFCreator、ImgBurn、 JUDE/Community、DBDesigner、NUnit

今まで HHK Lite 使ってきてたけれど、これ PS/2 なので C521 には直接ささらないんだよな。どうしよう。PS/2 - USB コンバータ買うか。

それとも USB モデルの HHKB Lite 2 買うか。 カーソルキーはいらないけれど、HHKB Professional 2 は高いしキータッチが好みじゃないしなあ。悩ましい。

[ 9月5日全て ]

2009年2月9日 (月)

今日のさえずり - Doing リストが思ったよりよい

2009年02月06日

  • 11:25 ここ数日探しているのだが、microSDカードリーダがでてこない。 *P3
  • 18:36 Linux 再起動繰り返しているので、ちょっと浮気して Twit 最新版にしてみた。P3 に慣れちゃっている自分を実感。 *Tw*
  • 23:28 ようやく今日、Linux kernel 2.6.26 に移行できた。 *P3

2009年02月07日

  • 08:18 北方領土の日。 [mb]
  • 23:44 通帳見ながら去年の光熱費入力しようと思ったら、途中からクレジット支払いにかえたんだった。集計面倒だな。 *P3

2009年02月09日

[ 2月9日全て ]

2009年2月22日 (日)

ActivePerl 5.8.9 build 825 + MinGW 5.1.4 + PARPerl スクリプトを実行可能ファイル

久しぶりに PAR の出番。 休日出勤して環境作り。

今回実行可能ファイルにしたい Perl プログラムが Perl 5.8 で開発・テストされているものの改訂版で、必要な PPM パッケージも 8xx 用に作りだめしてあるので、ActivePerl 5.8.9.825 上で行うことにした。

PAR::Packer は ActivePerl の build と合っていないとうまく動かないので、自分でソースからビルドして PPM パッケージ化する。 必要な依存モジュールのバージョンも軒並み上がっているので、それらもビルド

今まで Visual Studio 6.0 でビルドしていたのだけれど、この間 PC をかえてから入れていなかったので、今回は MinGW を使うことにした。 SourceForge.net 上から g++ をダウンロードしてネットワークインストールできないようなので、そこだけ SourceForge.JP で探してきてインストール

MinGW の bin ディレクトリを PATH に追加したら、特に問題なく Perl モジュールコンパイルできている。素晴しい。ExtUtils::FakeConfig 無くてもいいのかな。

[ 2月22日全て ]

2009年8月12日 (水)

今日のさえずり - 哭きの竜のポーズの人発見(多分寝てる)

naney:3819175819

2009年08月10日

2009年08月11日

  • 11:11 return foo = bar ? true : false; とか、やめてほしい。 *P3
  • 12:43 FriendFeed の友達リストの一括整理の仕方をようやく把握した。 *P3
  • 12:49 FriendFeed からポストしてみる。 http://ff.im/-6qNVn
  • 12:52 2009年8月8日の歩行: 3515歩、2.69km、33分、4.84km/h、消費 130.6kcal、脂肪燃焼 18.7g、1.7エクササイズ。 *P3
  • 12:53 2009年8月9日の歩行: 4570歩、3.51km、41分、5.02km/h、消費 171.9kcal、脂肪燃焼 24.5g、2.4エクササイズ。 *P3
  • 12:55 2009年8月10日の歩行: 4801歩、3.82km、35分、6.37km/h、消費 179.7kcal、脂肪燃焼 25.7g、2.6エクササイズ。 *P3
  • 16:32 哭きの竜のポーズの人発見(多分寝てる)。 *P3
  • 18:25 Dropbox がつまってリズムが崩れた。 *P3
  • 18:38 あ、/home が 6.9MB しか残っていなかった。 *P3
  • 18:57 ソフトウェアダウンロードアーカイブを一部 microSDHCカードに移動して /home を広げている最中。 *P3

2009年08月12日

  • 09:31 今年の夏コミ日程を確認。8月14日から8月16日か。今週末なのね。 [mb]
  • 09:46 ソフマップ新店舗について。 L:秋葉原http://movapic.com/...
  • 12:24 2009年8月11日の歩行: 7514歩、6.01km、55分、6.49km/h、消費 282.5kcal、脂肪燃焼 40.4g、4.1エクササイズ。 *P3
  • 12:34 茶月のお持ち帰り限定お買い得セールってなんだ? あの店舗でイートインあるの? (と書いていて配達という選択肢の可能性に気づいた) [mb]
  • 12:37 水鉄砲って100円しないのな。 L:シモジマ [mb]
  • 12:49 クーピーペンシル買った。 [mb]
  • 12:54 マーボードワーフ。 [mb]
  • 12:57 @shuwatto クーピーペンシル、缶箱のデザインも昔と同じです。逆にキャラクター物とかお店で見つかりませんでした。 [mb]
  • 13:21 @HeroesC 子供用のクーピーペンシル店頭で見たのですが、あれ子供にも短すぎたりしないですか? (値段的にも割高感があったので今日は普通のをチョイス) *P3
  • 14:57 社内サーバにはいっている svnsvn merge --reintegrate できないバージョンです。 *P3
  • 15:42 危うくセブン-イレブンで生茶パンダ先生 in ボトル買うところだった。手にしたけど考えてみたら777円も出せん。 [mb]
[ 8月12日全て ]

2009年8月25日 (火)

ActivePerl をやめて Strawberry Perl

ActivePerl 5.10.0.1005 + Visual Studio 2005 SP1 上で PAR::Packer を使って実行可能ファイル化したものの、今日別の環境で動かしたら「このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした」というエラーがでてしまった。

今まで Visual Studio 6.0 で PPM パッケージの作成やら PAR::Packer による実行可能ファイル化をしていたので気がつかなかったのだが、調べてみると Visual Studio 2005 以降だとどうもいろいろ面倒らしい。

ActivePerl + PPM パッケージだと自分で PPM リポジトリを用意しておくことで、開発環境の統一が楽になるという利点があったのだけれどもしばらく一筋縄ではいかなさそうなので、別の Perl ディストリビューションを使ってみることにした。

Windows 上の Perl としてしばらく使ってみることにしたのは Strawberry Perl。現在のバージョンは 5.10.0.6。 以前にもちょっと入れてみたことはあったけれども、きちんと使ってみるのは初めて。

MinGW や dmake が同梱されており、CPAN.pm を使って UNIX 上と近い感覚で Perl モジュールインストールができる。 PAR::Packer を使って実行可能ファイル化した Perl スクリプトも実行できることを確認。

しばらく乗り替えてみることにする。

[ 8月25日全て ]

2013年1月8日 (火)

今日のさえずり: 秀丸で Perl スクリプトを書いてしまった……

2013年01月08日

[ 1月8日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィの SNS の企画開発を行うグループでマネージャー・プロダクトオーナーをしています。CS 向上・ユーザーサポート・健全化などにも取り組んでいます。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.065245s / load averages: 0.58, 0.62, 0.58
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker