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楽しもうぜ!