Perl cpanのupgradeででたエラーを調べてみる

cpan-metacpanのイラスト
最新バージョンのモジュールに更新することは簡単で大事なことです。
 
cpan>upgrade
 
140 installed modules have no parsable version number
(use ‘o conf show_unparsable_versions 1’ to show them)
Running install for module ‘Archive::Extract’
Fetching with LWP:
http://cpan.mmgdesigns.com.ar/authors/id/B/BI/BINGOS/Archive-Extract-0.80.tar.gz
CPAN::LWP::UserAgent->new dies with Can’t locate object method “new” via package “HTTP::Headers” at /Users/toru/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/LWP/UserAgent.pm line 773.
 
Catching error: “Can’t call method \”mirror\” on an undefined value at /Users/toru/perl5/perlbrew/perls/perl-5.10.1/lib/5.10.1/CPAN/FTP.pm line 640.\cJ” at /Users/toru/perl5/perlbrew/perls/perl-5.10.1/lib/5.10.1/CPAN.pm line 392.
CPAN::shell() called at /Users/toru/perl5/perlbrew/perls/perl-5.10.1/lib/5.10.1/App/Cpan.pm line 414
App::Cpan::_process_options(“App::Cpan”) called at /Users/toru/perl5/perlbrew/perls/perl-5.10.1/lib/5.10.1/App/Cpan.pm line 511
App::Cpan::run(“App::Cpan”) called at /Users/toru/perl5/perlbrew/perls/perl-5.10.1/bin/cpan line 10
 
 

最初のエラー

 
エラーが出たら出たエラーに従って一個づつ問題を解決していくと動作することが多いのでやってみます。

 

 
(use ‘o conf show_unparsable_versions 1’ to show them)
 
cpanのshellで o conf show_unparsable_versions 1 と書いてあるので打ってみました。
 

cpan[1]> o conf show_unparsable_versions 1
show_unparsable_versions [1]
Please use ‘o conf commit’ to make the config permanent!

cpan[2]> o conf commit
commit: wrote ‘/Users/toru/.cpan/CPAN/MyConfig.pm’

o conf commit って打ってみろ。と書いてあります。

Myconfig.pmにcommitしたっぽいです。現時点でよくわかってません。

(use ‘o conf show_unparsable_versions 0’ to hide them)

o conf show_unparsable_versions 0

と打ってみろ、と出てます。

Please use ‘o conf commit’ to make the config permanent!

また o conf commit と打ってみろ、と出てきました。

commit: wrote ‘/Users/toru/.cpan/CPAN/MyConfig.pm’

commitしたらしいです。

一回づつupgradeコマンドを打って出たエラーを一つづつ解決していきます。

さっきので少しインストールが進んだので、upgradeコマンドを打って再度新しいエラーをチェックし直してみます。

cpan>upgrade

2 errors generated.
make: *** [DProf.o] Error 1
  FLORA/Devel-DProf-20110802.00.tar.gz
  /usr/bin/make — NOT OK
Running install for module ‘Devel::PPPort’
Warning: You are not allowed to write into directory “/Users/toru/.cpan/sources/authors/id/X/XS/XSAWYERX”.
    I’ll continue, but if you encounter problems, they may be due
    to insufficient permissions.
Fetching with LWP:
http://cpan.mmgdesigns.com.ar/authors/id/X/XS/XSAWYERX/Devel-PPPort-3.42.tar.gz
Catching error: “Can’t write to ‘/Users/toru/.cpan/sources/authors/id/X/XS/XSAWYERX/Devel-PPPort-3.42.tar.gz.tmp51508-51508’: Permission denied at /Users/toru/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/LWP/Protocol.pm line 109. at /Users/toru/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/LWP/UserAgent.pm line 974.\cJ” at /Users/toru/perl5/perlbrew/perls/perl-5.10.1/lib/5.10.1/CPAN.pm line 392.
CPAN::shell() called at /Users/toru/perl5/perlbrew/perls/perl-5.10.1/lib/5.10.1/App/Cpan.pm line 414
App::Cpan::_process_options(“App::Cpan”) called at /Users/toru/perl5/perlbrew/perls/perl-5.10.1/lib/5.10.1/App/Cpan.pm line 511
App::Cpan::run(“App::Cpan”) called at /Users/toru/perl5/perlbrew/perls/perl-5.10.1/bin/cpan line 10
Failed during this command:
 BINGOS/Module-CoreList-5.20180420.tar.gz     : install NO
 BINGOS/Module-Load-0.32.tar.gz               : install NO
 BINGOS/Module-Load-Conditional-0.68.tar.gz   : install NO
 BINGOS/IPC-Cmd-1.02.tar.gz                   : install NO
 BINGOS/Archive-Extract-0.80.tar.gz           : install NO
 RJBS/Attribute-Handlers-0.99.tar.gz          : install NO
 SMUELLER/AutoLoader-5.74.tar.gz              : install NO
 RURBAN/B-Debug-1.26.tar.gz                   : install NO
 RJBS/B-Lint-1.20.tar.gz                      : install NO
 ADAMK/Test-NoWarnings-1.04.tar.gz            : install NO
 LEEJO/CGI-4.38.tar.gz                        : install NO
 ETHER/FCGI-0.78.tar.gz                       : install NO
 LEEJO/CGI-Fast-2.13.tar.gz                   : install NO
 DAGOLDEN/CPAN-Meta-YAML-0.018.tar.gz         : install NO
 BINGOS/Params-Check-0.38.tar.gz              : install NO
 BINGOS/Object-Accessor-0.48.tar.gz           : install NO
 BINGOS/CPANPLUS-0.9174.tar.gz                : install NO
 SMUELLER/Class-ISA-0.36.tar.gz               : install NO
 PMQS/DB_File-1.841.tar.gz                    : make_test NO
 FLORA/Devel-DProf-20110802.00.tar.gz         : make NO
 
 
 
 

今度のは読んでいくと Permission denied でインストールが失敗してる例が多いようです。となると、 sudo cpan でcpanを管理者権限で起動してからもう一度エラーをチェックしてみます。

 
#sudo cpan
cpan>upgrade
make: *** [DProf.o] Error 1
FLORA/Devel-DProf-20110802.00.tar.gz
/usr/bin/make — NOT OK
Running install for module ‘Devel::PPPort’
 
Failed during this command:
PMQS/DB_File-1.841.tar.gz : make_test NO
FLORA/Devel-DProf-20110802.00.tar.gz : make NO
 
途中同じ内容のエラーは飛ばして要所のみ抜粋してあります。
ほとんどのupgradeはうまくいったようですが、残り2個。
 
Running install for module ‘Devel::PPPort’
Devel::PPPort をインストールしなさい。と書いてあるのでその通りにやってみます。
 
cpan> install Devel::PPPort
なぜか失敗。
 
他の解説ブログでバージョン番号も指定するとうまくいくよ、とあったのでそれを試してみます。CPANのサイトにブラウザから行って、Devel PPPortを探してみます。
 
またはcpanで
cpan>i /Devel::PPPort/
で検索でも出てきます。
 
あったのはバージョン3.42。
 
cpan>install Devel::PPPort@3.42
と@をつけるとバージョン指定になるらしい。
 
XSAWYERX/Devel-PPPort-3.42.tar.gz
/usr/bin/make install — OK
 
それでやっとDevel::PPPortのインストールができました。
 
 
 

再度upgradeを試してみます。

 
Failed during this command:
PMQS/DB_File-1.841.tar.gz : make_test NO
FLORA/Devel-DProf-20110802.00.tar.gz : make NO
RURBAN/Net-Ping-2.66.tar.gz : make_test NO
RGARCIA/Safe-2.35.tar.gz : make_test NO
NWCLARK/perl-5.8.6.tar.gz : make NO isa perl
SHAY/perl-5.26.2.tar.gz : make NO isa perl
LEONT/Module-Build-0.4005.tar.gz : make_test NO
SHAY/perl-5.26.2.tar.bz2 : make NO isa perl
SHAY/perl-5.24.4.tar.bz2 : make NO isa perl
 
インストール失敗したモジュールが残りこれだけ。
一つづつ個別にインストールを試して行ってみます。
 
 
Failed during this command:
PMQS/DB_File-1.841.tar.gz : make_test NO
RURBAN/Net-Ping-2.66.tar.gz : make_test NO
RGARCIA/Safe-2.35.tar.gz : make_test NO
NWCLARK/perl-5.8.6.tar.gz : make NO isa perl
SHAY/perl-5.26.2.tar.gz : make NO isa perl
LEONT/Module-Build-0.4005.tar.gz : make_test NO
SHAY/perl-5.26.2.tar.bz2 : make NO isa perl
SHAY/perl-5.24.4.tar.bz2 : make NO isa perl
 
同じupgradeを2回目の結果。1個インストールがうまく行った?ようです。
 
 
 

個別のエラーを見ていきます。

cpan>install DB_File
 
PMQS/DB_File-1.841.tar.gz
/usr/bin/make test — NOT OK
//hint// to see the cpan-testers results for installing this module, try:
reports PMQS/DB_File-1.841.tar.gz
Failed during this command:
PMQS/DB_File-1.841.tar.gz : make_test NO
 
make_testで失敗してるらしい。
hintで、cpan-testersをインストールしてからトライして、と書かれています。
 
cpan>i /cpan::testers/
結果から
cpan>install CPAN::Testers
 
CPAN::TestersはCPANが使うエラーを吐くモジュールっぽいもので、cpanをいったんexitして入り直すとCPAN::Testersが動き出すようです。
 
これは今まで出てきたエラーのログがまたいいエラーを出すようなモジュールでしょうかね。
 
Package seems to come without Makefile.PL.
(The test -f “/Users/toru/.cpan/build/PMQS-0/Makefile.PL” returned false.)
Writing one on our own (setting NAME to DB_File)
Catching error: “Could not open script ‘/Users/toru/.cpan/build/PMQS-0//Users/toru/.cpan/sources/authors/id/P/PM/PMQS/DB_File-1.841’: No such file or directory at /Users/toru/perl5/perlbrew/perls/perl-5.10.1/lib/5.10.1/CPAN/Shell.pm line 1900.\cJ” at /Users/toru/perl5/perlbrew/perls/perl-5.10.1/lib/5.10.1/CPAN.pm line 392, <STDIN> line 2.
 
 
 

続いて再度PMQS/DB_fileのエラーを調べていきます。

DB_File-1.841はダウンロードは済んでいるが、ファイルが見当たらないというエラーが出てます。
ローカルのパスは書いてありますから、どんな状態になっているか見に行って見ます。
 
cd /Users/toru/.cpan/sources/authors/id/P/PM/PMQS/
 
DB_File-1.841.tar.gzとDB_File-1.841がありました。
 
Makefile.PLと出ているので、tar.gzを自分で展開してmakeを試みてみます。
 
#tar zxvf DB_File-1.841.tar.gz
 
展開したディレクトリに移動して、
 
#perl Makefile.PL
#make
#sudo make install
 
ここまでうまくいきました。
 
 
 

DB_File-1.841がインストールできているのか、チェックしてみます。

このコマンドは検索で拾ってきたやつです。
 
find `perl -e ‘print “@INC”‘` -name ‘*.pm’ -print | grep DB
 
さっきのmake installでDB_File.pmができていたので、findで出てきたperl/5.10.1のディレクトリ下にPMQSディレクトリを作ってDB_File.pmをコピーしてきました。インストールといっても特別なことをしているわけじゃなく、各場所にコピーしてるだけだったり。
 
sudo cp DB_File.pm /Users/toru/perl5/perlbrew/perls/perl/5.10.1/lib/site_perl/5.10.1/PMQS/

これは一行です。

 
 
 
 

再度upgradeで状態をみてみます。

 
PMQS/DB_Fileは出てこなくなりました。
使えるのかどうかはわかりませんが。とりあえず解決、と判断します。おかしければまたやってみればいいのです。
 
Failed during this command:
FLORA/Devel-DProf-20110802.00.tar.gz : make NO
RURBAN/Net-Ping-2.66.tar.gz : make_test NO
RGARCIA/Safe-2.35.tar.gz : make_test NO
NWCLARK/perl-5.8.6.tar.gz : make NO isa perl
SHAY/perl-5.26.2.tar.gz : make NO isa perl
LEONT/Module-Build-0.4005.tar.gz : make_test NO
SHAY/perl-5.26.2.tar.bz2 : make NO isa perl
SHAY/perl-5.24.4.tar.bz2 : make NO isa perl
 
 
 

続いてFLORA/Devel-DProf-20110802.00.tar.gz

makeが失敗してる。
さっきのPMQS/DB_Fileのように.pmファイルをコピーしてみましたがまだ表示されてます。
 
force install という強制インストールも試してみますが結果は同じでした。
とりあえず今は保留。
 
RURBAN/Net-PingとRGARCIA/Safeはforce installなどを試してたら消えてました。
 
 

残りこれだけ。

 
Failed during this command:
NWCLARK/perl-5.8.6.tar.gz : make NO isa perl
SHAY/perl-5.26.2.tar.gz : make NO isa perl
LEONT/Module-Build-0.4005.tar.gz : make_test NO
SHAY/perl-5.26.2.tar.bz2 : make NO isa perl
SHAY/perl-5.24.4.tar.bz2 : make NO isa perl
 
 
 
–> Working on NWCLARK/perl-5.8.6
Fetching http://www.cpan.org/authors/id/N/NW/NWCLARK/perl-5.8.6 … FAIL
! Download http://www.cpan.org/authors/id/N/NW/NWCLARK/perl-5.8.6 failed. Retrying …
 
ダウンロードのところで失敗してます。
 
perlに関してはplenvで該当バージョンをインストールすればいいようだ。
 
#plenv install 5.26.2
#plenv install 5.26.4
#plenv install 5.8.6
 
のようにバージョンを指定すると同じものがインストールされる。
 
 

LEONT/Module-Build

直接該当ディレクトリに移動して
 
#perl Makefile.PL
#make
#sudo make install
 
でOKが出た。perl Makefile.PLを打つとpermission denyと出ていたので、sudoを足してOK。
 
 
 
 

まとめ

 
sudo cpan
sudo cpan -r
cpan>upgrade
 

# 古くなっているモジュールの一覧
> perl -MCPAN -e “CPAN::Shell->r”

# 古くなっているモジュールの一括更新
> perl -MCPAN -e “CPAN::Shell->install(CPAN::Shell->r)”

個別に force install。
 
直接該当ディレクトリに移動して
#perl Makefile.PL
#make
#sudo make install
 
CPANサイトから直接tar.gzをダウンロードしてきて展開、インストール。
 
#cpanm install
 
この辺りをうろちょろやってると同じinstallでもうまくいくことがある。
 
あとは同じようなとこでつまづいてる人のブログを探したり、エラーの内容をよく読むとだいたいヒントになるようなことが書いてある。
 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です