common::sense 3.71 が正常にインストールされない問題に関しまして
(2013/08/01 3:44 + 0900 追記)
https://metacpan.org/release/MLEHMANN/common-sense-3.72
common::sense は3.72 にバージョンが上がって、
以下に書かれている様な問題は消え失せました。
戦いは終わったのです!!!*1
普通に
$cpanm common::sense
みたいな感じで正常にインストール出来ますので、以下の情報は現在では無意味な感じです。
さあ回れ右。
(追記ここまで)
!!!不正確な情報が含まれている恐れがあります!!!
!!!多分バッドノウハウ!!!
common::sense (3.71) が正常にインストールされない問題とは
以下をご覧頂くと詳しくて良いです。
common::senseがなんかおかしい - Masteries
ざっくり言うと、
- common::sense のアップデート時は、正常にアップデートされているように見せかけておいて、実はアップデートされていない
- 新規インストール時はテストがずっこけてインストールされない
という問題です。
実際の所
common::senseがなんかおかしい - Masteries や
JSON::XS とそれにまつわる歴史的な過去の話、まとめ。 - blog.64p.org でも書かれていますが、
とりあえず現状は、
cpanm http://search.cpan.org/CPAN/authors/id/M/ML/MLEHMANN/common-sense-3.6.tar.gz
で、バージョン3.6をインストールしてやれば何とかなります。
「どうしてもバージョン3.71を入れなければ死んでしまう!」という人以外は、
以下は読まなくても大丈夫です。さあ回れ右!
common::sense 3.71 を make してみるとわかりますが
$perl Makefile.PL && make Checking if your kit is complete... Looks good Writing Makefile for common::sense Writing MYMETA.yml and MYMETA.json /Users/user/.plenv/versions/5.16.3/bin/perl5.16.3 sense.pm.PL sense.pm cp sense.pm blib/arch/common/common/sense.pm cp sense.pod blib/lib/common/common/sense.pod Manifying blib/man3/common::sense.3 Manifying blib/man3/common::sense.3
`cp sense.pm blib/arch/common/common/sense.pm` のように “common” が2重になってしまいます。これでは正常にインストールされません。
Makefile.PL の中身
common::sense 3.71 の Makefile.PL の中身は
use ExtUtils::MakeMaker; WriteMakefile( ... PM => { "sense.pm" => '$(INST_ARCHLIBDIR)/common/sense.pm', "sense.pod" => '$(INST_LIBDIR)/common/sense.pod', }, ... );
となっていますが、この `$(INST_ARCHLIBDIR)` と `$(INST_LIBDIR)` が問題でして、
これをそれぞれ `$(INST_ARCHLIB)` そして `$(INST_LIB)` に書き換えてやるとうまく動作します。
つまり以下のように書き換えてから...
use ExtUtils::MakeMaker; WriteMakefile( ... PM => { "sense.pm" => '$(INST_ARCHLIB)/common/sense.pm', "sense.pod" => '$(INST_LIB)/common/sense.pod', }, ... );
再度 make してみると...
$perl Makefile.PL && make Checking if your kit is complete... Looks good Writing Makefile for common::sense Writing MYMETA.yml and MYMETA.json /Users/user/.plenv/versions/5.16.3/bin/perl5.16.3 sense.pm.PL sense.pm cp sense.pm blib/arch/common/sense.pm cp sense.pod blib/lib/common/sense.pod Manifying blib/man3/common::sense.3
という風になり、2重の common 問題が解決されます。
そして、
$cpanm .
とかでインストールを試みると、正常にインストールされてハピネス! って感じですね!
というわけで
common::sense が早く直ると良いですね!
*1:戦いとは?