summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README165
1 files changed, 165 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..32be945
--- /dev/null
+++ b/README
@@ -0,0 +1,165 @@
+NAME
+
+ Carton - Perl module dependency manager (aka Bundler for Perl)
+
+SYNOPSIS
+
+ # On your development environment
+ > cat cpanfile
+ requires 'Plack', '0.9980';
+ requires 'Starman', '0.2000';
+
+ > carton install
+ > git add cpanfile cpanfile.snapshot
+ > git commit -m "add Plack and Starman"
+
+ # Other developer's machine, or on a deployment box
+ > carton install
+ > carton exec starman -p 8080 myapp.psgi
+
+AVAILABILITY
+
+ Carton only works with perl installation with the complete set of core
+ modules. If you use perl installed by a vendor package with modules
+ stripped from core, Carton is not expected to work correctly.
+
+ Also, Carton requires you to run your command/application with carton
+ exec command, which means it's difficult or impossible to run in an
+ embedded perl use case such as mod_perl.
+
+DESCRIPTION
+
+ carton is a command line tool to track the Perl module dependencies for
+ your Perl application. Dependencies are declared using cpanfile format,
+ and the managed dependencies are tracked in a cpanfile.snapshot file,
+ which is meant to be version controlled, and the snapshot file allows
+ other developers of your application will have the exact same versions
+ of the modules.
+
+ For cpanfile syntax, see cpanfile documentation.
+
+TUTORIAL
+
+ Initializing the environment
+
+ carton will use the local directory to install modules into. You're
+ recommended to exclude these directories from the version control
+ system.
+
+ > echo local/ >> .gitignore
+ > git add cpanfile cpanfile.snapshot
+ > git commit -m "Start using carton"
+
+ Tracking the dependencies
+
+ You can manage the dependencies of your application via cpanfile.
+
+ # cpanfile
+ requires 'Plack', '0.9980';
+ requires 'Starman', '0.2000';
+
+ And then you can install these dependencies via:
+
+ > carton install
+
+ The modules are installed into your local directory, and the
+ dependencies tree and version information are analyzed and saved into
+ cpanfile.snapshot in your directory.
+
+ Make sure you add cpanfile and cpanfile.snapshot to your version
+ controlled repository and commit changes as you update dependencies.
+ This will ensure that other developers on your app, as well as your
+ deployment environment, use exactly the same versions of the modules
+ you just installed.
+
+ > git add cpanfile cpanfile.snapshot
+ > git commit -m "Added Plack and Starman"
+
+ Deploying your application
+
+ Once you've done installing all the dependencies, you can push your
+ application directory to a remote machine (excluding local and .carton)
+ and run the following command:
+
+ > carton install --deployment
+
+ This will look at the cpanfile.snapshot and install the exact same
+ versions of the dependencies into local, and now your application is
+ ready to run.
+
+ The --deployment flag makes sure that carton will only install modules
+ and versions available in your snapshot, and won't fallback to query
+ for CPAN Meta DB for missing modules.
+
+ Bundling modules
+
+ carton can bundle all the tarballs for your dependencies into a
+ directory so that you can even install dependencies that are not
+ available on CPAN, such as internal distribution aka DarkPAN.
+
+ > carton bundle
+
+ will bundle these tarballs into vendor/cache directory, and
+
+ > carton install --cached
+
+ will install modules using this local cache. Combined with --deployment
+ option, you can avoid querying for a database like CPAN Meta DB or
+ downloading files from CPAN mirrors upon deployment time.
+
+PERL VERSIONS
+
+ When you take a snapshot in one perl version and deploy on another
+ (different) version, you might have troubles with core modules.
+
+ The simplest solution, which might not work for everybody, is to use
+ the same version of perl in the development and deployment.
+
+ To enforce that, you're recommended to use plenv and .perl-version to
+ lock perl versions in development.
+
+ You can also specify the minimum perl required in cpanfile:
+
+ requires 'perl', '5.16.3';
+
+ and carton (and cpanm) will give you errors when deployed on hosts with
+ perl lower than the specified version.
+
+COMMUNITY
+
+ https://github.com/miyagawa/carton
+
+ Code repository, Wiki and Issue Tracker
+
+ irc://irc.perl.org/#carton
+
+ IRC chat room
+
+AUTHOR
+
+ Tatsuhiko Miyagawa
+
+COPYRIGHT
+
+ Tatsuhiko Miyagawa 2011-
+
+LICENSE
+
+ This software is licensed under the same terms as Perl itself.
+
+SEE ALSO
+
+ cpanm
+
+ cpanfile
+
+ Bundler <http://gembundler.com/>
+
+ pip <http://pypi.python.org/pypi/pip>
+
+ npm <http://npmjs.org/>
+
+ perlrocks <https://github.com/gugod/perlrocks>
+
+ only
+