perl環境の移行について
サーバのリプレースとかで、新環境にモジュールをどうやって入れるか?
ちょっと前までは、自分のサーバぐらい毎回0から入れなおす!と考えていたんですが、、、人様の環境となるとちょっとなぁ〜ということで少し調べた。
○現環境の情報ダンプ
1.bundle モジュールを使う
2.perllocalの情報を使う
bundleモジュールは、cpan で使う方法は検索するとすぐHITするので、cpanpで。
# cpanp
CPAN Terminal> b[MSG] No '/root/.cpanplus/custom-sources' dir, skipping custom sources
[MSG] No '/root/.cpanplus/custom-sources' dir, skipping custom sources
[MSG] No '/root/.cpanplus/custom-sources' dir, skipping custom sources
Wrote autobundle to '/root/.cpanplus/5.10.0/dist/autobundle/Snapshot_2009_04_09_00.pm'CPAN Terminal> quit
# more /root/.cpanplus/5.10.0/dist/autobundle/Snapshot_2009_04_09_00.pm
package Snapshot_2009_04_09_00$VERSION = '0.01';
1;
__END__
=head1 NAME
Snapshot_2009_04_09_00 - Snapshot of your installation at Thu Apr 9 23:29:45 2009
=head1 SYNOPSIS
perl -MCPANPLUS -e "install Snapshot_2009_04_09_00"
=head1 CONTENTS
APR 0.009000
で、このSnapshotファイルを新環境で動かせば、基本的にはどうにかなるのですがインストールがアルファベット順になるので、面倒らしいです。(依存関係とか)
ざざっと他の人のblogを読んでいくと、2のperllocalを使う場合が今のところよいらしい。
$ perldoc perllocalUser Contributed Perl Documentation PERLLOCAL(1)
Wed Mar 11 01:53:03 2009: "Module" Term::ReadLine
o "installed into: /usr/local/lib/perl5/site_perl/5.10.0"
o "LINKTYPE: dynamic"
o "VERSION: 1.0302"
o "EXE_FILES: "
Wed Mar 11 02:01:36 2009: "Module" Scope::Guard
...
と、今までインストールしたログとなります。
なので、こっちの情報を使って上から install していけば基本的にはよい。
後は、実際に実行してからどういう不満がでるか?
$ /usr/local/bin/perldoc -tT perllocal |grep '"Module"'
Wed Mar 11 01:53:03 2009: "Module" Term::ReadLine
Wed Mar 11 02:01:36 2009: "Module" Scope::Guard
Wed Mar 11 02:03:03 2009: "Module" Params::Util
...