nDiki : ビルド
ビルド - build
ビルドの種類
- first build
- weekly build
- biweekly build
- daily build
- nightly build
- morningly build
- private build
- milestone build
- latest build
- stable build
- candidate build
- freeze build
- release build
- final build
- gold build
スポンサード リンク
Related term
2006年4月15日 (土)
■ sid の CinePaint がプラグイン読み込みでエラー

10枚の「ゴッサム・シティ東京 」を見て HDR イメージに興味を持った。
で早速日中に、手持ちのデジカメで段階露出をした写真を取りためて、家に帰って HDRI 作成に入る。 Linux だと CinePaint あたりが王道か。 CinePaint 0.21 には
が最初から入っており、段階露出で撮影したデジタル画像から HDR イメージを作成できるのである。
が。
Debian GNU/Linux sid で cinepaint 0.21-1 をインストールして起動してみると、
/usr/lib/cinepaint/0.20-1/plug-ins/bracketing_to_hdr: symbol lookup error: /usr/lib/libcinepaint.so.0: undefined symbol: gtk_marshal_NONE__NONE wire_read: unexpected EOF (plug-in crashed?)
と出てしまうではないが。CinePaint 自体は起動するのだが、プラグインが読みこみ失敗してしまっているようだ。全てのプラグインの読み込みに失敗している様子である。
環境依存かと思いソースパッケージからビルドし直してみてもやっぱり同様。
そんな。
- CinePaint で HDR イメージを作れるようになった (2006-04-16)
- flickrfs で Flickr をマウントして写真をコピーする (2008-02-21)
- NSIS が再び Linux でコンパイルできるように (2005-01-08)
- ActivePerl で Ming (2005-02-23)
- Debian GNU/Linux で Dropbox (2008-09-16)
2006年5月31日 (水)
■ Debian GNU/Linux に Hyper Estraier 1.2.7 を野良インストールする

DiKicker を使って社内 Blog を始めてから早いものでもう半月ほど経ち、記事もそれなりにたまってきた。
DiKicker にはキーワードによる串刺し表示機能があるものの、検索機能は自前で持っていないため任意の文字列で検索をすることができない。 これだと過去記事が活用されなくなってしまう。
ということでそろそろ検索エンジンをセットアップすることにした。
同じサーバで Namazu をインストールして過去メールの検索に使用しているが、今回は Hyper Estraier を使ってみることにした。
が選択理由。 今回は自分の社内 Blog だけでなく、自分の立てている Wiki (WiKicker) や他人が立てている PukiWiki、静的な HTML ページなどもまとめて検索できるようにしたいという考えがある。 このため複数のサーバに分散したコンテンツを、クローラでインデックス生成できるというのは魅力的である。
P2P連携機能の方は技術的に面白そうということで。
@ Debian GNU/Linux でのテスト
まずは自分のノート PC 上にセットアップして、いろいろ試してみることにする。 さっそく apt-get で Hyper Estraier をパッケージインストール。
estmaster でノードマスタを起動し、ユーザ設定とノード作成を行う。
で次に Web クローラ estwaver の設定をして、ノート PC ローカルの Web サーバのコンテンツをインデックス化してみる。
で、検索。
あれ?
検索結果件数が 0。よくみるとインデックスされている文書が 0 だ。 確かに estwaver がモリモリ fetch して登録しているようなのだが……。
しこたま悩んだ末、Debian パッケージの Hyper Estraier は 1.2.5 でこのバージョンの estmaster は ノードサーバへの登録機能がまだないということにようやく気がついた。
とほほ。
@ ソースからインストール
ということなので、Hyper Estraier 1.2.7 をソースからインストールすることにした。 Debian パッケージの QDBM だと古いので、こちらもあわせてインストール。
今回はパッケージ化せずに /usr/local/hyperestraier-1.2.7 に、とりまとめてインストールすることにしておく。
@ QDBM
wget http://qdbm.sourceforge.net/qdbm-1.8.58.tar.gz tar zxvf qdbm-1.8.58.tar.gz cd qdbm-1.8.58 ./configure --enable-zlib --prefix=/usr/local/hyperestraier-1.2.7 make make check make install
@ Hyper Estraier
wget http://hyperestraier.sourceforge.net/hyperestraier-1.2.7.tar.gz tar zxvf hyperestraier-1.2.7.tar.gz cd hyperestraier-1.2.7 PKG_CONFIG_PATH=/usr/local/hyperestraier-1.2.7/lib/pkgconfig ./configure --prefix=/usr/local/hyperestraier-1.2.7 make make check
インストール完了。
最初インストールしたものを実行すると落ちて何だろうと思っていた。 これについては deb パッケージでインストールした関連パッケージを purge してビルドし直しインストールしたら問題なく動くようになった。
メデタシメデタシ。
明日は会社のサーバでも設定しよう。
- Hyper Estraier で社内 Web コンテンツ検索 (2006-06-01)
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
- Linux で使えるデスクトップ検索ツール Beagle でローカルファイ... (2006-08-08)
- はいぱー日記システムで日記を開始 (2001-05-11)
- メールボックスを Gmail に集約 (2007-08-08)
2006年6月1日 (木)
■ Hyper Estraier で社内 Web コンテンツ検索

昨日の自分のノート PC で Hyper Estraier の試用を踏まえて、社内のサーバに Hyper Estraier を設置する。
@ インストール
いまだ Red Hat Linux 8.0 であるサーバに、昨日と同様に Hyper Estraier 1.2.7 を /usr/local/hyperestraier-1.2.7 以下にインストール。
この環境では ./configure 時に iconv が見つからないため、最初に libiconv 1.9.2 を /usr/local/hyperestraier-1.2.7 に入れ、続けて QDBM、Hyper Estraier の順にインストール。
estwaver + estmaster でクローリング + 文書登録も問題なく完了。
@ search_ui がうまく動かない。
で検索をしようと http://ホスト:1978/node/ノード名/search_ui にアクセスするも、検索フォームを含め何も表示されない。あれ? 他の管理ページは問題なく表示されるのに search_ui だけ駄目。
GNU Wget だときちんと HTML を GET できるのだけれど、Firefox や Internet Explorer からだと駄目である。
いろいろビルドしなおしてみたけれどやっぱり駄目なので、今回は結局 estmaster をやめて CGI プログラム版の UI を使うことにした。 こちらだとクローリング中は検索ができなくなってしまうけれど、夜中に cron で回すから別にかまわないか。
@ インデックスの方針
以下のような感じでクロールし、登録することにした。
- 社内メイン Wiki、自分の社内 Blog、公開 Web サイトのトップページをクロールの種文書とする。
- それと社内メイン Wiki の更新情報ページも種文書とする。
- 社内のサーバ、および公開 Web サイトのみクロールするように allowrx、denyrx を設定。
- Wiki の編集ページ等をクロールしないように denyrx を設定。
- 1日1回深夜に cron でインデックスを更新。
- revisit は3日に設定。
- いくつかの種文書は -revcont 付きで estwaver を実行しても毎回巡回して欲しいのだけれど、それはいまのところできないようだ。
特定の Wiki や Blog 内のみを検索したい時は、検索インタフェースの方で URL を指定絞り込めば良いので、それほど規模も大きくないし全部ひとまとめにインデックス化することにした。
後は使いながら微調整していくこととしよう。
- Debian GNU/Linux に Hyper Estraier 1.2... (2006-05-31)
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
- Linux で使えるデスクトップ検索ツール Beagle でローカルファイ... (2006-08-08)
- はいぱー日記システムで日記を開始 (2001-05-11)
- Debian に RSS リーダ「フレッシュリーダー」をインストール (2006-03-06)
2006年7月3日 (月)
■ 自前 PPM リポジトリの管理

Windows Perl アプリケーション用に PPM リポジトリを久しぶりに整理。
自分が使用する PPM パッケージは以下の理由から、以前より基本的に自前でビルド/保存し PPM リポジトリをローカルに作成するようにしている。
- 後でオフラインでインストールできるようにする。
- 「公開リポジトリが無くなった」あるいは「公開リポジトリに欲しいパッケージが無くなった」時に困らないようにする。
- 動作確認された組み合わせでの PPM パッケージセットを作成・保持できるようにする。
- ライセンス的にクリアなものだけを含むリポジトリを用意する。 (芋蔓式インストールで、ライセンス的にクリアでないパッケージが入ってしまうのを防ぐ)。
@ 手元では以下のように管理
PPM
|-- <category>
| `-- 8xx
| |-- <projects A> [ 公開 / export ]
| | |-- module1.ppd -> (A)
| | |-- module1.tar.gz -> (B)
| | `-- ...
| `-- ...
`-- pool
|-- module1-x.yy
| |-- module1.x.yy.tar.gz
| |-- some documents...
| `-- build817
| |-- module1.ppd (A)
| `-- module1.tar.gz (B)
`-- ...
@ pool
- pool ディレクトリに「[モジュール]-[バージョン]」ディレクトリを作成する。同じバージョンでも、異なるバージョンは両方とも別々にキープしておく。
- その下にソース tarball を置く。
- ライセンス情報ファイルなども置く (touch Perl-License 等空のファイルを作成しておく)
- PPM パッケージを PPM::Make で作成し、その時に使用した ActivePerl のビルド番号別にサブディレクトリを作って .tar.gz と .ppd を置く。
@ リポジトリ
- ActivePerl のビルド番号別にリポジトリを作成する。基本的には 6xx 系、8xx 系それぞれの中ではバイナリ互換性がある (PAR などは、ビルド番号に1対1でしか互換性がない)。
- 必要に応じてカテゴリ別サブディレクトリを用意 (アクセス制限の都合などにより)
- 必要に応じてプロジェクト毎にサブディレクトリを用意 (プロジェクト毎にパッケージセットを作るため)
- リポジトリディレクトリからは pool 内の .ppd、.tar.gz へシンボリックリンクを張る。欲しいモジュールのバージョン、ビルド番号を選んでリンクする。
@ 公開
- Samba、Apache などで、PPM ディレクトリ全部あるいは特定のリポジトリ部分を公開する。
- 必要なら export して別サーバに置く。rsync や cp の -L オプションでシンボリックリンクを実ファイルに置き換えてアーカイブを作成する。
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- ActivePerl で Ming (2005-02-23)
- XAMPP で WiKicker を動かしてみた。PPM インストール OK。 (2007-02-09)
- rsync の --copy-unsafe-links (2004-08-21)
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
2006年7月29日 (土)
■ Debian GNU/Linux sid 環境を新 HDD へ

朝から ThinkPad X31 の HDD 新しく入れ替えて Debian GNU/Linux sid のインストールを開始。
@ Debian GNU/Linux のインストール
今日は sarge のネットワークインストール CD イメージからブートしてインストール。 今回はブートドライブにできる「ThinkPad USB ポータブルCD-ROMドライブ」があり、またこのイメージで起動して e1000 が認識できるので楽勝である。
(第1回目は USB FDD + PC カード NIC でインストール、第2回目 は HDD 上のインストーラから GRUB からの起動によるインストールだった)
最低限のものを入れたらすぐ sid へアップグレード。
@ 旧 HDD からのコピー
ヤバイ状態の旧 HDD を USB 外付け HDD ケースに詰めて
- /home 全部
- /usr/local で必要なもの
- 参照用に /etc の複製
- /var/www、/var/spool
を新しい HDD にコピー。
次に環境の復旧。 以下備忘録。
@ MADWIFI
以前作った Linux kernel 2.6.15 deb パッケージをインストールした後 module-assistant で madwifi をインストールするも、ビルドした GCC のバージョンが違ってロードできず。 kernel は GCC 4.0 の時にビルドしたもので、madwifi は現在のバージョンである GCC 4.1 によるビルドであることが問題。
まずは前にビルドした 2.6.15 のソースディレクトリでカーネルパッケージを GCC 4.1 で作りなおしてインストールし、あらためて module-assistant。
module-assistant prepare module-assistant auto-install madwifi
で /etc/network/interfaces を書き戻す。
@ SMTP サーバを Postfix に
ここずっと使っていた qmail をこの機会にやめることにした。 Postfix へ。
全体の設定はインストーラに従って設定。
個人設定は、
~/.qmail に
| preline /usr/bin/procmail
として procmail を使っていたので、~/.forward を作って同様に procmail に流すようにする。
"|IFS='' && exec /usr/bin/procmail -f- || exit 75 #naney"
~/.procmailrc は以前のまま。ClamAV と bsfilter でふるいにかけた後、Maildir へ。
@ bsfilter は deb のものに
以前入れた時は deb が古かったので /usr/local に自前でインストールした。 まずはこれを古い HDD から戻して動作確認後 deb のものに切り替え。
.mew.el の中も
(load "/usr/share/doc/bsfilter/examples/mua/mew4/mew.el")
に変更。
@ Samba
/etc/samba/smb.conf を書き戻す。smbpasswd でパスワード再設定。
@ X
とりあえずインストール時の設定で xorg.conf を作る。
Load "freetype"
をコメントアウトして、
Load "xtt"
に変更。
@ KDE
sid は現在 3.5.3 と 3.5.4 混在状態になっているため、依存関係の問題で簡単にはインストールできずてこずった。 kdebase-data と kdelibs-data の 3.5.3 を http://snapshot.debian.net/ からとってきて hold して 3.5.3 系 KDE として各種パッケージをインストール。
@ フレッシュリーダー
- libapache2-mod-suphp php5-cli をインストール
- /var/www/freshreader、/etc/apache2/sites-available/freshreader を戻す
- a2ensite freshreader
- /etc/init.d/apache2 reload
- /etc/hosts に freshreader を追加
@ cpufreqd
@ Skype
skype-beta-1.3.0.30-1_i386.deb をインストール。
@ cron
一般ユーザ naney の crontab ファイルを再登録。
@ Perl モジュール
足りないと気がついた時点で順次インストール。
@ autofs + smbfs (2006年8月3日)
/etc/auto.master、/etc/auto.misc を書き戻して /etc/init.d/autofs restart。
@ mt-daapd (2006年8月22日)
deb パッケージを公式サイトからダウンロードし、/etc/mt-daapd.conf を書き戻して /etc/init.d/mt-daapd restart
- 納品前日なのに /var が壊れた! HDDからのブートで Debian ... (2005-09-27)
- Debian Linux kernel 2.6.23 をビルドする。 (2007-12-23)
- Linux ノート PCを iTunes サーバにしてみる (2006-01-21)
- CD-R ドライブが使えない (2006-07-27)
- [ Debian ] ThinkPad X31 にインストール (2003-12-03)
2006年8月2日 (水)
■ ThinkPad X31 で fglrx が使えない

現在 ThinkPad X31 で X.Org X server 7.0.22 を使っているのだが、サスペンド/レジュームがうまく使えていない。
ATI の fglrx ドライバを入れたらもしかしたらうまくいくかなと思いチャレンジ。
module-assitant prepare module-assistant auto-install fglrx
コンパイルエラー。
Linux kernel 2.6.17 だと fglrx に パッチを当てる必要があるらしい。 ついでに Linux kernel の方もいくつか組み込みではなくモジュールしておかなければならないものがあるらしいので、全部再コンパイルする。
まずは fglrx-kernel-src をインストール。 でいつも通り /usr/local/src/linux 以下で作業。/usr/local/src/linux-source-2.6.17 以下に前回ビルドしたソースツリーがある。
tar jxvf /usr/src/fglrx.tar.bz2 emacs modules/fglrx/firegl_public.c # 一部修正 cd linux-source-2.6.17/ MODULE_LOC=/usr/local/src/linux/modules fakeroot make-kpkg --revision=sebastian.1.1 modules_image cd .. dpkg --install linux-image-2.6.17_sebastian.1.1_i386.deb dpkg --install fglrx-kernel-2.6.17_8.24.8-1+sebastian.1.0_i386.deb
で再起動。で fglrx をロードしてみる。
WARNING: Error inserting fglrx (/lib/modules/2.6.17/misc/fglrx.ko): No such device
駄目。drm、radeon、fb がロードされていると駄目らしいのでアンロードしてあるのだがそれでも駄目である。
引き続き調査。
- Debian Linux kernel 2.6.23 をビルドする。 (2007-12-23)
- ThinkPad X31 と Linux kernel 2.6 (2006-02-22)
- amaroK で Linux 上の iTunes 音楽データを聞く (2006-01-22)
- ThinkPad X31のファンを止めたい (2004-05-09)
- Debian kernel パッケージ構築 (2004-05-09)
2006年8月8日 (火)
■ Linux で使えるデスクトップ検索ツール Beagle でローカルファイルを検索

Windows だと Google Desktop でローカルファイルの検索ができるのだが、残念ながら Linux 版はでていない。 そこで Beagle を入れてみることにした。
Beagle はデーモン形式のバックエンドと、検索インタフェースであるフロンエンドに分かれたているデスクトップ検索ツールである。
ファイルシステム上にあるテキストファイルだけでなくメールや、Firefox でアクセスしたページ、OpenOffice.org や Microsoft Office のファイルなどをインデックス化し検索できるようにすることができるらしい。
@ ちなみに今まで
ローカルファイルの検索は
| メール | Mew 4 での検索(with Namazu)。 |
| nDiki 記事 | howm で記事ソースデータを検索 (方法)、あるいは www.naney.org 公開記事を Google で。 |
| メモ | howm。 |
| 開発中のソースコード | Emacs の grep-find でだいたい事足りる。たまに ack。 |
| 仕事のメモ | できるだけ社内 Wiki か社内 Blog に書いておいて Hyper Estraier。 |
| その他 | grep 程度。 |
といった感じかな。
それ以外はだいたいファイルの位置をうろ覚えしているので、何カ所か探せば見つかることが多い。
問題はうろ覚えの場所になかった時。 その時はなかなか見つからない。
そんなファイルを見つけるのが楽になれば、導入効果あり。
@ インストールして試してみる
@ Linux kernel の inotify を有効にする
まずは Linux kernel の設定を確認。inotify が有効になっている方が良いらしい。 この間ビルドした時の .config を見て
CONFIG_INOTIFY=y CONFIG_EXT2_FS_XATTR=y CONFIG_EXT3_FS_XATTR=y
となっていることを確認。
@ /home の extended attributes を有効にする。
/etc/fstab を編集し、
/dev/hda4 /home ext3 defaults 0 2
を
/dev/hda4 /home ext3 defaults,user_xattr 0 2
に変更する。書き換えたら、
mount -o remount /home
でマウントしなおす。
@ Beagle のインストール
@ Beagle を起動
一般ユーザで
beagled
で起動する。停止は
beagle-shutdown
で。
@ Beagle を設定
beagle-settings
で設定 UI を起動し、インデックスに含めたくないディレクトリなどを設定。
@ 検索してみる
beagle-search
で検索 UI を起動し検索してみる。 日本語も OK のようである。
GNOME 環境をほとんどインストールしていなかったので、検索結果からファイルを開けずつまらなかたので gonome-control-center、gnome-panel あたりをインストールして環境設定等をしてみた。
@ Firefox 拡張
xpi ファイルを入れておく。 後は普通に閲覧したページが、Beagle でインデックス化されて検索できるようになる。
設定してしまえば、以前開発して使っていた WWWOFFLE + Namazu よりお手軽である。
@ 感想
デーモンが逐次インデックス化していくので、明示的定期的にインデクサを走らせなくていいというのは楽でいい。
日本語関連がどの程度うまく検索できるのか、検索結果は使いやすい順に出力されるのかが未知数。 しばらく遊んでみて便利かどうか確かめてみたい。
- Linux 母艦ノート PC を使わずに仕事ができるかチャレンジ (2007-08-20)
- Google Desktop Linux 版をインストール (2007-07-02)
- メールボックスを Gmail に集約 (2007-08-08)
- Debian GNU/Linux に Hyper Estraier 1.2... (2006-05-31)
- Hyper Estraier で社内 Web コンテンツ検索 (2006-06-01)
2006年9月13日 (水)
■ Test::WWW::Mechanize で Web アプリケーションをテストファースト開発

テストファースト開発に慣れてしまうと、テストコード無しにプログラムを書くというのは不安でたまらなく感じてくる。
テストが欲しい。安らぎが欲しい。
今開発している WiKicker ベースの Web アプリケーションもだんだん機能が増えてきて、コードを触るのがコワくなってきた。
今回は Basic 認証等もあるので、WWW::Mechanize::CGI ではなくてきちんと deploy してから Test::WWW::Mechanize でテストすることにした。
Test::WWW::Mechanize、使ってみると WWW::Mechanize + Test::More よりテストを書くのも読むのも楽になった。
deploy が必要なリグレッションテストはさすがに t/ の下に入れておくのはどうかと思う。 プロジェクト的にはビルドサーバを用意して、そこで自動的にテストできるような環境を用意するのが良さそうだ。
- Perl CGI プログラムのテストには WWW::Mechanize::... (2006-02-18)
- 一般ユーザで Apache 2.0 を起動する最小限の httpd.conf (2006-07-15)
- SQLite とか DbUnit とか (2005-05-23)
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- XAMPP で WiKicker を動かしてみた。PPM インストール OK。 (2007-02-09)
2006年11月22日 (水)
■ 「プロジェクトマネジメント」はどうやって勉強すれば良いですか?

会社の後輩から問われた。
答えがあればこちらが知りたい。
プロジェクトマネージャには、そういう事を自力で模索し掴みとる能力が必要なのではないか。プロジェクトマネージャは答えの決まっていない問題の解決をしていかなければならないのだから。
もちろん他の人から学ぶというのも重要なので、質問すること自体は悪くない。 ただもう少し自分で考えてみて「○○と△△というのがあり、○○の方が~~で良さそうだと思うのですがどう思いますか?」などと、やるのが良いかと思う。
ちなみに私がどう試行錯誤しているか、何を読んでどう考えたかはココ (nDiki) に書いているから、後輩君なら(反面教師にせよ)見てくれればいいと思う。
ていうか、何か面白いもの見つけてきてドンドン紹介してクレ。
@ とはいえ自分なりに列挙してみる
ソフトウェアプロジェクトマネジメントで、必要なキーワードを思いつくままに挙げてみた。
- やっぱり聞きやすかった大前研一 (2006-10-25)
- ビジネスメールガイドライン案 (2006-05-05)
- トム・デマルコ ゆとりの法則 - 誰も書かなかったプロジェクト管理の誤解 (2004-04-17)
- Linux で使えるデスクトップ検索ツール Beagle でローカルファイ... (2006-08-08)
- ソフトウェアかんばん「見えない化」 (2006-04-10)
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 ファイルを指定する従来の方式に比べてかなり便利そうである。 ということで試用してみた。
まずは
- PAR
- PAR::Repository
- PAR::Repository::Client
- PAR::Repository::Query
- PAR::Dist
- PAR::Packker
あたりをインストールし準備 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
@ 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 リポジトリで集中管理するというのもちょっと魅力的である。
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
- 自前 PPM リポジトリの管理 (2006-07-03)
- ActivePerl で Ming (2005-02-23)
- ActivePerl 5.8.8.820 の PPM では ppd/tar... (2007-02-05)
- XAMPP で WiKicker を動かしてみた。PPM インストール OK。 (2007-02-09)
スポンサード リンク
■よく検索されるキーワード
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)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザイン ビックカメラProcess Time: 0.116508s / load averages: 0.33, 0.18, 0.15
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク