トップ(最新) | <前 | 次>

nDiki : ActivePerl

ActivePerl

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

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

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

メモ

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

関連情報

スポンサード リンク

Related term

2004年9月21日 (火)

ActivePerl 5.8 用 PDL 2.4.1 このエントリーを含むはてなブックマーク

実は SourceForge.net にあった。 まだ動作確認していないが、問題なければこれで ActivePerl 5.6.1 ともおさらば。

その場合は PPM リポジトリを再構築しなおしであるが。

スポンサード リンク


[ 9月21日全て ]

2004年9月22日 (水)

ActivePerl 5.6.1 -> 5.8.4 このエントリーを含むはてなブックマーク

PDLの動作確認がとれたのでプロジェクトで使用するバージョンを v5.8.4 に上げることにする。 PPM パッケージ全部作りなおし。4時間ちょいかかった。

ついでに ithreads まわりもチェック。


[ 9月22日全て ]

2004年10月14日 (木)

PPM::MakeMETA.yml このエントリーを含むはてなブックマーク

PPM::Makemake_ppm で ppd ファイルを作成すると自動的に DEPENDENCY 要素を生成してくれる。 今作っているパッケージ、 WindowsActivePerl 下で動かす時には追加の依存モジュールが(Win32::*)あるので、Makefile.PL の中で $^O を見て PREREQ_PM に追加を行っている。

で気がつくとこれが ppd に反映されていない。

ソースを見たところ META.yml があってこれから情報が取得できている時は、Makefile を見にいかないようになっている。 META.yml が無いか、必要な情報が取れていない場合は、Makefile をスキャンして PREREQ_PM などを取得している (Makefile.PL ベースの場合)。

ここでパッケージの作成(make dist)を Linux 上で行っている関係で META.yml には Windows 環境特有の requires が入らないため、結果 ppd に DEPENDENCY が足りない事になる。

ということでこれからはとりあえず安直に、 make_ppm の直前に META.yml を削除することにしよう。


[ 10月14日全て ]

2004年10月21日 (木)

bundle を作成して Perl モジュールをまとめてインストール このエントリーを含むはてなブックマーク

依存モジュールが多くなってきて、開発しているPerl モジュールの実行環境構築が面倒になってきた。

ActivePerl では PPM パッケージ化 + PPM リポジトリで芋蔓式インストールが可能である。 素のPerlだとCPANモジュールでネットワークインストールする事になる。 ここで一個づつインストールしていくのがかったるい。 ということでCPANにあるモジュールのように Bundle::* を作る事にした。

調べてみると簡単。

  • bundle はただのPerl モジュールである。
  • Bundle:: 名前空間に置く。
  • =head1 CONTENTS Podセクションを置き、各行に1つづつ依存モジュールを列挙する。

フォーマットは以下。

 Module_Name [Version_String] [- optional text]

これだけ。Pod に書かせるあたり、とりあえずから始まった感じである。

CPAN上に置あるものはきちんと tarball 化してあるが、ローカルで使う分にはこの bundle Perl モジュールを @INC のどこかに置いておけばよい。

Bundle::MyModule を作ったとすると perl -MCPAN -e shell から 'install Bundle::MyModule' でOK。

@ CPAN と @INC 上の '.'

カレントディレクトリの下に Bundle/MyModule.pm を置いて

 perl -I . -MCPAN -e shell

として Bundle::MyModule をインストールしようとしたのだがうまくいかない。CPANシェル上の ! コマンドで @INC を出力してみると . が含まれていない。何故? PERL5LIBに設定しても同様。 試行錯誤したところ絶対パスで指定すればOKであった。

CPAN.pm 1.76_01 を読んでみた。

 no lib "."; # we need to run chdir all over and we would get at wrong
             # libraries there

これだ。


[ 10月21日全て ]

2004年11月25日 (木)

nmake で毎回 pl2bat されるのを何とかしたい このエントリーを含むはてなブックマーク

EXE_FILES でインストールするスクリプトを指定してある Makefile.PLActivePerl 上で実行して nmake をかける。 また nmake する。

するとソースを書き換えてないにもかかわらず、EXE_FILES指定ファイルの blib/script へのコピーと pl2bat の実行が行われる。 嫌な感じ。

追いかけてみると

  • UNIX上の場合 FIXIN *1blib/script にコピーされたスクリプトを上書きするため更新時刻が変更され、次の make では最新と判断される。
  • Windows上の場合 FIXIN *2blib/script にコピーされたスクリプトからバッチファイルを生成する。このためコピーされたファイルの更新時刻は、ソースと同じのまま。依存関係で指定されている Makefile の方が新しいので次の nmake でも同じ処理が繰り返される。

というわけ。コピーした後 touch するようにすればよい。

 perl -MExtUtils::Command -e touch %1
 pl2bat %1

という内容の touchpl2bat.bat を作って

 nmake FIXIN=touchpl2bat

とすればきちんと更新時刻が反映されビルドは1回だけになる。 毎回指定するのは面倒なので、MSWin32 なら自動的にそうするようにパッケージングしたいのだが nmake で他にうまく FIXIN を上書きする方法がみつからず (MY::postamble で書き出しても、WriteMakefile(macro => {FIXIN => 'touchpl2bat'}, ...) しても駄目)。


[ ExtUtils::MakeMaker ]

*1= perl -MExtUtils::MY -e "MY->fixin(shift)"

*2= pl2bat


[ 11月25日全て ]

2004年11月26日 (金)

HTTP::Daemonベースのプログラムのテスト このエントリーを含むはてなブックマーク

make test でテストしておけるようにしておきたい。

ということで王道。fork して daemon プログラムを exec。 WWW::Mechanizeで daemon に HTTP でアクセスし各種テスト。

終わったら kill。

Win32 (ActivePerl)では fork + exec で起動できるのだけれど kill では死なない。 ということで Win32::Process::Create で直接起動して、Win32::Process::Kill で終了させるという別解で。

HTTP + HTMLのテストは、以前ちょっと使ったことのあるHTTP::WebTestを使おうかと思ったが、なんだかんだいって WWW::Mechanize の方が好きなように書けそうなのでこちらをチョイス。


[ 11月26日全て ]

2005年2月23日 (水)

ActivePerlMing このエントリーを含むはてなブックマーク

ActivePerlMing を使えるようにしておきたい。

@ Visual Studio

Ming 0.3 beta1 のソースパッケージには Visual Studio 6.0 用のプロジェクトファイルが含まれている。 Cygwin の Bison と flex があればライブラリをビルドできるようだ。 横着して Linux 側で bison と flex で生成したファイルをコピーして(それから unistd.h をインクルードしている部分を消して)、ビルドしてみたところ一応 lib ファイルは作成成功。

しかし ActivePerl 用にPerl モジュールの make は失敗。

@ MinGW + nmakeActivePerl のモジュールをビルドできるらしい

調べたところ ExtUtils::FakeConfig を使うと Visual Studio が無くても MinGW + nmake でモジュールをビルドできるらしい(全てではないと思うが)。

ということで MingMinGWビルドした後、そのまま ActivePerl 用モジュールの作成まで持ち込むことにしてみる。

@ MinGW + MSYS + GnuWin32開発環境を構築

コンパイルに必要な環境を MinGW で、configure に必要な環境を MSYS で用意する。

@ bison は GnuWin32

Mingビルドに必要な Bison は MinGWMSYSインストーラに含まれていない。 bison-1.875.0-2003.02.10-1.exe というのが別途あるがうまく動かない。

ソースパッケージ(bison-2.0.tar.gz、bison-1.875.tar.gz)からはビルドできず。 MinGW/MSYSのプロジェクトにある bison-1.875-2003.02.10-1-src.tar.gz はビルドできるものの make check が通らない。

とうことで GnuWin32 の bison-1.875-4.exe (インストーラ形式)をインストール。 c:/usr/local/GnuWin32インストールした後、MSYS の /etc/fstab で /GnuWin32 にマウントし、/GnuWin32/bin に PATH を通しておく。

@ flex はソースパッケージから

flex-2.5.4a.tar.gz を展開して

 ./configure; make; make check; make install

インストール時ハードリンクが作れなくてエラーがでているようだが無視。

@ zlib (Ming で必要)

MSYS 上でビルドしてインストール。zlib-1.2.2.tar.gz を展開して

 ./configure; make; make check; make install

@ LibUnGif for Windows (Ming で必要)

MSYS 上でビルドしてインストール。 libungif-4.1.0b1-src.zip を展開して

 rm config.cache;
 config.h内の-DHAVE_VARARGS_Hをコメントアウト。
 ./configure; make; make install

make check はエラーが出るが無視。

@ libpng (Ming で必要)

MSYS 上でビルドしてインストール。libpng-1.2.8-config.tar.gz を展開して

 CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ./configure
 make; make check; make install

@ いよいよ Ming

MSYS 上でビルド。ming-0.3beta1.tar.gz を展開して

 CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib make static

