これまで試したことがあるのは、下記の通りです。
1. root 権限から cpan コマンドでインストールをする
2. cpan コマンドで $HOME ディレクトリに自分で使うモジュールをインストールする
3. パッケージ管理システムからインストールする
しかし、上記の方法は下記のような短所があります。
1. の方法は、依存関係が壊れたのを修復したり、アンインストールが困難。
2. インストールできないモジュールがあったり、管理が煩雑になる。また、影響範囲は限定的になるが、1.の問題解決にはならない。
3. パッケージ管理システムから外れたモジュールをインストールすると、CPAN やパッケージ管理システムの依存関係が壊れてしまう。
特に Plagger をインストールした日には、目も当てられないことになりました…。
特に複数のユーザーで利用する場合、モジュールの依存関係が壊れてしまい、モジュールを利用できなくなる最悪な事態は避けたいです。
また、OS や Perl 本体のアップグレードによる CPAN モジュールの移行方法も知りたいです。
2.の手法ですがlocal::libを使った非rootでのCPAN環境構築 - hide-k.net#blogを参考にlocal::libを使うと煩雑にならずに管理が楽です。
インストールできないCPANモジュールも、だいたいOpenSSLなどのライブラリパスの指定でこけているのが数個あるぐらいなのでCPANインストール時にライブラリパスを指定する事で回避できたりします。
root 権限があれば、システム用の Perl とユーザー用の Perl を分けてしまうのも、ひとつの考え方かなと思ったりもします。
これ、色々入れる場合は結構おすすめの方法です。
404 Blog Not Found:perl - Mac OS X - perlをDIYする
Perl が入っているOSの場合、システムコマンド自体が Perl のモジュールを使っている場合もあるので
うかつにバージョンアップすると面倒なことになる場合があるからです。
1. の方法は、依存関係が壊れたのを修復したり、アンインストールが困難
3. パッケージ管理システムから外れたモジュールをインストールする
これに関しては、RPMS ベースの管理システムであれば、cpan2rpm を使うことで解決できます。
Perlモジュールパッケージ管理システム導入(cpan2rpm) - Fedoraで自宅サーバー構築
OS や Perl 本体のアップグレードによる CPAN モジュールの移行方法
PurePerl なモジュールであればファイルをコピーするだけですむんですが、XS を使用する等
他のライブラリに依存したモジュールに関しては、再インストールしかないです。
基本 C/C++ 等で書かれた分は仕方がないです。
>Debian や FreeBSd でもこういうのがあるといいですね。
FreeBSD は ports で大抵カバーできてるはずだが。
無いものは自分でローカルの ports 追加してもいいし。
FreeBSD は ports からインストールをしています。
あるモジュール A をインストールした後に、モジュール A が依存しているモジュール B が更新されて、動かなくなってしまうというのを経験したことがあります。
ports を削除して再インストールをしてみたり試行錯誤が大変でした。