$30 off During Our Annual Pro Sale. View Details »

Installation & Configuration of Modern Perl

Stevan Little
September 10, 2013

Installation & Configuration of Modern Perl

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

Stevan Little

September 10, 2013
Tweet

More Decks by Stevan Little

Other Decks in Programming

Transcript

  1. Installation & Configuration of
    Modern Perl
    Stevan Little

    [email protected]

    CT Perl Developers Meetup
    Tuesday, September 10, 2013
    with perlbrew, cpanminus and more.

    View Slide

  2. How many people ...

    View Slide

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

    View Slide

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

    View Slide

  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?

    View Slide

  6. View Slide

  7. Perl is
    Infrastructure

    View Slide

  8. perlbrew

    View Slide

  9. perlbrew
    • installs Perl in your $HOME directory

    View Slide

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

    View Slide

  11. perlbrew
    • installs Perl in your $HOME directory
    • http://perlbrew.pl
    • https://metacpan.org/release/App-perlbrew

    View Slide

  12. perlbrew

    View Slide

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

    View Slide

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

    View Slide

  15. perlbrew

    View Slide

  16. perlbrew
    ‣ perlbrew install perl-5.18.0

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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)

    View Slide

  22. perlbrew

    View Slide

  23. perlbrew
    ‣ perlbrew list

    View Slide

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

    View Slide

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

    View Slide

  26. perlbrew
    ‣ perlbrew list
    - shows list of perls you have available
    ‣ perlbrew available
    - shows list of perls that are available to install

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  31. perlbrew

    View Slide

  32. perlbrew
    ‣ perlbrew self-upgrade

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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)

    View Slide

  38. plenv

    View Slide

  39. plenv
    • An alternative to perlbrew

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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)

    View Slide

  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 :)

    View Slide

  46. plenv

    View Slide

  47. plenv
    ‣ plenv install perl-5.18.0

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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)

    View Slide

  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

    View Slide

  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

    View Slide

  55. plenv

    View Slide

  56. plenv
    ‣ plenv exec ack ...

    View Slide

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

    View Slide

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

    View Slide

  59. plenv
    ‣ plenv exec ack ...
    - similar to perlbrew you can exec via plenv
    ‣ plenv install-cpanm
    - also comes with useful utilities for cpanm

    View Slide

  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

    View Slide

  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

    View Slide

  62. local::lib

    View Slide

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

    View Slide

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

    View Slide

  65. local::lib
    • manage perl modules in your $HOME directory
    • https://metacpan.org/release/local::lib
    • works well with custom perl or system perl

    View Slide

  66. local::lib

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  75. cpanm

    View Slide

  76. cpanm
    • Smaller, faster, easier CPAN client

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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)

    View Slide

  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)

    View Slide

  84. cpanm

    View Slide

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

    View Slide

  86. cpanm
    ‣ curl -L http://cpanmin.us
    | perl - --sudo App::cpanminus
    - install from the internet into system perl (note the sudo)

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  93. cpanm

    View Slide

  94. cpanm
    ‣ cpanm Plack

    View Slide

  95. cpanm
    ‣ cpanm Plack
    - install a distribution

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  102. cpanm

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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/[email protected]

    View Slide

  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/[email protected]
    - install a specific tag from a git repository

    View Slide

  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/[email protected]
    - install a specific tag from a git repository
    ‣ cpanm git://github.com/plack/Plack.git@devel

    View Slide

  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/[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

    View Slide

  111. cpanm

    View Slide

  112. cpanm
    ‣ cpanm Plack~1.0000

    View Slide

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

    View Slide

  114. cpanm
    ‣ cpanm Plack~1.0000
    - install 1.0000 or later
    ‣ cpanm Plack~”>= 1.0000, < 2.0000”

    View Slide

  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

    View Slide

  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 [email protected]

    View Slide

  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 [email protected]
    - install a specific version (same as Plack~"== 0.9990")

    View Slide

  118. cpanm

    View Slide

  119. cpanm
    ‣ cpanm --force CGI

    View Slide

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

    View Slide

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

    View Slide

  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)

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  127. cpanm

    View Slide

  128. cpanm
    ‣ cpanm --showdeps .

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  132. cpanfile

    View Slide

  133. cpanfile
    • A format for describing CPAN dependencies

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  137. cpanfile

    View Slide

  138. cpanfile
    • Based on Module::Install DSL

    View Slide

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

    View Slide

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

    View Slide

  141. cpanfile
    • Based on Module::Install DSL
    • A foundation for other tools
    ‣ cpanm --installdeps .
    • Carton (more on that later)

    View Slide

  142. Carton

    View Slide

  143. Carton
    • A tool for managing CPAN dependencies

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  148. Carton

    View Slide

  149. Carton
    • Inspired by Ruby’s Bundler module

    View Slide

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

    View Slide

  151. Carton
    • Inspired by Ruby’s Bundler module
    • Built on top of cpanfile, cpanm & local::lib
    • Still relatively new (read: not totally stable)

    View Slide

  152. Carton

    View Slide

  153. Carton
    • Manages and installs all modules project local

    View Slide

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

    View Slide

  155. Carton
    • Manages and installs all modules project local
    • but not checked into version control
    • Uses a cpanfile to keep track of depdencies

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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 ...

    View Slide

  161. Go watch this!

    !
    http://weblog.bulknews.net/post/59613058560/carton-1-0-screencast

    View Slide

  162. Pinto

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  168. Pinto

    View Slide

  169. Pinto
    • Inspired by actual CPAN infrastructure

    View Slide

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

    View Slide

  171. Pinto
    • Inspired by actual CPAN infrastructure
    • creates a company-wide local CPAN
    • works with all tools (CPAN, cpanm, etc.)

    View Slide

  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

    View Slide

  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

    View Slide

  174. Pinto

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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”

    View Slide

  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)

    View Slide

  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

    View Slide

  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

    View Slide