Google Code Prettify

2009年2月1日

CPANでインストールしたモジュールは?

Linux 上で Perl を使う場合、 自前ではビルドせずに大抵ディストロのパッケージ(rpm/deb)を使うのがほとんどである。 CPAN上のモジュールでも対応するディストロの方を使うのが、僕は好みである。 ディストロ側に対応するパッケージが無い場合は、仕方なく cpan コマンドを使ってインストールして使っている。

cpan -i モジュール名

cpan コマンドでインストールしたモジュールをアンインストールしたいとか思っても、いまいち方法が分からなかった。。。

「cpan help」 とかやると、よくわからん help モジュールがインストールされたり、「cpan list」とやっても、list モジュールが、、、以下略。

で、CPANを使うと運用状態が続くと /usr/local 以下が何故だか意味不明な状態になってしまう。

私だけだろうけど、、、どうしたもんだろうかなぁ。

cpanコマンドでインストールされたもののリスト

ExtUtils::Installed モジュールを組み合わせると取得できるようなので、次のようにスクリプトを組んでみた。

cpan-list

#!/usr/bin/perl

use ExtUtils::Installed;

$inst = ExtUtils::Installed->new();

for $module (sort $inst->modules()) {
	$version = $inst->version($module);
	print "$module $version\n";
}

どっかの御大ならば一行スクリプトに仕立てるんだろうけどねぇ。。。
そこまで Perl 臭が染み付いていないので、これでいいかなぁ。。。

実行例

# ./bin/cpan-list      
HTML::Perlinfo 1.54
Perl 5.8.8

cpanコマンドでインストールされたもののアンインストール

同様に ExtUtils::Installedとかを組み合わせると、アンインストールするスクリプトが作れる。

cpan-uninstall

#!/usr/bin/perl

use ExtUtils::Installed;
use ExtUtils::Install;

$module = $ARGV[0];

$inst = ExtUtils::Installed->new();
@modules = $inst->modules();

(grep $module,@modules) || die "$module is not install...";

uninstall($inst->packlist($module)->packlist_file());
print "uninstalled $module\n";

削除したいものを指定すれば削除できる。

実行例

# ./cpan-uninstall Module::Name
uninstalled Module::Name

まとめ

果たして、これで良いのか疑問に残るが、目的は達したので良いのかなぁ。。。
取り敢えず、ディストロとCPANの組み合わせは怖くなくなったぞぃと。

0 件のコメント:

久しぶりの投稿

かなり期間が空いてしまったが、ブログを再開してみようと思う。 2013年3月が直前の投稿だったが、頻繁に更新していた時期が 2011年11月までなので、8年間ぶりとなる。 8年間なにをしていたのかと言えば、2回転職して未だにIT技術者の職を得ている。 その...