Skip to content
monken edited this page Aug 5, 2011 · 28 revisions

If you want to run MetaCPAN locally (why not?), here are a few tips to get you started:

Install ElasticSearch

You can download ElasticSearch at http://www.elasticsearch.org/download/. Make sure you download the latest version (0.16). After you unzip it, run the following command:

bin/elasticsearch -f

If you get a "Can't start up: not enough memory" error when trying to start ElasticSearch, you likely need to update your JRE. On Ubuntu:

# fixes "not enough memory" errors
sudo apt-get install openjdk-6-jre

Install cpanminus

If you haven't installed cpanminus already, see http://search.metacpan.org/#/showpod/App::cpanminus

Clone the Git Repositories

git clone https://github.com/CPAN-API/cpan-api.git
cd cpan-api
git submodule init
git submodule update

Install Dependencies

dzil authordeps  | cpanm
dzil listdeps  | cpanm

Create the ElasticSearch Index

bin/metacpan mapping

Begin Indexing Your Modules

bin/metacpan release /path/to/cpan/authors/id/

You should note that you can index either your CPAN mirror or a minicpan mirror. You can even index just parts of a mirror:

bin/metacpan release /path/to/cpan/authors/id/{A,B}

Tag the Latest Releases

bin/metacpan latest

Index Author Data

bin/metacpan author --cpan /path/to/cpan/

Note that minicpan doesn't provide the 00whois.xml file which is used to generate the index; you will have to download it manually (it is in the authors/ directory) in order to index authors. It also doesn't include author.json files, so that data will also be missing unless you get it from somewhere else.

Set Up Custom URL Endpoints

Create a file metacpan_server_local.conf with the full path name to the CPAN:

cpan /PATH/TO/CPAN

Starts API server on port 5000

plackup

Notes

For a full list of options:

bin/metacpan release --help

EV may seem to take forever to install because the test suite hangs, so you may have to install it without first running the test suite:

cpanm --notest EV

Meta

Clone this wiki locally