皆さんが採用している CPAN の適切な管理方法を教えてください。


これまで試したことがあるのは、下記の通りです。
1. root 権限から cpan コマンドでインストールをする
2. cpan コマンドで $HOME ディレクトリに自分で使うモジュールをインストールする
3. パッケージ管理システムからインストールする

しかし、上記の方法は下記のような短所があります。

1. の方法は、依存関係が壊れたのを修復したり、アンインストールが困難。
2. インストールできないモジュールがあったり、管理が煩雑になる。また、影響範囲は限定的になるが、1.の問題解決にはならない。
3. パッケージ管理システムから外れたモジュールをインストールすると、CPAN やパッケージ管理システムの依存関係が壊れてしまう。

特に Plagger をインストールした日には、目も当てられないことになりました…。

特に複数のユーザーで利用する場合、モジュールの依存関係が壊れてしまい、モジュールを利用できなくなる最悪な事態は避けたいです。
また、OS や Perl 本体のアップグレードによる CPAN モジュールの移行方法も知りたいです。

回答の条件
  • 1人1回まで
  • 登録:2009/04/06 15:39:53
  • 終了:2009/04/13 11:14:16

ベストアンサー

id:otsune No.1

otsune回答回数35ベストアンサー獲得回数52009/04/07 04:19:42

ポイント35pt

2.の手法ですがlocal::libを使った非rootでのCPAN環境構築 - hide-k.net#blogを参考にlocal::libを使うと煩雑にならずに管理が楽です。

インストールできないCPANモジュールも、だいたいOpenSSLなどのライブラリパスの指定でこけているのが数個あるぐらいなのでCPANインストール時にライブラリパスを指定する事で回避できたりします。

id:littlebangkok

CPAN の管理を CPAN モジュールを利用して、やってしまおうということですね。

root 権限があれば、システム用の Perl とユーザー用の Perl を分けてしまうのも、ひとつの考え方かなと思ったりもします。

まずは、実際に動作をさせて試してみます。

2009/04/07 14:17:29

その他の回答(1件)

id:otsune No.1

otsune回答回数35ベストアンサー獲得回数52009/04/07 04:19:42ここでベストアンサー

ポイント35pt

2.の手法ですがlocal::libを使った非rootでのCPAN環境構築 - hide-k.net#blogを参考にlocal::libを使うと煩雑にならずに管理が楽です。

インストールできないCPANモジュールも、だいたいOpenSSLなどのライブラリパスの指定でこけているのが数個あるぐらいなのでCPANインストール時にライブラリパスを指定する事で回避できたりします。

id:littlebangkok

CPAN の管理を CPAN モジュールを利用して、やってしまおうということですね。

root 権限があれば、システム用の Perl とユーザー用の Perl を分けてしまうのも、ひとつの考え方かなと思ったりもします。

まずは、実際に動作をさせて試してみます。

2009/04/07 14:17:29
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402009/04/07 09:42:26

ポイント35pt

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 を使用する等

他のライブラリに依存したモジュールに関しては、再インストールしかないです。

id:littlebangkok

> XS を使用する等他のライブラリに依存したモジュールに関しては、再インストールしかないです。

これはけっこう不便ですよね…と思う反面、仕方ないのかもしれませんね。

ただ、バッチが動くサーバーだと、どのタイミングでアップデートをすればいいのか、けっこう悩みますね。

> これに関しては、RPMS ベースの管理システムであれば、cpan2rpm を使うことで解決できます。

RPM 系だと、こんな便利なのがあるんですね。

Debian や FreeBSd でもこういうのがあるといいですね。

2009/04/07 14:17:10
  • id:b-wind
    >これはけっこう不便ですよね…と思う反面、仕方ないのかもしれませんね。
    基本 C/C++ 等で書かれた分は仕方がないです。

    >Debian や FreeBSd でもこういうのがあるといいですね。
    FreeBSD は ports で大抵カバーできてるはずだが。
    無いものは自分でローカルの ports 追加してもいいし。
  • id:littlebangkok
    > FreeBSD は ports で大抵カバーできてるはずだが。
    FreeBSD は ports からインストールをしています。
    あるモジュール A をインストールした後に、モジュール A が依存しているモジュール B が更新されて、動かなくなってしまうというのを経験したことがあります。
    ports を削除して再インストールをしてみたり試行錯誤が大変でした。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません