• Like
CPAN Training
Upcoming SlideShare
Loading in...5
×

CPAN Training

  • 5,099 views
Uploaded on

A not so short introduction to using the CPAN

A not so short introduction to using the CPAN

More in: Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
5,099
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
77
Comments
0
Likes
5

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Introduction to CPAN Living off other people’s code
  • 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. Running Perl • Compiler • Tools • Standard library • CPAN • and its configuration
  • 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. Running Perl Tools • documentation • header extraction • module jump-starters • debugger • profiler
  • 6. Running Perl Standard Library • modules distributed with Perl • Module::CoreList • 602 modules as of 5.8.8
  • 7. Running Perl Local build • Perl pre-installed everywhere • vendor may overwrite your modifications • you may break stuff • always use a local package
  • 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. Running Perl Local build • Common options: • -Dcc=gcc • -Dprefix=/opt/builds/perl • -Dlocincpth=”/foo/bar/include” • -Dloclibpth=”/foo/bar/lib”
  • 10. Running Perl Local build •Module lookup paths: lib/perl5 /5.8.8 /darwin-thread-multi /site_perl
  • 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. http://www.cpan.org/
  • 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. How to use CPAN • Manually • There’s a module for it perl -MCPAN -e shell • There’s a script for it cpan
  • 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. http://search.cpan.org/
  • 17. http://kobesearch.cpan.org/
  • 18. http://cpandeps.cantrell.org.uk/
  • 19. cpandeps: version
  • 20. CPAN manual usage (continued) • Organization: authors modules by-author by-category by-module ports src scripts doc
  • 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. 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. 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. 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. 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. CPAN Configuration (continued) • CPAN parameters auto_commit, build_dir, cpan_home, histfile, prerequisites, scan_cache • build parameters makepl_arg • other
  • 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. 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. The cpan script • $PERL5BIN/cpan cpan Some::Module cpan .
  • 30. Mirroring CPAN • A full mirror is around 7gb • CPAN::Mini and minicpan • only the newest version of every module • ~800mb
  • 31. More usage • Passing arguments to perl Makefile.PL • Finding outdated modules • Adding to $PERL5LIB • Maintaining your own $PERL5LIB • Smart urllist
  • 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. 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. 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. Maintaining your own $PERL5LIB • Override the default system installation • How can i still enjoy the CPAN goodness? • Don’t piss off your sysadmin
  • 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. 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. 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. 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. 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. 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. CPAN testers
  • 43. Kwalitee
  • 44. Other stuff • Bugs http://rt.cpan.org/ • Contributing to CPAN PAUSE
  • 45. http://rt.cpan.org/
  • 46. http://pause.cpan.org/
  • 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. 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. 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)