印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
Linux Plagger を Vine Linux 4.1 にインストール

Vine Linux 4.1 に Plagger をインストールする。ちょっとインチキする。

■ ■ ■

はじめに

Plagger が便利そうなので使ってみたい。Plagger とは「情報を収集・加工し任意の形で出力できるプログラム」で,Perl で書かれている (一足早く「Plagger」の便利さを実感してみよう − @IT)。収集する情報としては,RSS や Atom などのフィードが想定されている。人間のやりたいことの多くは「入力・加工・出力」であって,その流れを簡潔な形で実装したのが Unix のパイプである。Plagger は,Unix パイプ「|」のインターネットへの拡張と見ることもできる (WikiStartJa - Plagger - Trac)。

「入力・加工・出力」において,入力と出力をインターネットに求めたいというのは,Perl に限ったことではない。Plagger と同等の機能は Ruby でも実装されている (「Pragger」で一段上の情報収集に挑戦!:池嶋俊 Skype日記:ITpro)。

さて,Plagger を使うには Plagger をインストールする必要があるわけだが,これが結構大変。大変だというのは,Plagger 本体のインストールのことではなく,Plagger に必要な Perl モジュールが大量にあって,さらに,インストールが一筋縄ではいかないモジュールが含まれているということにある。したがって,次の2つを分けて考えるのがよい。

  • Perl モジュールのインストール
  • Plagger 本体のインストール

以下は Vine Linux 4.1 の自宅サーバに Plagger をインストールしたときのメモである。Perl 5.8.6, gcc 3.3.6, CPAN Shell v1.9102,関係ないかも知れないがデフォルトの日本語コードは EUC-JP である。

Perl モジュールのインストール

Plagger に必要な Perl モジュールは大量にある。Plagger を CPAN でインストールする時,モジュールの一覧が表示される (このサイトのサーバでの例)。loaded はインストール済みのモジュール,missing はインストールされていないモジュールである。インストールの方針としては,失敗しやすいモジュールを先に,それ以外を後にすることにする。

Perl モジュールの中には,インストール前にコンパイルが必要なものがある。失敗には,次の2つのケースがある。

  • コンパイルの失敗
  • テストの失敗

コンパイルの失敗は,コンパイルに必要なライブラリやヘッダの不足が原因である。テストの失敗は環境などが原因になる。

コンパイルに失敗する場合

まずはコンパイルに失敗しないように,必要なパッケージをインストールする。XML::* 系のモジュールには,libxml と libxml2 ライブラリの開発環境である libxml-devel と libxml2-devel,Net::SSLeay には openssl-devel が必要となるので,これをインストールしておく。

# apt-get install libxml-devel libxml2-devel openssl-devel

*-devel にはコンパイルに必要なヘッダが含まれているのだ。

テストに失敗する場合

コンパイルに成功しても,テストに失敗する場合がある。もちろんテストに成功しなければ不完全である。しかし,ここでつまづいていると,Plagger を使えない。そこで,ちょっとインチキして,テストをスキップしてインストールしてしまうことにする。ただし,テストには成功していないので,そのテストと同じケースが実際にあった場合は,実運用でも失敗することに注意しなければならない。つまり,テストなしでインストールするということは,問題の対処を先送りにしているだけだということを認識しておく必要がある。逆に言えば,これを認識しておけば先送りにできるということでもある。

テストに失敗するモジュールは,URI::Fetch, XML::Feed などがある。一般に,Perl モジュールのインストールは「perl Makefile.PL; make; make test; make install」の順で行われる。テストの失敗は「make test」での失敗なので,これを手動でスキップすればよい。テストに失敗したとき,コンパイル中ソースはホームディレクトリの中に残っている。URI::Fetch を例に挙げる。XML::* も同様にできる。

# ls .cpan/build
URI-Fetch-0.08-1EzHqB/  URI-Fetch-0.08-1EzHqB.yml

ディレクトリ名の後についている 1EzHqB はランダムな文字列である。コンパイルしてテストに失敗して…を繰り返していると,その数だけソースが残ることになる (その多さに驚いた)。

# ls .cpan/build/URI-Fetch-0.08-1EzHqB
# perl Makefile.PL
# make
# make install

「make」の後に行う「make test」をやっていない。インストールしたら,ソースは削除してしまってよい。

その他の Perl モジュール

その他の Perl モジュールに関しては,Plagger モジュールをインストールする際にまとめてインストールしてしまえばよい。

# cpan -i Plagger

「モジュールをインストールする?」という問合せがあったら,答は言うなりでよい。つまり「Enter」で答えればよい。

