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つを分けて考えるのがよい。
以下は Vine Linux 4.1 の自宅サーバに Plagger をインストールしたときのメモである。Perl 5.8.6, gcc 3.3.6, CPAN Shell v1.9102,関係ないかも知れないがデフォルトの日本語コードは EUC-JP である。
Plagger に必要な Perl モジュールは大量にある。Plagger を CPAN でインストールする時,モジュールの一覧が表示される (このサイトのサーバでの例)。loaded はインストール済みのモジュール,missing はインストールされていないモジュールである。インストールの方針としては,失敗しやすいモジュールを先に,それ以外を後にすることにする。
Perl モジュールの中には,インストール前にコンパイルが必要なものがある。失敗には,次の2つのケースがある。
コンパイルの失敗は,コンパイルに必要なライブラリやヘッダの不足が原因である。テストの失敗は環境などが原因になる。
まずはコンパイルに失敗しないように,必要なパッケージをインストールする。XML::* 系のモジュールには,libxml と libxml2 ライブラリの開発環境である libxml-devel と libxml2-devel,Net::SSLeay には openssl-devel が必要となるので,これをインストールしておく。
*-devel にはコンパイルに必要なヘッダが含まれているのだ。
コンパイルに成功しても,テストに失敗する場合がある。もちろんテストに成功しなければ不完全である。しかし,ここでつまづいていると,Plagger を使えない。そこで,ちょっとインチキして,テストをスキップしてインストールしてしまうことにする。ただし,テストには成功していないので,そのテストと同じケースが実際にあった場合は,実運用でも失敗することに注意しなければならない。つまり,テストなしでインストールするということは,問題の対処を先送りにしているだけだということを認識しておく必要がある。逆に言えば,これを認識しておけば先送りにできるということでもある。
テストに失敗するモジュールは,URI::Fetch, XML::Feed などがある。一般に,Perl モジュールのインストールは「perl Makefile.PL; make; make test; make install」の順で行われる。テストの失敗は「make test」での失敗なので,これを手動でスキップすればよい。テストに失敗したとき,コンパイル中ソースはホームディレクトリの中に残っている。URI::Fetch を例に挙げる。XML::* も同様にできる。
ディレクトリ名の後についている 1EzHqB はランダムな文字列である。コンパイルしてテストに失敗して…を繰り返していると,その数だけソースが残ることになる (その多さに驚いた)。
「make」の後に行う「make test」をやっていない。インストールしたら,ソースは削除してしまってよい。
その他の Perl モジュールに関しては,Plagger モジュールをインストールする際にまとめてインストールしてしまえばよい。
「モジュールをインストールする?」という問合せがあったら,答は言うなりでよい。つまり「Enter」で答えればよい。
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 のディレクトリを調べる。
@INC に入れておけば,config.yaml の中に assets のパスを書かなくてもいいという利点がある。しかし,Plagger assets のバージョンは,Perl のバージョンとは別に考えたいので,/usr/lib に入れるのには抵抗がある。そこで,/usr/local に入れることにした。
assets のパスは /usr/local/lib/site_perl/Plagger/assets になる。
インターネットで検索してみると,Plagger の実行例は Bloglines のフィードを読んできて Gmail に送ったりするものが多く,パスワードやアカウントが必要だったりする。動作テストごときで,そんなことはできない。そこで,適当なサイトのフィードを読み込んで,形式を変更するというテストをすることにした。
具体的には,RSS 1.0 形式の スラッシュドット ジャパン Feed を読み込み,ローカルのファイルに Atom 1.0 形式で出力するというものである。
module: に続くモジュールは,Subscription::Config であれば,Plagger::Plugin::Subscription::Feed のように「Plagger::Plugin::」を先頭につけた Perl モジュールなので,なければ追加インストールする。ログレベルは info や error がある。テストする場合は info がよいだろう。
これで実行してみる。実行の際は,-c で設定ファイルを指定する。
大丈夫なようだ。
プラグインのリストは 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文字に短縮すれば,重なることも多いだろうが…むー。やはり紛らわしい。
Master Archive Index
Total Entry Count: 1957