vagrant+Virtualboxにplaggerを入れる

スポンサーリンク
CentOS
スポンサーリンク
懲りもせず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の使い方は色々なサイトで書かれています。ぜひ探してみて下さい。
私の方でもサンプルが載せられるようにしてみたいと思います。

コメント

タイトルとURLをコピーしました