perlbrew ‣ perlbrew install perl-5.18.0 - installs side-by-side (not overwrite) ‣ perlbrew switch perl-5.18.0 - not used until explicitly activated ‣ perlbrew use perl-5.18.0 - can be use temporarily (only in this shell)
perlbrew ‣ perlbrew list - shows list of perls you have available ‣ perlbrew available - shows list of perls that are available to install ‣ perlbrew alias perl-5.18.0 newest
perlbrew ‣ perlbrew list - shows list of perls you have available ‣ perlbrew available - shows list of perls that are available to install ‣ perlbrew alias perl-5.18.0 newest - alias an existing perl to a better name
perlbrew ‣ perlbrew list - shows list of perls you have available ‣ perlbrew available - shows list of perls that are available to install ‣ perlbrew alias perl-5.18.0 newest - alias an existing perl to a better name ‣ perlbrew uninstall perl-5.6.1
perlbrew ‣ perlbrew list - shows list of perls you have available ‣ perlbrew available - shows list of perls that are available to install ‣ perlbrew alias perl-5.18.0 newest - alias an existing perl to a better name ‣ perlbrew uninstall perl-5.6.1 - delete older perl installs
perlbrew ‣ perlbrew self-upgrade - way to upgrade perlbrew itself ‣ perlbrew install-cpanm - way to install cpan-minus (more on that soon) ‣ perlbrew lib
perlbrew ‣ perlbrew self-upgrade - way to upgrade perlbrew itself ‣ perlbrew install-cpanm - way to install cpan-minus (more on that soon) ‣ perlbrew lib - way to manage local::lib dirs (more on that soon)
plenv • An alternative to perlbrew • https://github.com/tokuhirom/plenv • does not depend on perl, written in bash • less invasive to environment • specifically made to work with Carton
plenv • An alternative to perlbrew • https://github.com/tokuhirom/plenv • does not depend on perl, written in bash • less invasive to environment • specifically made to work with Carton • (more about that later)
plenv • An alternative to perlbrew • https://github.com/tokuhirom/plenv • does not depend on perl, written in bash • less invasive to environment • specifically made to work with Carton • (more about that later) • I only just learned about it :)
plenv ‣ plenv install perl-5.18.0 - installs side-by-side, no overwrite, just like perlbrew ‣ plenv global 5.16.2 - sets the perl for all shells ‣ plenv shell 5.8.2
plenv ‣ plenv install perl-5.18.0 - installs side-by-side, no overwrite, just like perlbrew ‣ plenv global 5.16.2 - sets the perl for all shells ‣ plenv shell 5.8.2 - can be use temporarily (only in this shell)
plenv ‣ plenv install perl-5.18.0 - installs side-by-side, no overwrite, just like perlbrew ‣ plenv global 5.16.2 - sets the perl for all shells ‣ plenv shell 5.8.2 - can be use temporarily (only in this shell) ‣ plenv local 5.18.0
plenv ‣ plenv install perl-5.18.0 - installs side-by-side, no overwrite, just like perlbrew ‣ plenv global 5.16.2 - sets the perl for all shells ‣ plenv shell 5.8.2 - can be use temporarily (only in this shell) ‣ plenv local 5.18.0 - sets the perl to be used in $CWD using .perl-version file
plenv ‣ plenv exec ack ... - similar to perlbrew you can exec via plenv ‣ plenv install-cpanm - also comes with useful utilities for cpanm ‣ plenv migrate-modules 5.8.2 5.18.0
plenv ‣ plenv exec ack ... - similar to perlbrew you can exec via plenv ‣ plenv install-cpanm - also comes with useful utilities for cpanm ‣ plenv migrate-modules 5.8.2 5.18.0 - and useful means of transfering module installs
local::lib ‣ use local::lib; - will look in ~/perl5 for local perl modules ‣ use local::lib “~/foo”; - will look in ~/foo for local perl modules ‣ perl -Mlocal::lib=~/foo script.pl
local::lib ‣ use local::lib; - will look in ~/perl5 for local perl modules ‣ use local::lib “~/foo”; - will look in ~/foo for local perl modules ‣ perl -Mlocal::lib=~/foo script.pl - or you can use it from the command line
local::lib ‣ use local::lib; - will look in ~/perl5 for local perl modules ‣ use local::lib “~/foo”; - will look in ~/foo for local perl modules ‣ perl -Mlocal::lib=~/foo script.pl - or you can use it from the command line ‣ PERL_MB_OPT PERL_MM_OPT PERL5LIB
local::lib ‣ use local::lib; - will look in ~/perl5 for local perl modules ‣ use local::lib “~/foo”; - will look in ~/foo for local perl modules ‣ perl -Mlocal::lib=~/foo script.pl - or you can use it from the command line ‣ PERL_MB_OPT PERL_MM_OPT PERL5LIB - or configure your environment to automatically use it
cpanm • Smaller, faster, easier CPAN client • https://metacpan.org/release/App-cpanminus • Zero-conf • Plays well with other tools • perlbrew • local::lib • cpanfile (more on that later)
cpanm • Smaller, faster, easier CPAN client • https://metacpan.org/release/App-cpanminus • Zero-conf • Plays well with other tools • perlbrew • local::lib • cpanfile (more on that later) • Carton (more on that later)
cpanm ‣ curl -L http://cpanmin.us | perl - --sudo App::cpanminus - install from the internet into system perl (note the sudo) ‣ curl -L http://cpanmin.us | perl - App::cpanminus
cpanm ‣ curl -L http://cpanmin.us | perl - --sudo App::cpanminus - install from the internet into system perl (note the sudo) ‣ curl -L http://cpanmin.us | perl - App::cpanminus - install in a non-system (local) perl
cpanm ‣ curl -L http://cpanmin.us | perl - --sudo App::cpanminus - install from the internet into system perl (note the sudo) ‣ curl -L http://cpanmin.us | perl - App::cpanminus - install in a non-system (local) perl ‣ perlbrew install-cpanm
cpanm ‣ curl -L http://cpanmin.us | perl - --sudo App::cpanminus - install from the internet into system perl (note the sudo) ‣ curl -L http://cpanmin.us | perl - App::cpanminus - install in a non-system (local) perl ‣ perlbrew install-cpanm - of course, this is simpler if you are using perlbrew
cpanm ‣ curl -L http://cpanmin.us | perl - --sudo App::cpanminus - install from the internet into system perl (note the sudo) ‣ curl -L http://cpanmin.us | perl - App::cpanminus - install in a non-system (local) perl ‣ perlbrew install-cpanm - of course, this is simpler if you are using perlbrew ‣ perl -MCPAN -i App::cpanminus
cpanm ‣ curl -L http://cpanmin.us | perl - --sudo App::cpanminus - install from the internet into system perl (note the sudo) ‣ curl -L http://cpanmin.us | perl - App::cpanminus - install in a non-system (local) perl ‣ perlbrew install-cpanm - of course, this is simpler if you are using perlbrew ‣ perl -MCPAN -i App::cpanminus - do it the old fashioned way
cpanm ‣ cpanm Plack - install a distribution ‣ cpanm Plack/Request.pm - install the distribution this module belongs too ‣ cpanm MIYAGAWA/Plack-1.0000.tar.gz
cpanm ‣ cpanm Plack - install a distribution ‣ cpanm Plack/Request.pm - install the distribution this module belongs too ‣ cpanm MIYAGAWA/Plack-1.0000.tar.gz - install a tar ball from CPAN
cpanm ‣ cpanm Plack - install a distribution ‣ cpanm Plack/Request.pm - install the distribution this module belongs too ‣ cpanm MIYAGAWA/Plack-1.0000.tar.gz - install a tar ball from CPAN ‣ cpanm /path/to/Plack-1.0000.tar.gz
cpanm ‣ cpanm Plack - install a distribution ‣ cpanm Plack/Request.pm - install the distribution this module belongs too ‣ cpanm MIYAGAWA/Plack-1.0000.tar.gz - install a tar ball from CPAN ‣ cpanm /path/to/Plack-1.0000.tar.gz - install a tar ball from disk
cpanm ‣ cpanm http://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/Plack-0.9990.tar.gz - install a random tar ball from the internet ‣ cpanm git://github.com/plack/Plack.git
cpanm ‣ cpanm http://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/Plack-0.9990.tar.gz - install a random tar ball from the internet ‣ cpanm git://github.com/plack/Plack.git - install from a git repository
cpanm ‣ cpanm http://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/Plack-0.9990.tar.gz - install a random tar ball from the internet ‣ cpanm git://github.com/plack/Plack.git - install from a git repository ‣ cpanm git://github.com/plack/[email protected]
cpanm ‣ cpanm http://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/Plack-0.9990.tar.gz - install a random tar ball from the internet ‣ cpanm git://github.com/plack/Plack.git - install from a git repository ‣ cpanm git://github.com/plack/[email protected] - install a specific tag from a git repository
cpanm ‣ cpanm http://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/Plack-0.9990.tar.gz - install a random tar ball from the internet ‣ cpanm git://github.com/plack/Plack.git - install from a git repository ‣ cpanm git://github.com/plack/[email protected] - install a specific tag from a git repository ‣ cpanm git://github.com/plack/Plack.git@devel
cpanm ‣ cpanm http://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/Plack-0.9990.tar.gz - install a random tar ball from the internet ‣ cpanm git://github.com/plack/Plack.git - install from a git repository ‣ cpanm git://github.com/plack/[email protected] - install a specific tag from a git repository ‣ cpanm git://github.com/plack/Plack.git@devel - install a specific branch from a git repository
cpanm ‣ cpanm Plack~1.0000 - install 1.0000 or later ‣ cpanm Plack~”>= 1.0000, < 2.0000” - install the latest member of the 1.xxxx family ‣ cpanm [email protected]
cpanm ‣ cpanm Plack~1.0000 - install 1.0000 or later ‣ cpanm Plack~”>= 1.0000, < 2.0000” - install the latest member of the 1.xxxx family ‣ cpanm [email protected] - install a specific version (same as Plack~"== 0.9990")
cpanm ‣ cpanm --force CGI - force install even if the tests don’t pass ‣ cpanm --notest Moose - save time and skip tests (if you know they pass) ‣ cpanm --reinstall Plack
cpanm ‣ cpanm --force CGI - force install even if the tests don’t pass ‣ cpanm --notest Moose - save time and skip tests (if you know they pass) ‣ cpanm --reinstall Plack - force an re-install of an existing package
cpanm ‣ cpanm --force CGI - force install even if the tests don’t pass ‣ cpanm --notest Moose - save time and skip tests (if you know they pass) ‣ cpanm --reinstall Plack - force an re-install of an existing package ‣ cpanm --uninstall Plack
cpanm ‣ cpanm --force CGI - force install even if the tests don’t pass ‣ cpanm --notest Moose - save time and skip tests (if you know they pass) ‣ cpanm --reinstall Plack - force an re-install of an existing package ‣ cpanm --uninstall Plack - this is experimental, but does its best to un-install
cpanfile • A format for describing CPAN dependencies • https://metacpan.org/release/Module-CPANfile • See also • https://speakerdeck.com/miyagawa/cpanfile
Carton • A tool for managing CPAN dependencies • https://metacpan.org/release/Carton • See also • http://weblog.bulknews.net/post/59613058560/carton-1-0-screencast
Carton • A tool for managing CPAN dependencies • https://metacpan.org/release/Carton • See also • http://weblog.bulknews.net/post/59613058560/carton-1-0-screencast • https://speakerdeck.com/miyagawa/carton-1-dot-0-at-oscon-2013
Carton • Manages and installs all modules project local • but not checked into version control • Uses a cpanfile to keep track of depdencies • allows for module version to be frozen
Carton • Manages and installs all modules project local • but not checked into version control • Uses a cpanfile to keep track of depdencies • allows for module version to be frozen • modules can be installed elsewhere using cpanfile
Carton • Manages and installs all modules project local • but not checked into version control • Uses a cpanfile to keep track of depdencies • allows for module version to be frozen • modules can be installed elsewhere using cpanfile • will install exactly the version or version range you tell it too
Carton • Manages and installs all modules project local • but not checked into version control • Uses a cpanfile to keep track of depdencies • allows for module version to be frozen • modules can be installed elsewhere using cpanfile • will install exactly the version or version range you tell it too • can create “cache” for installing on machine with no network
Carton • Manages and installs all modules project local • but not checked into version control • Uses a cpanfile to keep track of depdencies • allows for module version to be frozen • modules can be installed elsewhere using cpanfile • will install exactly the version or version range you tell it too • can create “cache” for installing on machine with no network • don’t take my word for it ...
Pinto • Inspired by actual CPAN infrastructure • creates a company-wide local CPAN • works with all tools (CPAN, cpanm, etc.) • soon to be a hosted service
Pinto • Inspired by actual CPAN infrastructure • creates a company-wide local CPAN • works with all tools (CPAN, cpanm, etc.) • soon to be a hosted service • http://www.stratopan.com
Pinto • Manages and installs modules into a “repository” • separate from you VCS and (possibly) non-local • Repositories can be copied into “stacks” • similar to branching in VCS and good for testing upgrades
Pinto • Manages and installs modules into a “repository” • separate from you VCS and (possibly) non-local • Repositories can be copied into “stacks” • similar to branching in VCS and good for testing upgrades • modules can be “pinned”
Pinto • Manages and installs modules into a “repository” • separate from you VCS and (possibly) non-local • Repositories can be copied into “stacks” • similar to branching in VCS and good for testing upgrades • modules can be “pinned” • prevents all upgrade (even accidental upgrade)
Pinto • Manages and installs modules into a “repository” • separate from you VCS and (possibly) non-local • Repositories can be copied into “stacks” • similar to branching in VCS and good for testing upgrades • modules can be “pinned” • prevents all upgrade (even accidental upgrade) • can also manage non-CPAN dependencies
Pinto • Manages and installs modules into a “repository” • separate from you VCS and (possibly) non-local • Repositories can be copied into “stacks” • similar to branching in VCS and good for testing upgrades • modules can be “pinned” • prevents all upgrade (even accidental upgrade) • can also manage non-CPAN dependencies • useful if you structure your application like a CPAN distro