懲りもせずPlaggerのインストール
だいぶ前に
を書いたのですが、perlbrewまでしか入れていませんでした。
今回はなるべくモジュールの手数を取らずにインストールまで進めるよう書いてみました。
まず初めに。なぜ今頃Plaggerなのか。それは各サイトの情報を効率よく集め、通勤途中で見るためです。どのサイトもモバイルに適しているので問題ないと思いますが、私の通勤途中の大半は地下など電波が届かない場所がいくつかあります。その間何もしないのも一つの手なのでしょう。けれど自分はせっかく起きているのに情報を得られないのはちょっともったいないと思ってしまう性分のようです。
Plagger何それと言われる方が大半だと思います。Plaggerは10年位前に流行ったperlで書かれたフィードアグリゲーターと呼ばれる物です。フィードとは各サイトなどの要約の事でPlaggerは様々な機能でフィードを加工、出力する事が可能です。例えばサイトの文章を丸ごと取り込んでメールで送信など朝飯前で、やろうと思えば有名な所で「検索で腹減った」というアクションに対して「ピザを注文する」という離れ業などもできます。私の場合主要ニュースサイトの各記事全文を写真なども丸ごと取り込み、RSSというフォーマットに変換してサイトに保存します。それをスマホのFlymというRSSリーダーで定時毎に取り込んでおきます。Flymはオフラインで閲覧可能でいつでも見られます。
やり方は色々とありますが自分はこの方法が一番合っていると思っています。
今回はまずPlaggerコマンド自体が動くまでを記載しようかなと思います。
今回は導入の敷居を低くするためにWindowsをベースで導入しましたが手順さえ覚えてしまえばperlを任意で入れられるレンタルサーバーに導入することも可能です。
では早速インストールしていきましょう。
事前準備
vagrantとvirtualboxは適宜インストールしておいて下さい。
vagrantは2.2.7。Virtualboxは6.1.2r135662で稼働させました。
また。作業にはコピペが多く使われます。コマンドプロンプトでも問題ないかもしれませんが作業しやすい代用のシェルの利用をお勧めします。私の場合Git for Windowsを入れてあるのでそのシェルを使っています。Git for Windowsは2.25.0を使っています。
早速構築していきます。任意のフォルダを作成しそこでシェルを起動してください。
ベースとなるBoxはcentos/7を選択しました。centos/8で動かそうと思ったのですが勝手が違い過ぎて慣れてる方を選択しました。centos/6でも同じ方法でインストール可能です。
vagrant box add centos/7
boxが組み込まれます。次に
vagrant init centos/7
これで利用が可能になりました。早速起動してみます。
vagrant up
初回は結構時間がかかります。コーヒーでも飲んで見守って下さい。
vagrant ssh
でログインします。
仮想環境上でupdateをしていきます。
sudo yum -y update exit
ここで一旦出ます。再起動させます。
vagrant halt vagrant up vagrant ssh
続けます。
sudo yum -y groupinstall "Base" "Development tools" sudo yum install -y epel-release sudo yum -y update exit
ここで一旦出ます。再起動させます。
vagrant halt vagrant up vagrant ssh
必要なモジュールの組み込みをします。
sudo yum install -y libxml2-devel openssl-devel expat-devel readline-devel mpfr-devel apr-devel apr-util-devel httpd-devel sqlite-devel neon-devel libtidy-devel db4-devel db4-devel-static screen
最後のscreenはあってもなくても構いません。私は走らせてログを見たいなどの理由で入れてあります。
そのscreenの設定です。
vi ~/.screenrc
escape ^z^z defencoding UTF8 defscrollback 1000 startup_message off log on deflog on logfile "~/.screenlog/screen%d_%m(%y).log"
screenの使い方は別途ググって下さい。
screen
perlbrewのインストール
perlbrewをインストールします。
curl -kL http://install.perlbrew.pl | bash echo "source ~/perl5/perlbrew/etc/bashrc" >> ~/.bashrc source .bashrc
perlバージョンは5.16.3を選択しました。
perlbrew install-patchperl perlbrew install -n perl-5.16.3 perlbrew switch perl-5.16.3 perlbrew install-cpanm
先に入れておいた方がいいモジュールを導入します。
cpanm local::lib cpanm Module::Install cpanm Test::Base cpanm YAML cpanm XML::Simple cpanm XMLRPC::Lite LANG=C cpanm Crypt::SSLeay cpanm Module::Install::TestBase cpanm Encode::Detect cpanm HTTP::Cookies::Mozilla cpanm HTTP::Async cpanm WWW::Mixi cpanm WWW::Mixi::Scraper cpanm YAML::Syck cpanm WWW::Mechanize::AutoPager cpanm Module::Pluggable::Fast
Plaggerのインストール
次にplagger.gitからクローンしてきます。
git clone git://github.com/miyagawa/plagger.git cd plagger
外部モジュールをインストールしていきます。
cpanm --installdeps .
失敗しました。XML::Atomが失敗しているようです。
調べた所LibXMLが新しい為モジュール内でのテストで失敗していることが判明しました。
モジュールを落としてパッチを当てます。
cd wget https://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/XML-Atom-0.42.tar.gz tar xzvf XML-Atom-0.42.tar.gz cd XML-Atom-0.42 vi t/31-external-entities-libxml.t
書き換える内容としては一行変えます。diffを書いておきます。
Index: XML-Atom-0.42/t/31-external-entities-libxml.t =================================================================== --- XML-Atom-0.42.orig/t/31-external-entities-libxml.t +++ XML-Atom-0.42/t/31-external-entities-libxml.t @@ -50,7 +50,7 @@ EOX ## custom parser { - my $libxml = XML::LibXML->new; + my $libxml = XML::LibXML->new(expand_xinclude => 1, expand_entities => 1, load_ext_dtd => 1); my $entry = XML::Atom::Entry->new(Stream => \$xml, Parser => $libxml); is $entry->title, "Guest Author", "got title"; my $content = $entry->content->body;
書き換えたらインストール。
cpanm .
無事インストール完了。続いて他にモジュールでインストールされていない物を確認します。
cd
掃除しておきます。
rm -fr XML-Atom-0.42 rm -f XML-Atom-0.42.tar.gz
Plaggerのインストールを続けます。
cd plagger cpanm --installdeps .
1個だけインストールした後は問題無いようです。
続いてPlagger本体のインストール。
cpanm .
失敗します。大半は現在最新の情報に適していない又は閉鎖されたサイトを確認しに行っているなどのエラーが多いです。流行ったの10年前位ですからね。一応モジュールを探しに行って失敗している部分の追加モジュールをインストールします。
cpanm POE::Component::IKC::ClientLite cpanm Net::Telnet
再度チャレンジ
cpanm .
うーん。これでも駄目ですね。ただ他には特段目立ったエラーが見当たらないのでノーテストでインストールします。
cpanm --notest .
完了しました!続いて必要そうな設定を追加していきます。
exit(screen分)
exit(vagrant up分)
Plagger::Plugin::CustomFeed::Configの導入
https://web.archive.org/web/20190726075913/http://plagger.g.hatena.ne.jp/Seacolor/20060820/1156077875からPlagger::Plugin::CustomFeed::Configの部分をConfig.pmとして書き写します。できたファイルをvagrantのホームディレクトリに保存します。コピペでも構わないがファイル転送の機能を知っておくのも勉強になります。
vagrantで利用している設定をファイルに書き出します。
vagrant ssh-config > ssh.config
その設定を利用してファイル転送を行います。
scp -F ssh.config Config.pm vagrant@default:~/
入っているか確認します。
vagrant ssh ls
無事入っていることを確認出来たらモジュールを移動します。
mv Config.pm perl5/perlbrew/perls/perl-5.16.3/lib/site_perl/5.16.3/Plagger/Plugin/CustomFeed/
整いました!
plagger -v
でPlagger version 0.7.17と出れば一応動いていると言えます。
今回導入したモジュール類は
perl5/perlbrew/perls/perl-5.16.3/lib/site_perl/5.16.3/Plagger/に。
assetsと呼ばれるファイル群は
/home/vagrant/plagger/assets
にそれぞれ入っています。yamlでの指定に利用して下さい
Plaggerの使い方は色々なサイトで書かれています。ぜひ探してみて下さい。
私の方でもサンプルが載せられるようにしてみたいと思います。
コメント