読者です 読者をやめる 読者になる 読者になる

初代Masteries

きっとモヒカンにもなれないお前たちに告げる!!!

common::senseがなんかおかしい

common::senseの最新版, バージョン3.71が, なんかおかしいっぽいです.

→@先生が解決策を見つけたそうです. 詳しくはこちら!

common::sense 3.72でこの問題は解決しました.

既にcommon::senseが導入済みの場合

バージョン3.6など, 既にcommon::senseが導入されている場合, 3.71へのアップグレードは成功するのですが, 何故かバージョンは3.6のままになってしまいます.

$ pmver common::sense
3.6
$ cpanm common::sense
--> Working on common::sense
Fetching http://www.cpan.org/authors/id/M/ML/MLEHMANN/common-sense-3.71.tar.gz ... OK
Configuring common-sense-3.71 ... OK
Building and testing common-sense-3.71 ... OK
Successfully installed common-sense-3.71 (upgraded from 3.6)
1 distribution installed
$ pmver common::sense
3.6

ただ, バージョン3.6のcommon::senseは普通に利用することができるので, 特に致命的な影響は起きません.

common::senseが導入されていない場合

困るのは, common::senseがまだ導入されていない場合です.

$ cpanm common::sense
--> Working on common::sense
Fetching http://www.cpan.org/authors/id/M/ML/MLEHMANN/common-sense-3.71.tar.gz ... OK
Configuring common-sense-3.71 ... OK
Building and testing common-sense-3.71 ... FAIL
! Installing common::sense failed. See /home/xxxxxxxx/.cpanm/work/1375255096.11127/build.log for details. Retry with --force to force install it.

当然, 普通に入れようとするとコケてしまいます.

更に問題になるのが, common::senseがいろいろなモジュールの依存モジュールになっている点です.
例えば, JSON::XSはcommon::senseに依存していますので, common::senseがない状態でJSON::XSを導入しようとすると...

$ cpanm JSON::XS
--> Working on JSON::XS
Fetching http://www.cpan.org/authors/id/M/ML/MLEHMANN/JSON-XS-2.34.tar.gz ... OK
Configuring JSON-XS-2.34 ... OK
==> Found dependencies: common::sense
--> Working on common::sense
Fetching http://www.cpan.org/authors/id/M/ML/MLEHMANN/common-sense-3.71.tar.gz ... OK
Configuring common-sense-3.71 ... OK
Building and testing common-sense-3.71 ... FAIL
! Testing common-sense-3.71 failed but installing it anyway.
Successfully installed common-sense-3.71
! Installing the dependencies failed: Module 'common::sense' is not installed
! Bailing out the installation for JSON-XS-2.34.
1 distribution installed

こんな感じでコケてしまいます.
「じゃあバージョン3.6を入れればいいのでは?」ということで, cpanmからバージョンを指定してcommon::senseをインストールしてみると...

$ cpanm common::sense@3.6
Found common::sense 3.71 which doesn't satisfy == 3.6.

「3.71を入れろ!」と言われてしまいます.
ただ, @さん情報によると, tarを直接指定すればバージョン3.6のcommon::senseを導入することができるようなので,

$ cpanm http://search.cpan.org/CPAN/authors/id/M/ML/MLEHMANN/common-sense-3.6.tar.gz 
Fetching http://search.cpan.org/CPAN/authors/id/M/ML/MLEHMANN/common-sense-3.6.tar.gz ... OK
Configuring common-sense-3.6 ... OK
Building and testing common-sense-3.6 ... OK
Successfully installed common-sense-3.6
1 distribution installed

この手法でcommon::senseを導入してから...

$ cpanm JSON::XS
--> Working on JSON::XS
Fetching http://www.cpan.org/authors/id/M/ML/MLEHMANN/JSON-XS-2.34.tar.gz ... OK
Configuring JSON-XS-2.34 ... OK
Building and testing JSON-XS-2.34 ... OK
Successfully installed JSON-XS-2.34
1 distribution installed

JSON::XSを導入すれば, なんとかなるようです.