Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/metacpan/metacpan-api
A free, open API for everything you want to know about CPAN
https://github.com/metacpan/metacpan-api
cpan hacktoberfest metacpan perl
Last synced: about 14 hours ago
JSON representation
A free, open API for everything you want to know about CPAN
- Host: GitHub
- URL: https://github.com/metacpan/metacpan-api
- Owner: metacpan
- License: other
- Created: 2010-10-30T04:43:00.000Z (over 14 years ago)
- Default Branch: master
- Last Pushed: 2024-10-30T00:58:16.000Z (3 months ago)
- Last Synced: 2024-10-30T02:57:50.651Z (3 months ago)
- Topics: cpan, hacktoberfest, metacpan, perl
- Language: Perl
- Homepage: http://www.metacpan.org/
- Size: 6.09 MB
- Stars: 290
- Watchers: 39
- Forks: 196
- Open Issues: 127
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# A Web Service for the CPAN
[![CircleCI](https://circleci.com/gh/metacpan/metacpan-api.svg?style=svg)](https://circleci.com/gh/metacpan/metacpan-api)
MetaCPAN aims to provide a free, open web service which provides metadata for
CPAN modules.## REST API
MetaCPAN is based on Elasticsearch, so it provides a RESTful interface as well
as the option to create complex queries. [The `docs/`
directory](https://github.com/metacpan/metacpan-api/blob/master/docs/API-docs.md)
provides a good starting point for REST access to MetaCPAN.## Expanding Your Author Info
MetaCPAN allows authors to add custom metadata about themselves to the index.
[Log in to MetaCPAN](https://metacpan.org/account/profile) to add more
information about yourself.## Installing Your Own MetaCPAN
If you want to run MetaCPAN locally, we encourage you to start with
[metacpan-docker](https://github.com/metacpan/metacpan-docker). However, you
may still find some info here:## Troubleshooting Elasticsearch
You can restart Elasticsearch (ES) manually if you need to troubleshoot.
```sh
sudo service elasticsearch restart
```If you are unable to access [[http://localhost:9200]] (give it a few seconds)
you should kill the Elasticsearch process and run it in foreground to see the
debug output```sh
sudo service elasticsearch stop
cd /opt/elasticsearch
sudo 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:```sh
# fixes "not enough memory" errors
sudo apt-get install openjdk-6-jre
```(Note: If you intend to try indexing a full MiniCPAN, you may find that
Elasticsearch wants to use more open filehandles than your system allows by
default. [This script](https://gist.github.com/3230962) can be used to start ES
with the appropriate ulimit adjustment).## Run the test suite
The test suite accesses Elasticsearch on port 9900. The developer VM should
have a dedicated test instance running in the background already, but if you
want to run it manually:```sh
cd /opt/elasticsearch
sudo bin/elasticsearch -f -Des.http.port=9900 -Des.cluster.name=testing
```Then run the test suite:
```sh
cd /home/metacpan/metacpan-api
./bin/prove t
```The test suite has to pass all tests.
## Create the ElasticSearch Index
```sh
./bin/run bin/metacpan mapping --delete
````--delete` will drop all indices first to clear the index from test data.
## Begin Indexing Your Modules
```sh
./bin/run 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:```sh
./bin/run bin/metacpan release /path/to/cpan/authors/id/{A,B}
```## Tag the Latest Releases
```sh
./bin/run bin/metacpan latest --cpan /path/to/cpan/
```## Index Author Data
```sh
./bin/run 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.```bash
wget -O /path/to/cpan/authors/00whois.xml cpan.cpantesters.org/authors/00whois.xml
```It also doesn't include author.json files, so that data will also be missing
unless you get it from somewhere else.## Set Up Proxy in Front of ElasticSearch
Start API server on port 5000
```sh
./bin/run plackup -p 5000 -r
```This will start a single-threaded test server. If you need extra performance,
use `Starman` instead.## Notes
For a full list of options:
```sh
./bin/run bin/metacpan release --help
```## Contributing
If you'd like to get involved, find us at #metacpan on irc.perl.org or open an
issue on GitHub and let us know what you'd like to start working on.## IRC
You can find us at #metacpan on irc.perl.org
Access it via [web interface](https://chat.mibbit.com/?channel=%23metacpan&server=irc.perl.org).