Carton • Slow for large installs • Relies on cpanm internals • Git support is hard • Update/Rollback is unreliable • -‐-‐deployment is confusing • carton
exec doesn't check on development
➜
perl
Makefile.PL
Checking
if
your
kit
is
complete...
Looks
good
Generating
a
Unix-‐style
Makefile
Writing
Makefile
for
Try::Tiny
Writing
MYMETA.yml
and
MYMETA.json
➜
make
cp
lib/Try/Tiny.pm
blib/lib/Try/Tiny.pm
Manifying
1
pod
document
➜
perl
Makefile.PL
Checking
if
your
kit
is
complete...
Looks
good
Generating
a
Unix-‐style
Makefile
Writing
Makefile
for
Try::Tiny
Writing
MYMETA.yml
and
MYMETA.json
➜
make
cp
lib/Try/Tiny.pm
blib/lib/Try/Tiny.pm
Manifying
1
pod
document
The idea • Builds all modules without installing them • Manages these "blib"s (call them artifacts) • Chooses artifact paths dynamically on dev • Freezes artifact paths statically on prod
cpanm • Loved by the users • Mixed feelings by the developer (me) • God class, Hard to refactor • Grown out of a pre-fatpack single script • Not extensible