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 に置いてます. 使い方分かる人は持って行って使って下さい.細かい使い方はまたあとでエントリにするつもりです.
-
riywo’s plagger at master — GitHub
-
Publish::Tumblr
-
Publish::HatenaBookmark(改造)
-
Filter::TwitterQuote
-
Filter::RemoveTags
-
Filter::Reverse(コピー)
-
base.yaml のプラグインの場所が怪しげに github とか入ってたわけはこれです w あと,yaml とか cache は rsync することで,普段走らせる自宅サーバと MacBook の VirtualBox 上のサーバで同期させています. なので,rsync とかがパスに入ってます.この辺のやり方も後日エントリにするつもりです.
あとがき
・・・,疲れた><
後日エントリにするつもり,とか書いたけど,求められないと多分書かない気がする w というわけで,読んだ方はコメントなんか頂けると励みになります><
みんなで Plagger 楽しもうぜ!