App-opan
view release on metacpan or search on metacpan
NAME
App::opan - A CPAN overlay for darkpan and pinning purposes
SYNOPSIS
Set up an opan (creates a directory tree in "pans/"):
$ opan init
$ opan pin MSTROUT/M-1.tar.gz
$ opan add ./My-Dist-1.23.tar.gz
Now, you can start the server:
$ opan daemon -l http://localhost:8030/
Server available at http://localhost:8030/
Then in another terminal, run one of:
$ cpanm --mirror http://localhost:8030/combined/ --mirror-only --installdeps .
$ PERL_CARTON_MIRROR=http://localhost:8030/combined/ carton install
Or, to let opan do that part for you, skip starting the server and run
one of:
$ opan cpanm --installdeps .
$ opan carton install
DESCRIPTION
Two basic approaches to using this thing. First, if you're using carton,
you can probably completely ignore the pinning system, so just do:
$ opan init
$ opan add ./My-DarkPan-Dist-1.23.tar.gz
$ git add pans/; git commit -m 'fresh opan'
$ opan carton install
You can reproduce this install with simply:
$ opan carton install --deployment
When you want to update to a new version of the cpan index (assuming you
already have an additional requirement that's too old in your current
snapshot):
$ opan pull
$ git add pans/; git commit -m 'update pans'
$ opan carton install
Second, if you're not using carton, but you want reproducible installs,
you can still mostly ignore the pinning system by doing:
$ opan init
$ opan add ./My-DarkPan-Dist-1.23.tar.gz
$ opan cpanm --autopin --installdeps .
$ git add pans/; git commit -m 'opan with current version pinning'
Your reproducible install is now:
$ opan cpanm --installdeps .
When you want to update to a new version of the cpan index (assuming you
already have an additional requirement that's too old in your current
snapshot):
PERL_CARTON_MIRROR=http://localhost:<port>/combined/ carton <your args here>
Can also be run with one of:
opan carton --nopin <your args here>
opan carton --autopin <your args here>
opan carton --combined <your args here>
to request a specific PAN.
PANs
upstream
02packages: Fetched from www.cpan.org by the "fetch" command.
Dist files: Fetched from www.cpan.org on-demand.
pinset
02packages: Managed by "pin" and "unpin" commands.
Dist files: Fetched from www.cpan.org by "pin" command.
custom
02packages: Managed by "add" and "unadd" commands.
Dist files: Imported from local disk by "add" command.
combined
02packages: Merged from upstream, pinset and custom PANs by "merge"
command.
Dist files: Fetched from custom, pinset and upstream in that order.
nopin
02packages: Merged from upstream and custom PANs by "merge" command.
Dist files: Fetched from custom, pinset and upstream in that order.
autopin
Virtual PAN with no presence on disk.
Identical to nopin, but fetching a dist from upstream does an implict
"pin".
Since this can modify your opan config, it's only enabled if the
environment variable "OPAN_AUTOPIN" is set to a true value (calling the
"cpanm" or "carton" commands with "--autopin" sets this for you, because
you already specified you wanted that).
uploads
To enable the /upload endpoint, set the ENV var OPAN_AUTH_TOKENS to a
colon separated list of accepted tokens for uploads. This will allow a
post with a 'file' upload argument, checking http basic auth password
against the provided auth tokens.
recurring pull
Set ENV OPAN_RECURRING_PULL to a true value to make opan automatically
pull from upstream every 600 seconds
custom upstream
Set the ENV var OPAN_MIRROR to specify a cpan mirror - the default is
www.cpan.org. Remember that if you need to temporarily overlay your
overlay but only for one user, there's nothing stopping you setting
OPAN_MIRROR to another opan.
AUTHOR
Matt S. Trout (mst) <mst@shadowcat.co.uk>
CONTRIBUTORS
Aaron Crane (arc) <arc@cpan.org>
Marcus Ramburg (marcus) <marcus.ramberg@gmail.com>
COPYRIGHT
Copyright (c) 2016-2018 the App::opan "AUTHOR" and "CONTRIBUTORS" as
listed above.
LICENSE
This library is free software and may be distributed under the same
terms as perl itself.
( run in 0.739 second using v1.01-cache-2.11-cpan-5735350b133 )