nDiki : Perl v5.8.8
Perl v5.8.8
2006年1月31日リリース。
Windows 用としては ActivePerl がある。
- ActivePerl 5.8.8.816
- ActivePerl 5.8.8.817
- ActivePerl 5.8.8.818
- ActivePerl 5.8.8.819
- ActivePerl 5.8.8.820
- ActivePerl 5.8.8.822
メモ
Perl v5.8.8 に同梱されている CGI.pm 3.15 には PATH_INFO の処理に致命的なバグがある。PATH_INFO に正規表現のメタ文字が現れることがあるようなアプリケーションの場合は対策をとる必要がある (記事)
スポンサード リンク
Related term
2006年2月11日 (土)
■ 野良パッケージと依存 Perl モジュールのインストールセット をCPAN::Site で

WiKicker をオフラインで簡単にインストールできるようにしたい。 WiKicker 自体は
perl Makefile.PL make make test make install
で簡単にインストールできるのだが、事前に CPAN にある依存 Perl モジュール(とそれらが依存している Perl モジュールら)をインストールしておかなければならない。
オンライン環境では CPAN.pm を使って芋蔓式にインストールできる。 WiKicker は次回のリリースから Module::Install を採用するので、perl Makefile.PL 時にそれらを行うことができるようにもなる。
しかしオフライン環境になると、話は変わってくる。
普通にやろうとするとあらかじめ依存関係を全部洗い出して事前にダウンロードしておき、依存関係の順番を考えながらインストールしていかなければならない。
これがかなり面倒。しかも各モジュールのバージョンアップにともない、その時その 時で変化する可能性があるので、適宜確認しなければならない。
でれば CPAN.pm の力を借りたい。
CPAN.pm はインストール時に $CPAN::Config->{keep_source_where} (通常 ~/.cpan/sources) に溜め込むので、これを CD-ROM 等に書き込んでオフラインインストールで使用することができる (cf. perldoc CPAN)。
だいたいはこれでうまくいくのだが問題もあって、この方法だと(WiKicker などの)野良パッケージを、うまく一緒にすることができない。
野良パッケージを扱うには CPAN::Site、あるいは CPAN::Mini::Inject あたりを使えば良さそうだ。
今回はまず、CPAN::Site での手順を調べてみる。
~/perl-5.8.8 以下にクリーンな Perl v5.8.8 をインストールしてインストールセットを作成していく。
@ CPAN::Site をインストールする (オンライン)
rm -rf ~/.cpan ~/perl-5.8.8/bin/perl -MCPAN -e shell cpan> install LWP cpan> install CPAN::Site cpan> exit
これで CPAN::Site が使えるようになるとともに、CPAN::Site と LWP および依存モジュールのソースアーカイブが ~/.cpan/sources 以下にたまる。
WiKicker のインストール中に libwww-perl を途中で入れると CPAN.pm が使ってこともあってかうまくいかないので、先に一緒に入れてしまう。
@ インストールしたい野良パッケージ用のローカル CPAN サーバを作成する
野良パッケージら (今回は WiKicker のみ)を含んだ ローカル pseudo CPAN サーバを作成する。
mkdir -p ~/public_html/CPAN/authors/id/N/NA/NANEY cp WiKicker-0.xx.tar.gz ~/public_html/CPAN/authors/id/N/NA/NANEY ~/perl-5.8.8/bin/mkpackages ~/public_html/CPAN
CPAN::Site に含まれている mkpackages を使うことで、CPAN::Site が参照することのできるインデックスファイルが作成される。
@ WiKicker と依存するモジュールをインストールする (オンライン)
次に ローカル CPAN サーバと、CPAN (ミラー) からパッケージを自動ダウンロードしてインストールする。ここでは CPAN.pm のかわりに CPAN::Site を使用する。
~/perl-5.8.8/bin/perl -MCPAN::Site -e shell cpan> o conf urllist unshift http://localhost/~myname/CPAN cpan> reload index cpan> install WiKicker cpan> exit
ここでローカル CPAN サーバを file:/// 等で指定すると、そこから読みとったファイルは ~/.cpan/sources/ 以下にコピーされないので一箇所にまとめることができないので注意 (かなりはまった)。
これが終わると、WiKicker とそれに必要なファイルが ~/.cpan/sources にたまる。
これを適宜アーカイブして保存する。
@ オフラインでインストールする
別の環境で例えば /usr/local/perl-5.8.8 にインストールされた Perl に WiKicker をオフラインでインストールするとする。
先の工程で作成したファイルセットが /tmp/CPAN においてあるものとする。
/usr/local/perl-5.8.8/bin/perl -MCPAN -e shell # 初期化でオフラインのため CPAN ミラーの選択ができずに URL の入力を # 求められたところで file:///tmp/CPAN を指定 cpan> install LWP cpan> install CPAN::Site cpan> exit
まずは以上で CPAN::Site が入るで、CPAN::Site で shell を起動しなおす。
/usr/local/perl-5.8.8/bin/perl -MCPAN::Site -e shell cpan> install WiKicker cpan> exit
これで /tmp/CPAN から芋蔓式に WiKicker がインストールされる。
@ ポイント
Debian のパッケージリポジトリなどとは違って、CPAN は基本的に「一つのリポジトリおよびそのミラー」という概念しかないようである。 したがってモジュールのインデックスファイルも1組しかなく、複数のサイトから異なるモジュールセットを配布するということができるようになっていない。
これに対し、自前パッケージ群用にも1セットインデックスファイルを作って扱えるようにしようというのが CPAN::Site である。
これを用いると「もう一つのリポジトリ」を扱えるようになるが、逆にいうと利用する場合は CPAN::Site をインストールしなければならないということでもある。
- 野良パッケージと依存 Perl モジュールのインストールセット を CPA... (2006-02-12)
- WiKicker の Makefile.PL を Module::Inst... (2006-02-10)
- 最新の Module::Install は Perl 5.005_03 ステ? (2006-04-29)
- Perlプログラムのコードカバレッジ解析 (2004-06-03)
- [ Perl ] PDL 2.4.1 から eigens が固有ベクトルを... (2004-03-05)
2006年2月12日 (日)
■ 野良パッケージと依存 Perl モジュールのインストールセット を CPAN::Mini::Inject で

