UbuntuでPlaggerやるならこれでいけ!〜VirtualBoxからcronまで〜

インストールがむずかしいことで評判の「Plagger」ですが,その評判通り 使える様になるまでが大変です.一般的には,CPAN から Plagger を入れれば いいのですが,依存関係が複雑なのと make しながらになるのでやたらと 時間もかかり,一発で入らなかったりと,面倒なことだらけです.

この度,さくっと入れる方法が確立できたのでここにメモしておきます. Ubuntu 環境ないよという人のために,Virtualbox という仮想環境に Ubuntu を 入れるところからスタートします.Ubuntu 持ってる人は飛ばして下さい. そして,何よりパッケージを作ってくれた半袖さんには ちょー感謝><!

VirtualBox に Ubuntu 入れる

VirtualBox とは Sun が提供してるフリーの仮想環境ソフト.これで仮想マシン (こちらをゲストと呼びます)を作ってそこに Ubuntu Server Edition を入れて, ホスト(VirtualBox を立ち上げているマシン.僕の場合 MacBook)にぶらさげる ことで,ネットワークにも接続できるようにします.ちなみにホストは何でもいいと 思いますが,この際ですので Mac を持ってない人は買いましょう w

やりかたは以下のリンクが懇切丁寧ですばらしいので,書いてある通りにやれば 問題ありません.ishikawa さん++

なお,ネットワークは NAT が楽なので良い感じです.ポートを 22 から変更するため, ssh がめんどくさいので,~/.ssh/config をいじっておきます.

Host GUEST
HostName localhost
Port *****

ゲストを NAT でつないでる場合,HostName は localhost で,VirtualBox で指定した ポート番号を指定しておけば,

$ssh GUEST

だけで SSH いけます.ユーザ名とかは適当にやってください.config でもいいし, ユーザ名そろえてもいいし.

おまけ

エディタは vi がありますが,emacsを入れるのが普通です.

$ sudo apt-get install emacs22-nox

Ubuntu に Plagger をさくっと入れる

さて,ここからが本番.VirtualBox に入れたならクリーンな Ubuntu が手に入りました. まぁそうでなくても問題ないです.ついでに言えば Perl のバージョンが 5.8 でも 5.10 でも大丈夫です.次の手順でさくさくいれちゃいましょう.

Plagger で必要な Perl ライブラリを apt から入れるのは,実は「失敗」する

先にも書いた様に普通は CPAN から build するのですが,くそめんどくさいので hansode さんのパッケージを拝借します.

/etc/apt/source.list に以下を追加.

deb http://debian.hansode.org/ ./

ターミナルから以下を叩く.

$ sudo apt-get update
$ sudo apt-get install libplagger-perl

結果.

   libplagger-perl: 依存: libencode-perl (>= 2.1) しかし、インストールすることができません
   ...

はい,失敗しましたね w 実はこれは Debian 用なので,どうも Ubuntu だと足りない ものがあるようです.しかし,大して関係ないものらしいので,ダミーパッケージで ごまかすことで強引に入れてしまいます!ここがミソね>< v といっても, 以下のページをぱくっただけ!ありがとう><

ダミーパッケージでごまかす

ダミー作りのためのパッケージを入れ,ダミーパッケージを作ります. パッケージの名前とバージョンは先ほどのエラーメッセージを参考にして下さい.

$ sudo apt-get install equivs
$ cd /var/tmp
$ equivs-control libencode-perl

できあがった libencode-perl というファイルをエディタで開き,名前とバージョンを 変更します.

Package: <package name; defaults to equivs-dummy>
# Version: <enter version here; defaults to 1.0>

の部分を

Package: libencode-perl
Version: 2.1

に変更.そしたら,ダミーパッケージをビルドしてインストールしちゃいます.

$ equivs-build libencode-perl
$ sudo dpkg -i libencode-perl_2.1_all.deb

これで,再度$ sudo apt-get install libplagger-perlをやるとエラーの中から libencode-perl が無くなっているはずです!そう,あとはエラーのパッケージの 数だけダミーインストールを繰り返すのです!

libplagger-perl がついに入る!!

すべて入れ終わって,ついに,Plagger が入る瞬間がやってきました!

$ sudo apt-get install libplagger-perl
$ plagger -v
Plagger version 0.7.17

これで晴れて Plagger デビューです!

SVN から最新版を入れておく

あとは,最新版の Plagger を SVN から落としておきます.多分ですが, プラグインだけ使うなら make しなくてもよくて,あとで YAML ファイルの プラグインパスでこれを指定すればいい気がします.僕は一応 make しましたが,CPAN の時みたいに色々聞かれるので,嫌な人は make しないで hansode さんの Plagger を使えばいいと思います><!

$ svn co http://svn.bulknews.net/repos/plagger/trunk/plagger
$ cd plagger
$ perl Makefile.PL
$ sudo make

Plagger って何?

