CentOS6にmetacpanのバックエンドAPIをセットアップしてみた
CentOS6にmetacpanのバックエンドAPI (https://github.com/CPAN-API/cpan-api) をセットアップしてみたのでメモ。CentOS6は最小インストールの状態からです。
公式ドキュメント(https://github.com/CPAN-API/cpan-api/wiki/Installation)に沿って解説してます。elasticsearchは使ってみるの初めてでしたが案外簡単に使えるもんですね。日本語周りは確認してないですが。
一般ユーザを追加
useradd -m mitz passwd visudo # enable sudo su - mitz
必要そうなパッケージをインストール
sudo yum install vim-enhanced git httpd bison byacc cpp csh make automake pg zip gmake gcc openssl-devel openssl-perl libxml2-devel expat-devel wget curl
perlbrewインストール
curl -kL http://install.perlbrew.pl | bash echo "source ~/perl5/perlbrew/etc/bashrc" >> .bash_profile source ~/.bash_profile
perlbrewのセットアップ
perlbrew install perl-5.16.2 perlbrew install-cpanm perlbrew install-ack perlbrew switch perl-5.16.2 perlbrew use # 確認
elasticsearchのインストール
Javaが必要なのでoracleサイトからダウンロードしてインストール。
sudo yum install wget curl wget -O jre-7u13-linux-x64.rpm http://javadl.sun.com/webapps/download/AutoDL?BundleId=73849 # jdkはブラウザでDL sudo rpm -ivh jre-7u13-linux-x64.rpm sudo rpm -ivh jdk-7u13-linux-x64.rpm
elasticsearchのダウンロード&インストール
mkdir -p ~/work/elasticsearch cd ~/work/elasticsearch wget http://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.20.5.tar.gz tar xzvf elasticsearch-0.20.5.tar.gz cd elasticsearch-0.20.5 ./bin/elasticsearch -f # 起動確認
cpan-apiのセットアップ
cd ~/work git clone https://github.com/CPAN-API/cpan-api.git cd cpan-api cpanm --installdeps .
cpanパッケージ置き場を作成。ここにauthors/*/**
の形式でtar.gzを置く。
mkdir cpan
マニュアル通りに metacpan_server_local.conf
を作成
touch metacpan_server_local.conf echo "cpan /home/mitz/work/cpan-api/cpan" > metacpan_server_local.conf
cpan-apiのテスト実行
~/work/elasticsearch/elasticsearch-0.20.5/bin/elasticsearch -f -Des.http.port=9900 -Des.cluster.name=testing prove -lv t/
テストがすんなり通らない。。。エラー出てるのは下記の3つ。
t/document/file.t
not ok 25 # Failed test at t/document/file.t line 219. # got: 'hot stuff Foo * Bar POD ERRORS Hey! The above document had some coding errors, which a re explained below: Around line 9: Expected text after =item, not a bullet' # expected: 'hot stuff Foo * Bar'
これはPODフォーマットのエラーですぐ直せるので無視。
t/release/moose.t
not ok 1 - only one moose is first # Failed test 'only one moose is first' # at t/release/moose.t line 17. # got: '2' # expected: '1'
"only one moose is first" なのに 2つ検出されているぽい。MooseやらAny::MooseやらMouseやMooがらみっぽいのでスルー。
t/server/controller/diff.t
not ok 4 - found one patch for Changes # Failed test 'found one patch for Changes' # at t/server/controller/diff.t line 103. # got: '0' # expected: '1' ok 5 - GET /diff/Moose/DOY... ok 6 - code 200 ok 7 - valid json ok 8 - json matches with previous run ok 9 - GET diff Moose.pm ok 10 - code 200 ok 11 - valid json not ok 12 - found one patch for lib/Moose.pm # Failed test 'found one patch for lib/Moose.pm' # at t/server/controller/diff.t line 103. # got: '0' # expected: '1' ok 13 - 200 OK ok 14 - valid json not ok 15 - found one patch for lib/Encoding/CP1252.pm # Failed test 'found one patch for lib/Encoding/CP1252.pm' # at t/server/controller/diff.t line 103. # got: '0' # expected: '1' ok 16 - 200 OK ok 17 - valid json not ok 18 - found one patch for lib/Encoding/UTF8.pm # Failed test 'found one patch for lib/Encoding/UTF8.pm' # at t/server/controller/diff.t line 103. # got: '0' # expected: '1'
これもMooseがらみ。下手に手出すと火傷しそうなのでスルー。。。
elasticsearchのインデックス生成
--deleteすると既存のインデックスをクリアして再生成してくれるそうです。
~/work/elasticsearch/elasticsearch-0.20.5/bin/elasticsearch -f ./bin/metacpan mapping --delete 2013/02/19 20:19:32 I mapping: Putting mapping to ElasticSearch server
勝手モジュールをインデックスに追加
マニュアルだとmetacpan_server_local.conf
にcpanオプションの設定書いて置いてね、とありますが置いても読んでくれてなかったので--cpan
オプションでCLIから指定してます。
あと、--cpan
で指定したディレクトリの下に勝手モジュール展開しておきましょう。
./bin/metacpan release --cpan ./cpan/ ./cpan/authors/id/ 2013/02/19 20:22:33 I release: Looking for tarballs in ./cpan/authors/id/ 2013/02/19 20:22:35 W release: cpan/modules/06perms.txt could not be found. 2013/02/19 20:22:35 I release: Processing cpan/authors/id/M/MI/MITZ/Foo-Bar-0.01.tar.gz
Authorのインデックス
サンプルファイルはcpan.cpantesters.orgから00whois.xmlからダウンロードしてね、とあるのでその通りに実行。
wget -O ./cpan/authors/00whois.xml cpan.cpantesters.org/authors/00whois.xml ./bin/metacpan author --cpan ./cpan/
APIサーバ起動
Twiggyがインストールされてると使おうとするのでcpanmからインストールしてplackup。
cpanm Twiggy plackup
ブラウザから確認
http://localhost:5000/ にアクセスして下記のようなJSONが表示されればOKです。http://api.metacpan.org/で表示されるものと同じ形式のやつですね。JSONVIEW入れてると確認には便利です。