前回は CPAN::Site を用いたオフライン用インストールセットを作成した。
今回は空の CPAN のミラーを作り、そこに野良パッケージを突っ込んで使用する形でインストールセットを作成してみる。
~/perl-5.8.8 以下にクリーンな Perl v5.8.8 をインストールしてインストールセットを作成していく。
@ CPAN::Mini::Inject をインストールする (オンライン)
perl -MCPAN -e shell cpan> install CPAN::Mini::Inject cpan> exit
CPAN::Mini::Inject は、インストールセットには必要ない。 ~/perl-5.8.8 にはインストールせずに、普段使っているほうにインストールしておく。
@ インストールしたい野良パッケージ用のローカル CPAN サーバを作成する (オンライン)
以下スクリプト例(エラー処理などは省略)
#!/usr/bin/perl -w
use strict;
use File::Path;
use CPAN::Mini;
use CPAN::Mini::Inject;
my $remote = 'ftp://ftp.dti.ad.jp/pub/lang/CPAN/';
my $local = '/home/myname/public_html/CPAN';
my $repository = '/home/myname/repository';
mkpath([$local, $repository], 1, 0755);
# module_filters で全てのモジュールを対象外にして、空の CPAN ミラーを作る
CPAN::Mini->update_mirror(remote => $remote,
local => $local,
diremode => 0755,
trace => 1,
module_filters => [ qr/./ ]);
my $injector = CPAN::Mini::Inject->new;
$injector->{config}{remote} = $remote;
$injector->{config}{local} = $local;
$injector->{config}{repository} = $repository;
$injector->{config}{diremode} = 0755;
# CPAN::Mini::Inject リポジトリに追加したあと、
# CPAN ミラーへ 注入
$injector->add(repository => $repository,
module => 'WiKicker',
authorid => 'NANEY',
version => '0.xx',
file => 'WiKicker-0.xx.tar.gz')
->inject;
これで、~/public_html/CPAN に野良パッケージの追加された CPAN ミラーが作成される。
@ WiKicker と依存するモジュールをインストールする (オンライン)
rm -rf ~/.cpan ~/perl-5.8.8/bin/perl -MCPAN -e shell cpan> o conf urllist pop cpan> o conf urllist push http://http://localhost/CPAN cpan> reload index cpan> o conf urllist push ftp://ftp.dti.ad.jp/pub/lang/CPAN/ cpan> install WiKicker cpan> exit
ここでローカル CPAN サーバを file:/// 等で指定すると、そこから読みとったファイルは ~/.cpan/sources/ 以下にコピーされないので一箇所にまとめることができないので注意。
またCPAN ではモジュールインデックスファイルは1組しか持てないようで、初期設定のままだと野良パッケージを含む CPAN ミラーのインデックスファイルが使われない。 そのため一旦 urllist を空にした後、 自分の CPAN ミラーを指定しインデックスファイルをロードする。 その後にソースパッケージを取得するセカンダリとして通常の CPAN (ミラー)を指定するようにしている。
これが終わると、WiKicker とそれに必要なファイルが ~/.cpan/sources にたまる。
これを適宜アーカイブして保存する。
@ オフラインでインストールする
別の環境で例えば /usr/local/perl-5.8.8 にインストールされた Perl に WiKicker をオフラインでインストールするとする。
先の工程で作成したファイルセットが /tmp/CPAN においてあるものとする。
/usr/local/perl-5.8.8/bin/perl -MCPAN -e shell # 初期化でオフラインのため CPAN ミラーの選択ができずに URL の入力を # 求められたところで file:///tmp/CPAN を指定 cpan> install WiKicker cpan> exit
これで /tmp/CPAN から芋蔓式に WiKicker がインストールされる。
@ ポイント
CPAN::Site を利用して構築した場合は、インストール時にも CPAN::Site が必要だが、こちらはインストールセットの利用には CPAN.pm だけで良いというのが利点。
今回は CPAN::Mini で空の CPAN ミラーを作成し野良パッケージを追加した。
ここで最初から CPAN の最新パッケージの全ミラーを CPAN::Mini で作成し、これに野良パッケージを追加してインストールセットを作ってしまうという方法もある。 この場合は後で必要に応じてミラーからパッケージを入れられるというメリットがあるかわりに、ミラー作成のコストがかかるというデメリットがある。
- 野良パッケージと依存 Perl モジュールのインストールセット をCPAN... (2006-02-11)
- WiKicker の Makefile.PL を Module::Inst... (2006-02-10)
- ActivePerl で Ming (2005-02-23)
- CPAN のPerl モジュールを RPM パッケージ化する (2003-04-22)
- SVN::Webインストール失敗 (2006-02-17)
2006年2月17日 (金)
■ SVN::Webインストール失敗

社内サーバ上の Subversion リポジトリを気軽に閲覧できるように、以前から試そうと思っていた SVN::Web をインストールしてみる。
しかし Subversion の Perl バインディングである SVN::Core は、Subversion パッケージに同梱されていて独立していないのか。 Subversion は Red Hat Linux 8.0 へ RPM パッケージで入れているのだが、SVN::Web の方は /usr/local/perl-5.8.8 以下にインストールした Perl v5.8.8 上へ入れようと思っていたので、はたと困る。
--with-perl5=/usr/local/perl-5.8.8/bin/perl
で configure して、Perl モジュールだけインストールしてみたけれどうまく動かず。
素直に Red Hat Linux 8.0 に標準で入っている Perl v5.8.0 に入れるかなぁ。
- CPAN のPerl モジュールを RPM パッケージ化する (2003-04-22)
- 野良パッケージと依存 Perl モジュールのインストールセット を CPA... (2006-02-12)
- 野良パッケージと依存 Perl モジュールのインストールセット をCPAN... (2006-02-11)
- Red Hat Linux 8.0 Box に Subversion (2004-03-04)
- ActivePerl で Ming (2005-02-23)
2006年7月8日 (土)
■ Perl v5.8.8 の CGI.pm の PATH_INFO 処理の問題にぶつかる

手元の WiKicker (や DiKicker) で、「C++」という文字列を含む URI にアクセスしたらエラー。
Nested quantifiers in regex; marked by <-- HERE in m//C++ <-- HERE .html$/ at (eval 27) line 7.
正規表現の一部として使う時には \Q...\E していたと思ったが抜けがあったか。 とコードをチェックしてみたが、それっぽいところなし。 そもそも、Perl 5.005_03 だと問題おきていないし。
確認したら CGI.pm の url() の中でのエラーだった。 quotemeta されていない。
Perl v5.8.8 に含まれている CGI.pm 3.15 で問題を確認。3.17 までは駄目で、3.19 以降だと \Q...\E するように修正されている (3.18 は CPAN にないので不明)。
標準 Perl ライブラリのバグを踏んだか……。 標準 Perl ライブラリのアップグレードはなにかと面倒なので、システム要件にはしたくはないんだよねぇ。
- Time::Local::gmtime の範囲チェック (2003-12-23)
- 最新の Module::Install は Perl 5.005_03 ステ? (2006-04-29)
- WiKicker に JSON でのページ出力機能を追加 (2007-04-03)
- Windows 上での Apache 2.0.53 では PATH_INF... (2005-04-10)
- [ WiKicker ] URI抽出正規表現修正 (2004-07-24)
2006年12月15日 (金)
■ Perl テストスクリプトの中で標準エラー出力を一時的に止める

