cpan-mirror-tiny - CPAN::Mirror::Tiny command line interface


  $ cpan-mirror-tiny inject    [option] url1 url2 ...
  $ cpan-mirror-tiny gen-index [option]
  $ cpan-mirror-tiny cat-index [option]
  $ cpan-mirror-tiny list      [option]
  $ cpan-mirror-tiny server    [option]


  -h, --help      show help
  -v, --version   show version
  -a, --author    specify author, default: VENDOR
  -b, --base      base directory,
                  default: $ENV{PERL_CPAN_MIRROR_TINY_BASE} or ./darkpan


  $ cpan-mirror-tiny inject cpan:Plack
  $ cpan-mirror-tiny inject cpan:Plack@1.0039
  $ cpan-mirror-tiny inject --author YOU
  $ cpan-mirror-tiny inject --author YOU git://
  $ cpan-mirror-tiny inject --author YOU /path/to/local/Module-0.01.tar.gz
  $ cpan-mirror-tiny inject --author YOU /path/to/local/dir


This is a command line interface for CPAN::Mirror::Tiny. You can easily create your darkpan with this script.


Let's create your darkpan in ./darkpan directory.

First inject distributions into your darkpan with inject command:

  # from github, with optional ref (revision/tag/branch)
  $ cpan-mirror-tiny inject --author SKAJI git://
  $ cpan-mirror-tiny inject --author SKAJI

  # from cpan, with optional version (author is automatically guessed)
  $ cpan-mirror-tiny inject cpan:Plack
  $ cpan-mirror-tiny inject cpan:Dist::Zilla@5.046

  # from http server
  $ cpan-mirror-tiny inject --author YOU

  # from local file/directory
  $ cpan-mirror-tiny inject --author YOU /path/to/local/Module-0.01.tar.gz
  $ cpan-mirror-tiny inject --author YOU /path/to/local/dir

Second, create the index file 02packages.details.txt.gz by gen-index command:

  $ cpan-mirror-tiny gen-index

Check your darkpan with list command:

  $ cpan-mirror-tiny list

Now your darkpan has your own distributions. Let's install distributions with CPAN client cpm:

  $ cpm install --resover 02packages,file://$PWD/darkpan --resover metadb Your::Module


If you want to use your darkpan in other hosts, run a http server first:

  [host1]$ cpan-mirror-tiny server
  HTTP::Server::PSGI: Accepting connections at http://0:5000/


  [host2]$ cpm install --resover 02packages,http://host1:5000 --resover metadb Your::Module

Moreover you can inject/upload your modules against http://host1:5000/upload:

inject git repositories
  [host2]$ curl --data-urlencode 'module=git://' \
                --data-urlencode 'author=SKAJI' http://host1:5000/upload
upload tarballs with cpan-upload
  [host2]$ export CPAN_UPLOADER_UPLOAD_URI=http://host1:5000/upload
  [host2]$ cpan-upload --user SKAJI --password dummy /path/to/local/Module-0.01.tar.gz

Note that cpan-mirror-tiny server accepts the same options as plackup such as --port, --server:

  [host1]$ cpan-mirror-tiny server --server Starman --port 8888