Your SlideShare is downloading. ×
0
Introduction to CPAN
    Living off other people’s code
Nitpicking
• “Perl” is the language specification
• and the noun (“the Perl community”, “a
  Perl program”)
• and the distr...
Running Perl

• Compiler
• Tools
• Standard library
• CPAN
 • and its configuration
Running Perl
          Compiler
• the “perl” bit
• jit compiler
• configuration assembled at build time, most
  (all?) of i...
Running Perl
           Tools
• documentation
• header extraction
• module jump-starters
• debugger
• profiler
Running Perl
     Standard Library

• modules distributed with Perl
• Module::CoreList
• 602 modules as of 5.8.8
Running Perl
         Local build
• Perl pre-installed everywhere
• vendor may overwrite your modifications
• you may break...
Running Perl
          Local build
• Compile:
  sh Configure -de -Dusethreads
  make && make test && make install
  (cd /u...
Running Perl
         Local build
• Common options:
 • -Dcc=gcc
 • -Dprefix=/opt/builds/perl
 • -Dlocincpth=”/foo/bar/incl...
Running Perl
         Local build

•Module lookup paths:
 lib/perl5
      /5.8.8
          /darwin-thread-multi
      /sit...
Running Perl
           CPAN
• Comprehensive Perl Archive Network
• Source code repository for everything Perl
• Modules, ...
http://www.cpan.org/
Why CPAN
• laziness
• re-inventing the wheel (not)
• code reuse
• tested and tried
• around 250 mirrors worldwide
• approx...
How to use CPAN

• Manually
• There’s a module for it
  perl -MCPAN -e shell

• There’s a script for it
  cpan
CPAN manual usage
• Search for a module
  • http://search.cpan.org/
• Search for its dependencies
  • http://cpandeps.cant...
http://search.cpan.org/
http://kobesearch.cpan.org/
http://cpandeps.cantrell.org.uk/
cpandeps: version
CPAN manual usage
                  (continued)


• Organization:
  authors
  modules
      by-author
      by-category
  ...
CPAN manual usage
              (continued)


•Procedure:
  tar zxf Sample-Module-1.0.tar.gz
  cd Sample-Module-1.0
  perl...
The CPAN module
• Lots of built-in facilities
 • search
 • automatic installation of dependencies
 • look inside a distrib...
The CPAN module
              (continued)


•Usage:
  perl -MCPAN -e shell
  i Sample::Module
  i /ample/i
  look Sample::...
CPAN Configuration

• in $PERL5LIB/CPAN/Config.pm
• can be hand-edited or...
• using o conf in the CPAN shell
• it’s just a...
CPAN Configuration
                 (continued)




• Location of several utilities CPAN uses
  ftp, gpg, gzip, lynx, make,...
CPAN Configuration
                (continued)



• CPAN parameters
  auto_commit, build_dir, cpan_home,
  histfile, prereq...
CPAN Configuration
                (continued)


• the urllist lists the CPAN mirrors we’ll
  use
• kept in a hash, %CPAN::...
The CPAN module
               (continued)

•More usage:
  perl -MCPAN -e ‘install A::Module’
  o conf
  o conf http_proxy...
The cpan script


• $PERL5BIN/cpan
 cpan Some::Module
 cpan .
Mirroring CPAN

• A full mirror is around 7gb
• CPAN::Mini and minicpan
 • only the newest version of every module
 • ~800...
More usage

• Passing arguments to perl Makefile.PL
• Finding outdated modules
• Adding to $PERL5LIB
• Maintaining your ow...
Passing arguments to
perl Makefile.pl
• no standard
• remember Makefile.PL is a Perl program :)
• and there’s usually a REA...
Finding outdated
         modules

• r command on the CPAN shell
• upgrade command to perform the actual
  upgrade
• take ...
Adding to $PERL5LIB

• in your code:
  use lib qw( /opt/permodules /home/pfig/perllib );


• set PERL5LIB in your profile o...
Maintaining your own
   $PERL5LIB

• Override the default system installation
• How can i still enjoy the CPAN goodness?
•...
Maintaining your own
   $PERL5LIB
• Getting -p ~/perl/bin
  mkdir
          ready:
                      
    ~/perl/man/m...
Maintaining your own
   $PERL5LIB
• Edit MyConfig.pm
  ‘build_dir’         => q[/home/pfig/.cpan/build]
  ‘cpan_home’      ...
Maintaining your own
   $PERL5LIB
• Set up your environment
  PERL5LIB=~/perl/lib
  PERL5MAN=~/perl/man
  PATH=$PATH:~/per...
Smart urllist
• have a local mini mirror
• have the last url of your urllist point to
  it via file://
• CPAN will always d...
Danger, Will Robinson!
• if you run cpan without checking your
  path, you may be running the vendor’s cpan
  (because cha...
Which modules to use
• CPAN testers
  • http://www.cpantesters.org/
• CPANTS
  • http://cpants.perl.org/
• Kwalitee
  • ht...
CPAN testers
Kwalitee
Other stuff

• Bugs
  http://rt.cpan.org/
• Contributing to CPAN
  PAUSE
http://rt.cpan.org/
http://pause.cpan.org/
Resources
•   http://search.cpan.org/

•   http://cpan.org/misc/cpan-faq.html

•   http://qa.perl.org/

•   http://cpandep...
Thanks to...
• In no particular order:
 • David Cantrell
    http://www.cantrell.org.uk/david/tech/

 • London.pm
 • Pedro...
A local shop, for local
         people
•http://london.pm.org/
• Free beer every month!
• London Perl Workshop (yearly, fr...
Upcoming SlideShare
Loading in...5
×

CPAN Training

5,321

Published on

A not so short introduction to using the CPAN

Published in: Technology, Business
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,321
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
79
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Transcript of "CPAN Training"

  1. 1. Introduction to CPAN Living off other people’s code
  2. 2. Nitpicking • “Perl” is the language specification • and the noun (“the Perl community”, “a Perl program”) • and the distribution (“the Perl tar ball”) • “perl” is a compiler implementing the language specification (currently, Perl 5) • There is no “PERL”
  3. 3. Running Perl • Compiler • Tools • Standard library • CPAN • and its configuration
  4. 4. Running Perl Compiler • the “perl” bit • jit compiler • configuration assembled at build time, most (all?) of it can be overridden at runtime • namely, the library path to use
  5. 5. Running Perl Tools • documentation • header extraction • module jump-starters • debugger • profiler
  6. 6. Running Perl Standard Library • modules distributed with Perl • Module::CoreList • 602 modules as of 5.8.8
  7. 7. Running Perl Local build • Perl pre-installed everywhere • vendor may overwrite your modifications • you may break stuff • always use a local package
  8. 8. Running Perl Local build • Compile: sh Configure -de -Dusethreads make && make test && make install (cd /usr/include && /usr/local/ bin/h2ph *.h sys/*.h) • uses /usr/local by default • good enough most of the times
  9. 9. Running Perl Local build • Common options: • -Dcc=gcc • -Dprefix=/opt/builds/perl • -Dlocincpth=”/foo/bar/include” • -Dloclibpth=”/foo/bar/lib”
  10. 10. Running Perl Local build •Module lookup paths: lib/perl5 /5.8.8 /darwin-thread-multi /site_perl
  11. 11. Running Perl CPAN • Comprehensive Perl Archive Network • Source code repository for everything Perl • Modules, but also... • Perl itself • Several tools/programs written in Perl
  12. 12. http://www.cpan.org/
  13. 13. Why CPAN • laziness • re-inventing the wheel (not) • code reuse • tested and tried • around 250 mirrors worldwide • approximately 13000 modules • lots of crap...
  14. 14. How to use CPAN • Manually • There’s a module for it perl -MCPAN -e shell • There’s a script for it cpan
  15. 15. CPAN manual usage • Search for a module • http://search.cpan.org/ • Search for its dependencies • http://cpandeps.cantrell.org.uk/ • Start with dependencies and install one by one • Tedious and time-consuming (e.g., Catalyst depends on hundreds of modules)
  16. 16. http://search.cpan.org/
  17. 17. http://kobesearch.cpan.org/
  18. 18. http://cpandeps.cantrell.org.uk/
  19. 19. cpandeps: version
  20. 20. CPAN manual usage (continued) • Organization: authors modules by-author by-category by-module ports src scripts doc
  21. 21. CPAN manual usage (continued) •Procedure: tar zxf Sample-Module-1.0.tar.gz cd Sample-Module-1.0 perl Makefile.PL make make test make install
  22. 22. The CPAN module • Lots of built-in facilities • search • automatic installation of dependencies • look inside a distribution’s tar ball • highly configurable • You can use it in your programs (have a look at the source for cpandeps)
  23. 23. The CPAN module (continued) •Usage: perl -MCPAN -e shell i Sample::Module i /ample/i look Sample::Module install Sample::Module force install Sample::Module (!!!)
  24. 24. CPAN Configuration • in $PERL5LIB/CPAN/Config.pm • can be hand-edited or... • using o conf in the CPAN shell • it’s just a Perl module
  25. 25. CPAN Configuration (continued) • Location of several utilities CPAN uses ftp, gpg, gzip, lynx, make, ncftp, pager, tar, unzip • Parameters for some of these e.g., make_arg, ftp_passive
  26. 26. CPAN Configuration (continued) • CPAN parameters auto_commit, build_dir, cpan_home, histfile, prerequisites, scan_cache • build parameters makepl_arg • other
  27. 27. CPAN Configuration (continued) • the urllist lists the CPAN mirrors we’ll use • kept in a hash, %CPAN::Config • the configuration is itself Perl code • override system-wide parameters via MyConfig.pm
  28. 28. The CPAN module (continued) •More usage: perl -MCPAN -e ‘install A::Module’ o conf o conf http_proxy http://proxy:port/ o conf commit o conf init /REGEXP/ $PERL5LIB/CPAN/Config.pm failed test
  29. 29. The cpan script • $PERL5BIN/cpan cpan Some::Module cpan .
  30. 30. Mirroring CPAN • A full mirror is around 7gb • CPAN::Mini and minicpan • only the newest version of every module • ~800mb
  31. 31. More usage • Passing arguments to perl Makefile.PL • Finding outdated modules • Adding to $PERL5LIB • Maintaining your own $PERL5LIB • Smart urllist
  32. 32. Passing arguments to perl Makefile.pl • no standard • remember Makefile.PL is a Perl program :) • and there’s usually a README file or similar :) • usually you’ll be able do define environment variables CC=gcc perl Makefile.pl CC=gcc cpan Some::Module
  33. 33. Finding outdated modules • r command on the CPAN shell • upgrade command to perform the actual upgrade • take a string or a regexp as parameters
  34. 34. Adding to $PERL5LIB • in your code: use lib qw( /opt/permodules /home/pfig/perllib ); • set PERL5LIB in your profile or startup scripts: export PERL5LIB=/opt/perlmodules:/home/pfig/perllib
  35. 35. Maintaining your own $PERL5LIB • Override the default system installation • How can i still enjoy the CPAN goodness? • Don’t piss off your sysadmin
  36. 36. Maintaining your own $PERL5LIB • Getting -p ~/perl/bin mkdir ready: ~/perl/man/man1 ~/perl/man/man3 mkdir -p ~/.cpan/CPAN cp $PERL5LIB/CPAN/Config.pm ~/.cpan/CPAN/MyConfig.pm • Debian uses /etc/perl. There’s a special place in hell for them.
  37. 37. Maintaining your own $PERL5LIB • Edit MyConfig.pm ‘build_dir’ => q[/home/pfig/.cpan/build] ‘cpan_home’ => q[/home/pfig/.cpan] ‘histfile’ => q[/home/pfig/.cpan/histfile] ‘keep_source_where’ => q[/home/pfig/.cpan/sources] ‘makepl_arg’ => q[PREFIX=~/perl LIB=~/perl/lib INSTALLMAN1DIR=~/perl/man/man1 INSTALLMAN3DIR=~/perl/man/man3 INSTALLSCRIPT=~/perl/bin INSTALLBIN=~/perl/bin] ‘mbuildpl_arg’ => q[--prefix ~/perl]
  38. 38. Maintaining your own $PERL5LIB • Set up your environment PERL5LIB=~/perl/lib PERL5MAN=~/perl/man PATH=$PATH:~/perl/bin export PERL5LIB PERL5MAN PATH • Done! • You now have all the CPAN shininess and you can get rid of use lib pragmas
  39. 39. Smart urllist • have a local mini mirror • have the last url of your urllist point to it via file:// • CPAN will always download its indexes from one of the sites but it will try to get the package from your local disk. • you get up-to-date indexes with no need to remember to refresh the mirror.
  40. 40. Danger, Will Robinson! • if you run cpan without checking your path, you may be running the vendor’s cpan (because chances are /usr/bin appears in your path before /usr/local/bin) • the same goes for perl -MCPAN • And, if installing manually, the perl you use to run Makefile.PL
  41. 41. Which modules to use • CPAN testers • http://www.cpantesters.org/ • CPANTS • http://cpants.perl.org/ • Kwalitee • http://cpants.perl.org/kwalitee.html • Reviews on CPAN • Ask around. Really.
  42. 42. CPAN testers
  43. 43. Kwalitee
  44. 44. Other stuff • Bugs http://rt.cpan.org/ • Contributing to CPAN PAUSE
  45. 45. http://rt.cpan.org/
  46. 46. http://pause.cpan.org/
  47. 47. Resources • http://search.cpan.org/ • http://cpan.org/misc/cpan-faq.html • http://qa.perl.org/ • http://cpandeps.cantrell.org.uk/ • http://use.perl.org/ • http://perlmonks.org/ • perldoc
  48. 48. Thanks to... • In no particular order: • David Cantrell http://www.cantrell.org.uk/david/tech/ • London.pm • Pedro Melo http://simplicidade.org/notes/ • Simon Wistow http://thegestalt.org/simon/ • And Wizards Larry Wall and the other Perl of course
  49. 49. A local shop, for local people •http://london.pm.org/ • Free beer every month! • London Perl Workshop (yearly, free) • london.pm’s tech meetings (free, twice a year or thereabouts)
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×