make test で実行するテストスクリプトの中で、標準エラー出力を止めたい場合がある (わざとエラーを起こす時など)。
Perl v5.8.8 の ExtUtils/MM_Unix.pm を参考に
{
local *STDERR_COPY;
my $duped = 0;
$duped = 1 if open(STDERR_COPY, '>&STDERR');
open(STDERR, '> ' . File::Spec->devnull()) if $duped;
my $result = `$command`;
my $status = $?;
open(STDERR, '>&STDERR_COPY') if $duped;
}
warn "This message is printed to STDERR\n";
としてみた。 Linux と Win32 ではとりあえずうまくいって動いている。
- ActivePerl で Ming (2005-02-23)
- ColdSync (2004-05-05)
- wxPerl で daemon モニタ (2005-03-11)
- 21:00 Xalan-Java + Bean Scripting Fra... (2001-11-27)
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
2008年5月28日 (水)
■ 今日のさえずり - 100g 減る前にアタック買いだめ

@ 2008年05月26日
- 09:28 ヨドバシカメラの開店待ち。L:秋葉原[mb]
- 09:30 オープン。[mb]
- 09:40 デジカメプリントオーダー完了。[mb]
- 22:36 PC2M がプライベートネットワークを晒してしまうことに気付いたので潰しておいた。
- 23:38 pdumpfs しかけた。風呂。
@ 2008年05月27日
- 09:43 めざマガ GET。L:秋葉原[mb]
- 09:47 キャラメル マキアート To Go[mb]
- 11:49 DataGridView の列幅 AutoSizeMode を AllCells にするのをやめたら劇的にはやくなった。
- 16:17 久しぶりに Todoist にログイン。
- 20:27 ヨドバシカメラ 906i の予約始まってる。L:秋葉原[mb]
- 22:10 SH906i は Bluetooth ワイヤレスキーボードが使えるのか。
@ 2008年05月28日
- 12:18 イトーヨーカドー大井町店で刑務所作業製品の「キャピック展」展示即売会。今日から。[mb]
- 12:26 ここ最近 P3 起動していると途中でタイムラインが取れなくなる。
- 12:28 今の状況だと MovaTwitter 共有ログ表示モード + AutoPagerize が過去ログ見るのに一番快適。
- 12:30 @lynmock Twitter API 変ですね。間隔3分にしてみていたんですがそれでも駄目でした。[mb]
- 16:59 Google ドキュメントから「ドキュメントのメール送信」したら、メッセージの改行が全部とっぱらわれてた。[mb]
- 19:30 そそくさと優先席に座るデブを見ると「だから太るんだよ」と思ってしまう。[mb]
- 19:48 SO905iCS ソフトウェア更新またきたか。[mb]
- 19:54 100g 減る前にアタック買いだめしておいた。[mb]
- 23:46 [B!] FON_APからFON_FREE_INTERNETへ表示変更のお知らせ | FON Blog http://tinyurl.com/6dv2qa
- 23:56 久しぶりに sid のアップデートかけてる。Perl v5.8.8 から Perl v5.10.0 になるのか。
- 25:36 sid のアップデートようやく終わった。寝る。
- 今日のさえずり - ささやかな気持ちDES (2008-11-07)
- 今日のさえずり - ホームレスグーチョコランタン (2008-10-27)
- 今日のさえずり - 昭和通り側に鯛焼き屋あり (2008-09-30)
- 今日のさえずり - Twitter ずっと見てたら仕事の効率落ちるんじゃない? (2008-10-31)
- SO905iCS ファーストインプレッション (2008-02-16)
スポンサード リンク
■よく検索されるキーワード
提案書(75) torrent(69) perl(61) 書き方(45) 充電式カイロ(43) windows(38) x31(36) 使い方(32) linux(32) cvs(25) アジェンダとは(25) usb(25) thinkpad(23) 静電気(21) サンプル(20) 口コミ(20) ヨドバシ(20) アジェンダ(20) 画像(19) debian(19) ubuntu(19) mp980(18) f-01a(18) 手帳(17) tc-1(17) 秋葉原(16) ssh(16) subversion(16) グッズ(16) a6(15) 壁紙(15) ほぼ日手帳(15) c#(14) ダイソー(14) svn(14) 交換(14) インストール(13) 加湿器(13) firefox(12) ノート(12) 無印(12) 日本語(12) wiki(12) ganttproject(12) デロンギ(11) 方眼(11) ヨドバシカメラ(11) デザイン(11) nikkor(11) 設定(11) 作り方(11) dropbox(11) af(10) terastation(10) memcached(10) レビュー(10) カバー(10) カイロ(10) 2009(10) 除去(10) nikon(10) tortoisesvn(10) クラリチン(9) ガントチャート(9) 動画(9) ポメラ(9) ご査収(9) rcs(9) モジュール(9) n-01a(9) フィルム(9) 写真(9) システム手帳(9) edition(9) porter(9) xp(8) imap(8) 4c(8) docomo(8) ミニ6穴(8)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザインProcess Time: 14.629412s / load averages: 0.40, 0.66, 0.69
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク