Slide 1

Slide 1 text

Installation & Configuration of Modern Perl Stevan Little [email protected] CT Perl Developers Meetup Tuesday, September 10, 2013 with perlbrew, cpanminus and more.

Slide 2

Slide 2 text

How many people ...

Slide 3

Slide 3 text

How many people ... • use system Perl?

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

How many people ... • use system Perl? • use Perl on a system without root access? • work with sysadmins who don’t like to install modules?

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Perl is Infrastructure

Slide 8

Slide 8 text

perlbrew

Slide 9

Slide 9 text

perlbrew • installs Perl in your $HOME directory

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

perlbrew

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

perlbrew

Slide 16

Slide 16 text

perlbrew ‣ perlbrew install perl-5.18.0

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

perlbrew ‣ perlbrew install perl-5.18.0 - installs side-by-side (not overwrite) ‣ perlbrew switch perl-5.18.0 - not used until explicitly activated

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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)

Slide 22

Slide 22 text

perlbrew

Slide 23

Slide 23 text

perlbrew ‣ perlbrew list

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

perlbrew

Slide 32

Slide 32 text

perlbrew ‣ perlbrew self-upgrade

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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)

Slide 38

Slide 38 text

plenv

Slide 39

Slide 39 text

plenv • An alternative to perlbrew

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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)

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

plenv

Slide 47

Slide 47 text

plenv ‣ plenv install perl-5.18.0

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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)

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

plenv

Slide 56

Slide 56 text

plenv ‣ plenv exec ack ...

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

local::lib

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

local::lib

Slide 67

Slide 67 text

local::lib ‣ use local::lib;

Slide 68

Slide 68 text

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

Slide 69

Slide 69 text

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

Slide 70

Slide 70 text

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

Slide 71

Slide 71 text

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

Slide 72

Slide 72 text

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

Slide 73

Slide 73 text

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

Slide 74

Slide 74 text

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

Slide 75

Slide 75 text

cpanm

Slide 76

Slide 76 text

cpanm • Smaller, faster, easier CPAN client

Slide 77

Slide 77 text

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

Slide 78

Slide 78 text

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

Slide 79

Slide 79 text

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

Slide 80

Slide 80 text

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

Slide 81

Slide 81 text

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

Slide 82

Slide 82 text

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)

Slide 83

Slide 83 text

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)

Slide 84

Slide 84 text

cpanm

Slide 85

Slide 85 text

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

Slide 86

Slide 86 text

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

Slide 87

Slide 87 text

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

Slide 88

Slide 88 text

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

Slide 89

Slide 89 text

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

Slide 90

Slide 90 text

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

Slide 91

Slide 91 text

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

Slide 92

Slide 92 text

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

Slide 93

Slide 93 text

cpanm

Slide 94

Slide 94 text

cpanm ‣ cpanm Plack

Slide 95

Slide 95 text

cpanm ‣ cpanm Plack - install a distribution

Slide 96

Slide 96 text

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

Slide 97

Slide 97 text

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

Slide 98

Slide 98 text

cpanm ‣ cpanm Plack - install a distribution ‣ cpanm Plack/Request.pm - install the distribution this module belongs too ‣ cpanm MIYAGAWA/Plack-1.0000.tar.gz

Slide 99

Slide 99 text

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

Slide 100

Slide 100 text

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

Slide 101

Slide 101 text

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

Slide 102

Slide 102 text

cpanm

Slide 103

Slide 103 text

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

Slide 104

Slide 104 text

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

Slide 105

Slide 105 text

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

Slide 106

Slide 106 text

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

Slide 107

Slide 107 text

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]

Slide 108

Slide 108 text

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

Slide 109

Slide 109 text

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

Slide 110

Slide 110 text

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

Slide 111

Slide 111 text

cpanm

Slide 112

Slide 112 text

cpanm ‣ cpanm Plack~1.0000

Slide 113

Slide 113 text

cpanm ‣ cpanm Plack~1.0000 - install 1.0000 or later

Slide 114

Slide 114 text

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

Slide 115

Slide 115 text

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

Slide 116

Slide 116 text

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]

Slide 117

Slide 117 text

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

Slide 118

Slide 118 text

cpanm

Slide 119

Slide 119 text

cpanm ‣ cpanm --force CGI

Slide 120

Slide 120 text

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

Slide 121

Slide 121 text

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

Slide 122

Slide 122 text

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)

Slide 123

Slide 123 text

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

Slide 124

Slide 124 text

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

Slide 125

Slide 125 text

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

Slide 126

Slide 126 text

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

Slide 127

Slide 127 text

cpanm

Slide 128

Slide 128 text

cpanm ‣ cpanm --showdeps .

Slide 129

Slide 129 text

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

Slide 130

Slide 130 text

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

Slide 131

Slide 131 text

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

Slide 132

Slide 132 text

cpanfile

Slide 133

Slide 133 text

cpanfile • A format for describing CPAN dependencies

Slide 134

Slide 134 text

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

Slide 135

Slide 135 text

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

Slide 136

Slide 136 text

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

Slide 137

Slide 137 text

cpanfile

Slide 138

Slide 138 text

cpanfile • Based on Module::Install DSL

Slide 139

Slide 139 text

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

Slide 140

Slide 140 text

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

Slide 141

Slide 141 text

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

Slide 142

Slide 142 text

Carton

Slide 143

Slide 143 text

Carton • A tool for managing CPAN dependencies

Slide 144

Slide 144 text

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

Slide 145

Slide 145 text

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

Slide 146

Slide 146 text

Carton • A tool for managing CPAN dependencies • https://metacpan.org/release/Carton • See also • http://weblog.bulknews.net/post/59613058560/carton-1-0-screencast

Slide 147

Slide 147 text

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

Slide 148

Slide 148 text

Carton

Slide 149

Slide 149 text

Carton • Inspired by Ruby’s Bundler module

Slide 150

Slide 150 text

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

Slide 151

Slide 151 text

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

Slide 152

Slide 152 text

Carton

Slide 153

Slide 153 text

Carton • Manages and installs all modules project local

Slide 154

Slide 154 text

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

Slide 155

Slide 155 text

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

Slide 156

Slide 156 text

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

Slide 157

Slide 157 text

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

Slide 158

Slide 158 text

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

Slide 159

Slide 159 text

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

Slide 160

Slide 160 text

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

Slide 161

Slide 161 text

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

Slide 162

Slide 162 text

Pinto

Slide 163

Slide 163 text

Pinto • A(nother) tool for managing CPAN dependencies

Slide 164

Slide 164 text

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

Slide 165

Slide 165 text

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

Slide 166

Slide 166 text

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

Slide 167

Slide 167 text

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

Slide 168

Slide 168 text

Pinto

Slide 169

Slide 169 text

Pinto • Inspired by actual CPAN infrastructure

Slide 170

Slide 170 text

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

Slide 171

Slide 171 text

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

Slide 172

Slide 172 text

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

Slide 173

Slide 173 text

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

Slide 174

Slide 174 text

Pinto

Slide 175

Slide 175 text

Pinto • Manages and installs modules into a “repository”

Slide 176

Slide 176 text

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

Slide 177

Slide 177 text

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

Slide 178

Slide 178 text

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

Slide 179

Slide 179 text

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”

Slide 180

Slide 180 text

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)

Slide 181

Slide 181 text

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

Slide 182

Slide 182 text

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