nDiki : CPAN::Mini::Inject
スポンサード リンク
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)
- CPAN のPerl モジュールを RPM パッケージ化する (2003-04-22)
- WiKicker 0.29 リリース - ビルドまわりの改良など (2006-02-13)
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)
- CPAN のPerl モジュールを RPM パッケージ化する (2003-04-22)
- ActivePerl で Ming (2005-02-23)
- WiKicker に JSON でのページ出力機能を追加 (2007-04-03)
■よく検索されるキーワード
torrent(62) windows(62) perl(58) 提案書(48) 書き方(47) linux(44) アジェンダ(32) usb(29) 動画(27) x31(27) 使い方(27) 手帳(25) ssh(25) mp980(23) thinkpad(22) svn(21) ほぼ日手帳(21) java(21) インストール(20) 画像(20) debian(20) ドラマ(16) subversion(16) cvs(15) ubuntu(15) 設定(15) 秋葉原(14) gmail(13) ヨドバシ(13) 無料動画(13) tortoisesvn(13) dropbox(13) c#(12) .net(12) 壁紙(12) make(12) gnu(12) ノート(11) ヨドバシカメラ(11) a6(11) tc-1(11) ganttproject(11) 冷蔵庫(11) 宮根誠司(11) porter(11) 無印(10) フリー(10) 筆まめ(10) tar(10) 充電式カイロ(10) 方眼(9) パスワード(9) 日本語(9) visual(9) cwrsync(9) wiki(9) gimp(9) フォーマット(9) firefox(8) ボールペン(8) nullpointerexception(8) grub(8) skk(8) ppm(8) ご査収(8) ダウンロード(8) ケース(8) サンプル(8) 提案書の書き方(8) 無料(8) 無印良品(8) google(8) 2008(8) gtd(8) 3.5(8) framework(8) ツール(8) cgi(7) mew(7) バッグインバッグ(7)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザイン ビックカメラProcess Time: 0.049526s / load averages: 0.10, 0.19, 0.16
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク