MacOS XにPlaggerインストール

使えるまでのおおまかな流れとしては、Plaggerの動作に必要なPerlモジュールをインストール → svnから最新のPlaggerをチェックアウト → 設定 → 利用可能。といった感じ。

インストール

1回目失敗
cpan[9]> install Plagger
...

Test Summary Report
-------------------
t/00_compile.t (Wstat: 256 Tests: 1 Failed: 1)
  Failed test:  1
  Non-zero exit status: 1Files=1, Tests=1,  0 wallclock secs ( 0.02 usr  0.01 sys +  0.41 cusr  0.07 csys =  0.51 CPU)Result: FAIL
Failed 1/1 test programs. 1/1 subtests failed.
make: *** [test_dynamic] Error 1
  MIYAGAWA/Plagger-0.7.17.tar.gz
  /usr/bin/make test -- NOT OK//hint// to see the cpan-testers results for installing this module, try:
  reports MIYAGAWA/Plagger-0.7.17.tar.gz
Failed during this command:
 MIYAGAWA/XML-Liberal-0.22.tar.gz             : make_test NO
 DMAKI/XML-RSS-Liberal-0.03.tar.gz            : make_test NO
 ADAMK/File-HomeDir-0.89.tar.gz               : make_test NO
 MIYAGAWA/WebService-Bloglines-0.12.tar.gz    : make_test NO one dependency not OK (XML::Liberal)
 MIYAGAWA/Plagger-0.7.17.tar.gz               : make_test NO


MIYAGAWA/XML-Liberal-0.22.tar.gz のテストをして失敗原因を調べる
cpan[10]> test MIYAGAWA/XML-Liberal-0.22.tar.gz
...
PERL_DL_NONLAZY=1 /opt/local/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/*.tt/00_compile.t ......... 1/1
#   Failed test 'use XML::Liberal;'
#   at t/00_compile.t line 4.
#     Tried to use 'XML::Liberal'.
#     Error:  Can't locate Module/Pluggable/Fast.pm in @INC (@INC contains: ...) at /Users/sato_k/.cpan/build/XML-Liberal-0.22-FUap2a/blib/lib/XML/Liberal.pm line 13.

Test Summary Report
-------------------
t/00_compile.t       (Wstat: 256 Tests: 1 Failed: 1)
  Failed test:  1
  Non-zero exit status: 1
t/01_bad.t           (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
t/02_global.t        (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
t/03_global_destroy.t (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
t/04_sanity.t        (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
Files=5, Tests=1,  3 wallclock secs ( 0.05 usr  0.03 sys +  0.32 cusr  0.11 csys =  0.51 CPU)
Result: FAIL
Failed 5/5 test programs. 1/1 subtests failed.
make: *** [test_dynamic] Error 2
  MIYAGAWA/XML-Liberal-0.22.tar.gz
  /usr/bin/make test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
  reports MIYAGAWA/XML-Liberal-0.22.tar.gz
Failed during this command:
 MIYAGAWA/XML-Liberal-0.22.tar.gz             : make_test NO


Module::Pluggable::Fast がuseできなくて失敗している。こいつが入っているのが前提らしい。
/* Module::Pluggable::Fast インストール */
cpan[15]> test Module::Pluggable::Fast
Running test for module 'Module::Pluggable::Fast'

  The module Module::Pluggable::Fast isn't available on CPAN.

  Either the module has not yet been uploaded to CPAN, or it is
  temporary unavailable. Please contact the author to find out
  more about the status. Try 'i Module::Pluggable::Fast'.

あれ、、無い??と思ったが、以下のようにしたらできた。
cpan[25]> install MRAMBERG/Module-Pluggable-Fast-0.16.tar.gz
※ 参考: http://d.hatena.ne.jp/hao_yayoi/20091202/1259762635 のブコメ
MIYAGAWA/XML-Liberal-0.22.tar.gz をインストール
cpan[27]> install MIYAGAWA/XML-Liberal-0.22.tar.gz

問題無く入った。

2回目失敗
cpan[28]> test Plagger
...

Test Summary Report
-------------------
t/00_compile.t (Wstat: 256 Tests: 1 Failed: 1)
  Failed test:  1
  Non-zero exit status: 1
Files=1, Tests=1,  0 wallclock secs ( 0.02 usr  0.01 sys +  0.42 cusr  0.08 csys =  0.53 CPU)
Result: FAIL
Failed 1/1 test programs. 1/1 subtests failed.
make: *** [test_dynamic] Error 1
  MIYAGAWA/Plagger-0.7.17.tar.gz
  /usr/bin/make test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
  reports MIYAGAWA/Plagger-0.7.17.tar.gz
Failed during this command:
 ADAMK/File-HomeDir-0.89.tar.gz               : make_test NO
 MIYAGAWA/Plagger-0.7.17.tar.gz               : make_test NO
ADAMK/File-HomeDir-0.89.tar.gz のテストをして失敗原因を調べる
cpan[29]> test ADAMK/File-HomeDir-0.89.tar.gz
...
t/12_darwin_carbon.t .. 1/6 Use of uninitialized value in pattern match (m//) at t/12_darwin_carbon.t line 60, <DATA> line 1.

#   Failed test at t/12_darwin_carbon.t line 60.
#                   undef
#     doesn't match '(?-xism:Application Support)'
# Looks like you failed 1 test of 6.t/12_darwin_carbon.t .. Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/6 subtests
        (less 4 skipped subtests: 1 okay)

Test Summary Report
-------------------
t/12_darwin_carbon.t (Wstat: 256 Tests: 6 Failed: 1)
  Failed test:  5
  Non-zero exit status: 1
Files=8, Tests=71,  1 wallclock secs ( 0.07 usr  0.04 sys +  0.36 cusr  0.13 csys =  0.60 CPU)
Result: FAIL
Failed 1/8 test programs. 1/71 subtests failed.
make: *** [test_dynamic] Error 255
  ADAMK/File-HomeDir-0.89.tar.gz
  /usr/bin/make test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
  reports ADAMK/File-HomeDir-0.89.tar.gzFailed during this command: ADAMK/File-HomeDir-0.89.tar.gz
               : make_test NO


どうやら 「/Users/sato_k/.cpan/build/File-HomeDir-0.89-Exv8Ff/t/12_darwin_carbon.t」 の60行目で失敗している模様。
File::HomeDir->my_dataメソッドがundefを返していることが原因。ここでは「Application Support」を返さなければならないらしい。。。
$ sudo vim /Users/sato_k/.cpan/build/File-HomeDir-0.89-Exv8Ff/t/12_darwin_carbon.t
 58 # For now, lets continue to assume everyone has this one
 59 like(
 60     File::HomeDir->my_data,
 61     qr/Application Support/,
 62 );
sudoで実行しているから、rootユーザのホームディレクトリ直下に「Application Support」ディレクトリを作ればいいのか??
なんかbug reportが上がってた。
https://rt.cpan.org/Public/Bug/Display.html?id=52692


試行錯誤してみたが、よく分からない。。
少し前のバージョンだったら入ったので、これで良しとした。
cpan[4]> install ADAMK/File-HomeDir-0.86.tar.gz
3回目失敗
cpan[4]> test Plagger
...
#   Failed test 'use Plagger;'
#   at t/00_compile.t line 4.
#     Tried to use 'Plagger'.
#     Error:  Can't locate XML/Feed/RSS.pm in @INC (...
...


XML::Feed::RSSが見つからなくて失敗している。
XML::Feed::RSSを入れる
cpan[8]> install XML::Feed::RSS
...
t/11-xml-base-rss.t ......... 1/13
#   Failed test 'Got content base'
#   at t/11-xml-base-rss.t line 20.
#          got: undef
#     expected: 'http://example.org/archives/000001.html'

#   Failed test 'Got content base'
#   at t/11-xml-base-rss.t line 29.
#          got: undef
#     expected: 'http://example.org/archives/000001.html'
# Looks like you failed 2 tests of 13.
t/11-xml-base-rss.t ......... Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/13 subtests


今度は「t/11-xml-base-rss.t」の20行目と29行目のテストで失敗している。
$ sudo vi /Users/sato_k/.cpan/build/XML-Feed-0.23-OdRWCc/t/11-xml-base-rss.t
 20 is($content->base, "http://example.org/archives/000001.html",     "Got content base");
 29 is($new_content->base, "http://example.org/archives/000001.html", "Got content base");

分からん。。というか寝たいのでforce install
cpan[10]> force install XML::Feed::RSS
やっとtest Plagger通った
cpan[10]> test Plagger
...
Result: PASS
  MIYAGAWA/Plagger-0.7.17.tar.gz
  /usr/bin/make test -- OK

cpan[10]> install Plagger
Plagger is up to date (0.7.17).

そうか、全部依存関係を解決したからこれで入ったことになるのか。

最新のPlaggerをダウンロード

$ svn co http://svn.bulknews.net/repos/plagger/trunk/plagger
$ cd plagger

config.yamlを作成しておく

$ touch config.yaml

これで使えるはず…

$./plagger
Can't locate File/Find/Rule.pm in @INC

見ているperlが違ったようなので修正
$ vi plagger
  1 #!/opt/local/bin/perl
  2 ##!/usr/bin/perl


きた!
$ ./plagger
Plagger [info] plugin Plagger::Plugin::Bundle::Defaults loaded.
Plagger [info] plugin Plagger::Plugin::Aggregator::Simple loaded.
Plagger [info] plugin Plagger::Plugin::Summary::Auto loaded.
Plagger [info] plugin Plagger::Plugin::Summary::Simple loaded.
Plagger [info] plugin Plagger::Plugin::Namespace::HatenaFotolife loaded.
Plagger [info] plugin Plagger::Plugin::Namespace::MediaRSS loaded.
Plagger [info] plugin Plagger::Plugin::Namespace::ApplePhotocast loaded.

やっと入った。
もう朝になってしまったので、、、いろいろ試すのは次の機会にしよう。