さぁついに Plagger が使える様になりましたよ!・・・と言ったところで, Plagger ってなんなんでしょう?簡単に言えばこんなもんです.

フィードをベースにしてエントリ毎にごにょごにょできて,えいやーできる

わけわかりませんね w とりあえず適当なブログのフィードを拾ってきて, まとめて Gmail に送るとかしてみればいいんじゃないかな.というわけでサンプル.

base.yaml

global:
  plugin_path:
    - /home/user/plagger/lib/Plagger/Plugin
          # svnで落としたプラグインの場所
#    - /home/user/github/plagger/lib/Plagger/Plugin
          # 自分で書いたプラグインがあれば
  assets_path: /home/user/plagger/assets
          # svnで落としたassetsの場所
  timezone:     Asia/Tokyo
  log:
#    level: debug
    level: info
  cache:
    base: /home/user/rsync/cache
          # cacheの場所を適当に指定

define_recipes:

こちらは,これから作る YAML ファイルに共通の設定を書いておく. いちいちプラグインの場所とか指定しなくていいので楽.

rss2email.yaml

include:
  - /home/user/rsync/yaml/base.yaml
          # 上のbase.yamlの場所を指定

plugins:
  - module: Subscription::Config
    config:
      feed:
        - http://twitter.com/statuses/user_timeline/riywo.rss
          # 取得したいフィードのURL

  - module: Filter::Rule
    rule:
      module: Deduped
      path: /home/user/rsync/cache/plagger-rss2email.db
          # 一度送信したエントリを送信しない設定
          # リセットするならこのファイル(とcacheフォルダ)を消す

  - module: Publish::Gmail
    config:
      mailto:   you+plagger@gmail.com
          # 送り先のGmail
      mailfrom:   you@gmail.com
          # 送信元にするGmail
      mailroute:
        via: smtp_tls
        host: smtp.gmail.com:587
        username: you@gmail.com
          # Gmailアカウント
        password: ********
          # そのパスワード

適当なフィードを取って来て Gmail に送るための設定.試しに僕の Twitter のフィードでも読みやがれ!

いくぜ!Plagger!

さぁ,上の二つのファイルを適当なところに置いたら,いよいよ初 Plagger です! その前に注意ですが,YAML ファイルは utf-8-unix で保存しておいて下さい.もし よくわかんなければ,あらかじめ日本語の入ったコメント行は削除しておいて下さい.

ファイルの置き場所が/home/user/rsync/yaml/base.yaml, /home/user/rsync/yaml/rss2email.yaml だとします.base.yaml の場所が違えば rss2email.yaml の最初を変えて下さい.

$ plagger -c /home/user/rsync/yaml/rss2email.yaml

これで,僕の Twitter のポストがあなたの Gmail に送られてくるはずです!おめでとう!

あとはこれを cron でまわすのだ!

Plagger は手動で実行してもおもしろくありません.cron というものを使って,定期的に自動実行させてこそ, おもしろいのです.というわけで,Ubuntu の cron の設定方法.

$ crontab -e

というコマンドで設定ファイルが開けます.たしか,エディタが選べたはずなので,迷わず emacs を選びましょう. そして,以下の様な感じにします.PATH=…の部分は,ターミナルで

$ env

を実行して表示される PATH=…の行をコピーしておきましょう.cron の実行だとパスがないとかなったりして 困るらしいので.この辺は適当にやって下さい.

PATH=/usr/local/bin:...
# m h  dom mon dow   command
*/1 * * * * plagger -c /home/user/rsync/yaml/rss2email.yaml > /dev/null 2>&1

これで,1 分に 1 度僕の Twitter のフィードをチェックして新しいポストがあればまとめて Gmail してくれるという すさまじい cron の完成です w crontab の書き方は適当に調べて下さい.めんどくさい.ちなみに, 最後の「 > /dev/null 2>&1」は無いとダメらしいので忘れずに.

Enjoy Plagger!! 僕の作ったプラグインはgithubに置きました

というわけで,OS 入れるところから cron でまわすまで駆け足で説明しました.VirtualBox で入れた OS なら どんな状況になっても構わないでしょうから,ガンガンいじくってみましょう w

さて,僕が作ったプラグイン(人のをコピーしただけのもありますが w)は github に置いてます. 使い方分かる人は持って行って使って下さい.細かい使い方はまたあとでエントリにするつもりです.

base.yaml のプラグインの場所が怪しげに github とか入ってたわけはこれです w あと,yaml とか cache は rsync することで,普段走らせる自宅サーバと MacBook の VirtualBox 上のサーバで同期させています. なので,rsync とかがパスに入ってます.この辺のやり方も後日エントリにするつもりです.

あとがき

・・・,疲れた><

後日エントリにするつもり,とか書いたけど,求められないと多分書かない気がする w というわけで,読んだ方はコメントなんか頂けると励みになります><

みんなで Plagger 楽しもうぜ!