Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Installation & Configuration of Modern Perl

78244476bb128a3a10522fc215bd2e83?s=47 Stevan Little
September 10, 2013

Installation & Configuration of Modern Perl

This is a talk I gave at the Connecticut Perl Mongers meeting.

78244476bb128a3a10522fc215bd2e83?s=128

Stevan Little

September 10, 2013
Tweet

Transcript

  1. Installation & Configuration of Modern Perl Stevan Little stevan.little@iinteractive.com CT

    Perl Developers Meetup Tuesday, September 10, 2013 with perlbrew, cpanminus and more.
  2. How many people ...

  3. How many people ... • use system Perl?

  4. How many people ... • use system Perl? • use

    Perl on a system without root access?
  5. How many people ... • use system Perl? • use

    Perl on a system without root access? • work with sysadmins who don’t like to install modules?
  6. None
  7. Perl is Infrastructure

  8. perlbrew

  9. perlbrew • installs Perl in your $HOME directory

  10. perlbrew • installs Perl in your $HOME directory • http://perlbrew.pl

  11. perlbrew • installs Perl in your $HOME directory • http://perlbrew.pl

    • https://metacpan.org/release/App-perlbrew
  12. perlbrew

  13. perlbrew • curl -L http://install.perlbrew.pl | bash

  14. perlbrew • curl -L http://install.perlbrew.pl | bash • sudo cpan

    App::perlbrew && perlbrew init
  15. perlbrew

  16. perlbrew ‣ perlbrew install perl-5.18.0

  17. perlbrew ‣ perlbrew install perl-5.18.0 - installs side-by-side (not overwrite)

  18. perlbrew ‣ perlbrew install perl-5.18.0 - installs side-by-side (not overwrite)

    ‣ perlbrew switch perl-5.18.0
  19. perlbrew ‣ perlbrew install perl-5.18.0 - installs side-by-side (not overwrite)

    ‣ perlbrew switch perl-5.18.0 - not used until explicitly activated
  20. 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
  21. 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)
  22. perlbrew

  23. perlbrew ‣ perlbrew list

  24. perlbrew ‣ perlbrew list - shows list of perls you

    have available
  25. perlbrew ‣ perlbrew list - shows list of perls you

    have available ‣ perlbrew available
  26. perlbrew ‣ perlbrew list - shows list of perls you

    have available ‣ perlbrew available - shows list of perls that are available to install
  27. 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
  28. 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
  29. 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
  30. 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
  31. perlbrew

  32. perlbrew ‣ perlbrew self-upgrade

  33. perlbrew ‣ perlbrew self-upgrade - way to upgrade perlbrew itself

  34. perlbrew ‣ perlbrew self-upgrade - way to upgrade perlbrew itself

    ‣ perlbrew install-cpanm
  35. perlbrew ‣ perlbrew self-upgrade - way to upgrade perlbrew itself

    ‣ perlbrew install-cpanm - way to install cpan-minus (more on that soon)
  36. perlbrew ‣ perlbrew self-upgrade - way to upgrade perlbrew itself

    ‣ perlbrew install-cpanm - way to install cpan-minus (more on that soon) ‣ perlbrew lib
  37. 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)
  38. plenv

  39. plenv • An alternative to perlbrew

  40. plenv • An alternative to perlbrew • https://github.com/tokuhirom/plenv

  41. plenv • An alternative to perlbrew • https://github.com/tokuhirom/plenv • does

    not depend on perl, written in bash
  42. plenv • An alternative to perlbrew • https://github.com/tokuhirom/plenv • does

    not depend on perl, written in bash • less invasive to environment
  43. 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
  44. 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)
  45. 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 :)
  46. plenv

  47. plenv ‣ plenv install perl-5.18.0

  48. plenv ‣ plenv install perl-5.18.0 - installs side-by-side, no overwrite,

    just like perlbrew
  49. plenv ‣ plenv install perl-5.18.0 - installs side-by-side, no overwrite,

    just like perlbrew ‣ plenv global 5.16.2
  50. 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
  51. 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
  52. 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)
  53. 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
  54. 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
  55. plenv

  56. plenv ‣ plenv exec ack ...

  57. plenv ‣ plenv exec ack ... - similar to perlbrew

    you can exec via plenv
  58. plenv ‣ plenv exec ack ... - similar to perlbrew

    you can exec via plenv ‣ plenv install-cpanm
  59. plenv ‣ plenv exec ack ... - similar to perlbrew

    you can exec via plenv ‣ plenv install-cpanm - also comes with useful utilities for cpanm
  60. 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
  61. 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
  62. local::lib

  63. local::lib • manage perl modules in your $HOME directory

  64. local::lib • manage perl modules in your $HOME directory •

    https://metacpan.org/release/local::lib
  65. local::lib • manage perl modules in your $HOME directory •

    https://metacpan.org/release/local::lib • works well with custom perl or system perl
  66. local::lib

  67. local::lib ‣ use local::lib;

  68. local::lib ‣ use local::lib; - will look in ~/perl5 for

    local perl modules
  69. local::lib ‣ use local::lib; - will look in ~/perl5 for

    local perl modules ‣ use local::lib “~/foo”;
  70. 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
  71. 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
  72. 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
  73. 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
  74. 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
  75. cpanm

  76. cpanm • Smaller, faster, easier CPAN client

  77. cpanm • Smaller, faster, easier CPAN client • https://metacpan.org/release/App-cpanminus

  78. cpanm • Smaller, faster, easier CPAN client • https://metacpan.org/release/App-cpanminus •

    Zero-conf
  79. cpanm • Smaller, faster, easier CPAN client • https://metacpan.org/release/App-cpanminus •

    Zero-conf • Plays well with other tools
  80. cpanm • Smaller, faster, easier CPAN client • https://metacpan.org/release/App-cpanminus •

    Zero-conf • Plays well with other tools • perlbrew
  81. cpanm • Smaller, faster, easier CPAN client • https://metacpan.org/release/App-cpanminus •

    Zero-conf • Plays well with other tools • perlbrew • local::lib
  82. 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)
  83. 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)
  84. cpanm

  85. cpanm ‣ curl -L http://cpanmin.us | perl - --sudo App::cpanminus

  86. cpanm ‣ curl -L http://cpanmin.us | perl - --sudo App::cpanminus

    - install from the internet into system perl (note the sudo)
  87. 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
  88. 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
  89. 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
  90. 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
  91. 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
  92. 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
  93. cpanm

  94. cpanm ‣ cpanm Plack

  95. cpanm ‣ cpanm Plack - install a distribution

  96. cpanm ‣ cpanm Plack - install a distribution ‣ cpanm

    Plack/Request.pm
  97. cpanm ‣ cpanm Plack - install a distribution ‣ cpanm

    Plack/Request.pm - install the distribution this module belongs too
  98. cpanm ‣ cpanm Plack - install a distribution ‣ cpanm

    Plack/Request.pm - install the distribution this module belongs too ‣ cpanm MIYAGAWA/Plack-1.0000.tar.gz
  99. 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
  100. 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
  101. 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
  102. cpanm

  103. cpanm ‣ cpanm http://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/Plack-0.9990.tar.gz

  104. cpanm ‣ cpanm http://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/Plack-0.9990.tar.gz - install a random tar ball

    from the internet
  105. 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
  106. 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
  107. 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/Plack.git@1.0000
  108. 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/Plack.git@1.0000 - install a specific tag from a git repository
  109. 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/Plack.git@1.0000 - install a specific tag from a git repository ‣ cpanm git://github.com/plack/Plack.git@devel
  110. 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/Plack.git@1.0000 - install a specific tag from a git repository ‣ cpanm git://github.com/plack/Plack.git@devel - install a specific branch from a git repository
  111. cpanm

  112. cpanm ‣ cpanm Plack~1.0000

  113. cpanm ‣ cpanm Plack~1.0000 - install 1.0000 or later

  114. cpanm ‣ cpanm Plack~1.0000 - install 1.0000 or later ‣

    cpanm Plack~”>= 1.0000, < 2.0000”
  115. 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
  116. 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 Plack@0.9990
  117. 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 Plack@0.9990 - install a specific version (same as Plack~"== 0.9990")
  118. cpanm

  119. cpanm ‣ cpanm --force CGI

  120. cpanm ‣ cpanm --force CGI - force install even if

    the tests don’t pass
  121. cpanm ‣ cpanm --force CGI - force install even if

    the tests don’t pass ‣ cpanm --notest Moose
  122. 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)
  123. 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
  124. 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
  125. 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
  126. 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
  127. cpanm

  128. cpanm ‣ cpanm --showdeps .

  129. cpanm ‣ cpanm --showdeps . - will list all the

    dependencies it finds for code
  130. cpanm ‣ cpanm --showdeps . - will list all the

    dependencies it finds for code ‣ cpanm --installdeps .
  131. cpanm ‣ cpanm --showdeps . - will list all the

    dependencies it finds for code ‣ cpanm --installdeps . - will install all the dependencies it finds
  132. cpanfile

  133. cpanfile • A format for describing CPAN dependencies

  134. cpanfile • A format for describing CPAN dependencies • https://metacpan.org/release/Module-CPANfile

  135. cpanfile • A format for describing CPAN dependencies • https://metacpan.org/release/Module-CPANfile

    • See also
  136. cpanfile • A format for describing CPAN dependencies • https://metacpan.org/release/Module-CPANfile

    • See also • https://speakerdeck.com/miyagawa/cpanfile
  137. cpanfile

  138. cpanfile • Based on Module::Install DSL

  139. cpanfile • Based on Module::Install DSL • A foundation for

    other tools
  140. cpanfile • Based on Module::Install DSL • A foundation for

    other tools ‣ cpanm --installdeps .
  141. cpanfile • Based on Module::Install DSL • A foundation for

    other tools ‣ cpanm --installdeps . • Carton (more on that later)
  142. Carton

  143. Carton • A tool for managing CPAN dependencies

  144. Carton • A tool for managing CPAN dependencies • https://metacpan.org/release/Carton

  145. Carton • A tool for managing CPAN dependencies • https://metacpan.org/release/Carton

    • See also
  146. Carton • A tool for managing CPAN dependencies • https://metacpan.org/release/Carton

    • See also • http://weblog.bulknews.net/post/59613058560/carton-1-0-screencast
  147. 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
  148. Carton

  149. Carton • Inspired by Ruby’s Bundler module

  150. Carton • Inspired by Ruby’s Bundler module • Built on

    top of cpanfile, cpanm & local::lib
  151. Carton • Inspired by Ruby’s Bundler module • Built on

    top of cpanfile, cpanm & local::lib • Still relatively new (read: not totally stable)
  152. Carton

  153. Carton • Manages and installs all modules project local

  154. Carton • Manages and installs all modules project local •

    but not checked into version control
  155. Carton • Manages and installs all modules project local •

    but not checked into version control • Uses a cpanfile to keep track of depdencies
  156. 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
  157. 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
  158. 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
  159. 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
  160. 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 ...
  161. Go watch this! ! http://weblog.bulknews.net/post/59613058560/carton-1-0-screencast

  162. Pinto

  163. Pinto • A(nother) tool for managing CPAN dependencies

  164. Pinto • A(nother) tool for managing CPAN dependencies • https://metacpan.org/release/Pinto

  165. Pinto • A(nother) tool for managing CPAN dependencies • https://metacpan.org/release/Pinto

    • See also
  166. Pinto • A(nother) tool for managing CPAN dependencies • https://metacpan.org/release/Pinto

    • See also • http://perlmaven.com/pinto-tutorial
  167. Pinto • A(nother) tool for managing CPAN dependencies • https://metacpan.org/release/Pinto

    • See also • http://perlmaven.com/pinto-tutorial • http://www.youtube.com/watch?v=oaBBVZFhJUk
  168. Pinto

  169. Pinto • Inspired by actual CPAN infrastructure

  170. Pinto • Inspired by actual CPAN infrastructure • creates a

    company-wide local CPAN
  171. Pinto • Inspired by actual CPAN infrastructure • creates a

    company-wide local CPAN • works with all tools (CPAN, cpanm, etc.)
  172. 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
  173. 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
  174. Pinto

  175. Pinto • Manages and installs modules into a “repository”

  176. Pinto • Manages and installs modules into a “repository” •

    separate from you VCS and (possibly) non-local
  177. Pinto • Manages and installs modules into a “repository” •

    separate from you VCS and (possibly) non-local • Repositories can be copied into “stacks”
  178. 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
  179. 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”
  180. 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)
  181. 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
  182. 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