@ ActivePerl 用モジュール作成

ExtUtils::FakeConfigPPM::MakeMingSWF PPM パッケージを作成する。 (MSYSシェルではなく)コマンド プロンプトを開いて、Mingソースパッケージの中の perl_ext に移動。 MSYSMinGWnmake にPATHを通しておく。

それから Makefile.PL の実行で -lz を発見できないので、libz.a を Makefile.PL と同じディレクトリにコピーしてしまう(-L/usr/local/lib を指定しても効かなかったので)。 libpng.a、libungif.a も同じくコピーしておく。

Makefile を作成。Makefile.PL では -lz しか指定していないが、libpng と libungif も必要なのでコマンドラインオプションで指定する。ExtUtils::FakeConfig の Config_m を使用して MinGW を使用するようにする。

 perl -MConfig_m Makefile.PL LIBS="-lpng -lungif -lz"

ここで生成される Makefile の中で libperl58.a を指定している部分があるが、ActivePerl では perl58.lib になるので、エディタで書き換え。 後はいつも通り

 nmake
 nmake test
 make_ppm

PPM パッケージ作成完了。

簡単なPerlプログラムでSWFファイルが作れる事を確認。 やった。


[ 2月23日全て ]

2005年3月31日 (木)

Wineを入れてみる このエントリーを含むはてなブックマーク

Linux 上で Win32 用の ActivePerl を動かして、PPM パッケージの作成や PAR による実行可能ファイルの作成をできるようにしたい。

調べたところ Wine 上でも ActivePerl が動くらしい。 さっそく Debian GNU/Linuxsid 環境にインストールしてみる。

debパッケージは以下をインストール

  • wine
  • wine-utils
  • winesetuptk
  • wine-doc
  • msttcorefonts

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 以下を作っても駄目。

要調査。


[ 3月31日全て ]

2005年4月1日 (金)

Wine の設定は winetools で このエントリーを含むはてなブックマーク

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

動いた。


[ 4月1日全て ]

2005年4月4日 (月)

WiKickerWin32 対応 このエントリーを含むはてなブックマーク

WiKicker をベースにちょっとしたWebアプリケーションを作ろうという話になったのだが、そういえば Win32 対応していない。

ということで ActivePerl で動くように手を入れる。 まずは make test が通るようになるまで修正。

  • RCSまわり
    • WindowsRCS が「標準でRCSファイルに ',v' suffix をつけない」という振る舞いに対応
    • TZ環境変数を事前に設定しておかなければならないことに注意
  • uptime
    • Windows にコマンドがないので、処理をバイパス
    • 後程代替コードを用意

あたりを修正してだいたい対応できたようだ。 同梱している DiKicker の方は DB_File::Lock の make test が通らないので、とりあえず使用不可ということで。 WiKicker の方も flock まわりがきちんと動いているか確認する必要があるな。


[ 4月4日全て ]

スポンサード リンク

■よく検索されるキーワード

torrent(109) x31(45) thinkpad(31) 動画(29) 提案書(26) mp980(24) 手帳(24) windows(23) linux(23) 画像(21) 使い方(21) リフィル(21) debian(20) usb(20) tc-1(19) perl(19) 筆まめ(18) 壁紙(17) ほぼ日手帳(16) 冷蔵庫(14) ドラマ(13) wiki(13) 書き方(12) ダイソー(12) システム手帳(12) 宮根誠司(12) ノート(11) so905ics(11) 無印(11) バッグインバッグ(11) 映画(11) 設定(10) 修理(10) 宮根(9) ssh(9) a6(9) ほぼ日(9) 黒田征太郎(9) バッグ(9) gmail(8) 感想(8) (8) f-01a(8) メモリ(8) gtd(8) ブログ(8) nikon(8) allinanchor:*.torrent(8) ボールペン(7) 方眼(7) ポイント(7) 4c(7) ヨドバシカメラ(7) ケース(7) twitter(7) apache(7) ht-01a(7) ヨドバシ(7) ubuntu(7) truecrypt(7) n-02a(7) 作り方(7) minolta(7) af(6) インストール(6) ガントチャート(6) mp3(6) zippo(6) hdd(6) emacs(6) レビュー(6) カバー(6) vq1005(6) 日本語(6) ハクキンカイロ(6) 無印良品(6) グレゴリー(6) 交換(6) nikkor(6) pixus(6)

この日記のはてなブックマーク数 Add to Google RSS

Process Time: 0.074713s / load averages: 0.36, 0.31, 0.26
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)