CPANPLUS::Internals::Source::CPANMetaDB - CPAN Meta DB source implementation
# In the CPANPLUS shell CPAN Terminal> s conf no_update 1 CPAN Terminal> s conf source_engine CPANPLUS::Internals::Source::CPANMetaDB CPAN Terminal> s save
CPANPLUS::Internals::Source::CPANMetaDB is a CPANPLUS source implementation.
It is deadly experimental.
Usually CPANPLUS retrieves the CPAN index files, extracts them and builds an in-memory index of every module listed on CPAN. As you can imagine, this is quite memory intensive.
This source implementation does things slightly different.
The default CPANMetaDB site is http://cpanmetadb.appspot.com/.
You may set the
PERL5_CPANMETADB_URL environment variable to an alternative if you wish.
There are some caveats.
Attempting to searches and getting a list of out of date modules in CPANPLUS are incredibly slow due the million or so web accesses that are incurred.
I have included two scripts in the
examples directory of this distribution that may be of use.
installer.pl does installation of modules and
updater.pl will find out of date modules and prompt to update them.
The CPAN Meta DB does not index authors. This means that this source engine has to cheat by populating the
author_tree with CPANPLUS::Module::Author::Fake objects. The only thing guaranteed to be accurate is the CPAN ID of authors. Looking up a module in the
module_tree will trigger a query to the CPAN Meta DB site, from which an author object will be created.
You cannot currently query an author. Because of the implementation you will get back a CPANPLUS::Module::Author::Fake object, but the source engine just assumes what you pass in as CPAN ID is valid.
If this is a problem have a look at CPANPLUS::Internals::Source::CPANIDX instead.
CPAN Meta DB was created by Tatsuhiko Miyagawa for App::cpanminus
This software is copyright (c) 2011 by Chris Williams, Jos Boumans, Roy Hooper and Adam Kennedy.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.