Plagger のインストール

Plagger は,Plagger 実行ファイル,Plagger Perl モジュールと assets で構成されている。Plagger 実行ファイルは /usr/bin/plagger,Plagger モジュールは Perl モジュールなので,他の Perl モジュールと同様に /usr/lib/perl5/site_perl/5.8.6/ 以下にインストールされる。

残るは assets で,どこにインストールするか意見が分かれるところでもある (subtech - Bulknews::Subtech - [Plagger] assets の罠)。そして,install Plagger はお勧めでなかったりする (subtech - Bulknews::Subtech - [Plagger] 「assets の罠」の罠)。なのではあるが,ここでは,@INC に入れることにする。個人で使うサーバでは,ユーザ毎にインストールするのは無駄だからである。まず @INC のディレクトリを調べる。

$ perl -e 'print join("\n", @INC);'

@INC に入れておけば,config.yaml の中に assets のパスを書かなくてもいいという利点がある。しかし,Plagger assets のバージョンは,Perl のバージョンとは別に考えたいので,/usr/lib に入れるのには抵抗がある。そこで,/usr/local に入れることにした。

# mkdir /usr/local/lib/site_perl/Plagger
# cp -r .cpan/build/Plagger-0.7.17-P6N99D/assets /usr/local/lib/site_perl/Plagger

assets のパスは /usr/local/lib/site_perl/Plagger/assets になる。

動作テスト

インターネットで検索してみると,Plagger の実行例は Bloglines のフィードを読んできて Gmail に送ったりするものが多く,パスワードやアカウントが必要だったりする。動作テストごときで,そんなことはできない。そこで,適当なサイトのフィードを読み込んで,形式を変更するというテストをすることにした。

具体的には,RSS 1.0 形式の スラッシュドット ジャパン Feed を読み込み,ローカルのファイルに Atom 1.0 形式で出力するというものである。

# cat config-shashdot.yaml
global:
  timezone: Asia/Tokyo
  log:
    level: info

plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: http://slashdot.jp/slashdot.rss

  - module: Publish::Feed
    config:
      format: Atom
      dir: /home/httpd/html
      filename: slashdot.xml

module: に続くモジュールは,Subscription::Config であれば,Plagger::Plugin::Subscription::Feed のように「Plagger::Plugin::」を先頭につけた Perl モジュールなので,なければ追加インストールする。ログレベルは info や error がある。テストする場合は info がよいだろう。

これで実行してみる。実行の際は,-c で設定ファイルを指定する。

# plagger -c config-slashdot.yaml
Plagger [info] plugin Plagger::Plugin::Subscription::Config loaded.
Plagger [info] plugin Plagger::Plugin::Publish::Feed loaded.
Plagger [info] plugin Plagger::Plugin::Filter::FloatingDateTime loaded.
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.
Plagger::Plugin::Aggregator::Simple [info] Fetch http://slashdot.jp/slashdot.rss
Plagger::Plugin::Aggregator::Simple [info] Aggregate http://slashdot.jp/slashdot.rss success: 11 entries.
Plagger::Plugin::Publish::Feed [info] save feed for http://slashdot.jp/ to /home/httpd/html/slashdot.xml

大丈夫なようだ。

リンク

プラグインのリストは WikiStartJa - Plagger - Trac からたどることができる。リンク集は 304 Not Modified: 個人ニュースサイトをPlaggerで見よう&Plagger役立ちリンク集 にある。インストールから実行,カスタマイズまでの例もある (Plagger俺的備忘録 - 他人の褌で相撲を取るブログ)。

おまけ

Plagger のコンフィグレーションファイルは YAML 形式である。YAML は"YAML Ain't Markup Language"(YAMLはマークアップ言語ではない)の意味 である (YAML - Wikipedia)。最初の Y に意味はない。GNU - GNU's Not Unix の「G」と同じである。ところが最近,別の YAML が出てきてまぎらわしくなった。"Yet Another Multicolumn Layout" である (YAML | An (X)HTML/CSS Framework)。「Yet Another ...」という名づけは Yacc (Yet Another Compiler-Compiler) 以来,しばしば用いられる表現である (yacc - Wikipedia)。英字4文字に短縮すれば,重なることも多いだろうが…むー。やはり紛らわしい。

Posted by n at 2007-09-09 04:08 | Edit | Comments (0) | Trackback(1)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
【 vine 】について最新のブログの口コミをまとめると
vineに関する最新ブログ、ユーチューブ、ネットショッピングからマッシュアップした口コミ情報を提供しています。 Trackbacked from: プレサーチ at September 23, 2007 05:44
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?