making my own cpancomdog/talks/mycpan-lapm200709.pdf · making my own cpan brian d foy stonehenge...
TRANSCRIPT
![Page 1: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/1.jpg)
Making My Own CPANbrian d foy
Stonehenge Consulting Services
September 20, 2007
![Page 2: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/2.jpg)
CPAN
• http://www.cpan.org
• Comprehensive Perl Archive Network
• Best, most powerful feature of Perl
• "Grokking CPAN" by Elaine Ashton http://backpan.perl.org/authors/id/H/HF/HFB/grok-cpan-1.01.pdf
![Page 3: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/3.jpg)
Goals
• Make my own version of CPAN (MyCPAN)
• Freeze MyCPAN
• Make a CPAN for something else
![Page 4: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/4.jpg)
History of CPAN
• Proposed in 1993 as a store for everything
• Created in 1995
• PAUSE created to upload modules
• Mirrors added (ongoing)
![Page 5: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/5.jpg)
How CPAN works
• Mirrors content (MIRRORED.FROM)
• Master server in Finland
• Primary ring of mirrors
• Secondary ring of mirrors
• Tools work with basic structure
![Page 6: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/6.jpg)
PAUSE
• http://pause.perl.org
• Perl Authors Upload SErver (PAUSE)
• Gateway for adding modules to CPAN
• CPAN Master mirror PAUSE
• modules/
• authors/
![Page 7: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/7.jpg)
PAUSE modules
• PAUSE puts modules into authors/
• Breaks down by PAUSE ID
• authors/B/BD/BDFOY/Foo-1.23.tar.gz
• Path doesn’t really matter
![Page 8: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/8.jpg)
PAUSE index files
• PAUSE indexes modules
• Creates index files for CPAN tool chain
• modules/02packages.details.txt.gz
• modules/03modlist.data.gz
• modules/06perms.txt.gz
![Page 9: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/9.jpg)
02packages.details.txt
Date::Span 1.123 R/RJ/RJBS/Date-Span-1.123.tar.gz
Date::Tie 0.17 F/FG/FGLOCK/Date-Tie-0.17.tar.gz
Date::Tiny 0.02 A/AD/ADAMK/Date-Tiny-0.02.tar.gz
![Page 10: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/10.jpg)
03modlist.data.gz
['Fcntl','S','d','c','f','?','Defines fcntl() constants (see File::Lock)','JHI','4'],
![Page 11: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/11.jpg)
06perms.txtWWW::MySpaceBot,KIRSLE,m
WWW::Myspace,GRANTG,m
WWW::Myspace,OALDERS,c
WWW::Myspace::Comment,GRANTG,f
WWW::Myspace::Data,GRANTG,f
WWW::Myspace::Data,OALDERS,c
WWW::Myspace::FriendAdder,GRANTG,f
![Page 12: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/12.jpg)
Tool chain
• "Third Party" projects
• CPAN Search
• CPAN.pm
• CPANPLUS
• AnnoCPAN
![Page 13: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/13.jpg)
CPAN.pm
• Uses index files to find distro
• Looks for path on mirror
• http://mirror/...
• .../authors/
• .../B/BD/BDFOY/Foo-1.23.tar.gz
![Page 14: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/14.jpg)
Installing a module
• Get from first mirror that has it
• Unpack, run Makefile.PL or Build.PL
• Discover dependencies
• Find, get, install dependencies
![Page 15: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/15.jpg)
MiniCPAN
• A local CPAN mirror
• Only has latest versions, indices
• Point CPAN.pm at local mirror
• Update from network
• Install without network
![Page 16: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/16.jpg)
CPAN::Mini
• The module behind minicpan
• by Ricardo SIGNES
• Configurable
• Programmable
![Page 17: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/17.jpg)
Configure MiniCPAN
• Edit ~/.minicpanrc
local: /MINICPAN
remote: http://path/to_mirror
skip_perl: 1
![Page 18: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/18.jpg)
Updating MiniCPAN
$ minicpanauthors/01mailrc.txt.gz ... updatedmodules/02packages.details.txt.gz ... updatedmodules/03modlist.data.gz ... updatedauthors/id/J/JW/JWACH/Apache-FastForward-1.1.tar.gz ... updated
![Page 19: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/19.jpg)
CPAN::Mini filters
• Don’t mirror files you don’t need
• Skip files you want to override
![Page 20: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/20.jpg)
![Page 21: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/21.jpg)
MicroCPANCPAN::Mini->update_mirror(
..., path_filters => [ sub { !( $_[0] =~ /BDFOY/ ) } ], module_filters => [ qr/Test/, ], );
![Page 22: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/22.jpg)
Configuring CPAN.pm
• Edit CPAN/MyConfig.pm directly
• probably not in library path
• location set on first use
• Start CPAN.pm shell
![Page 23: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/23.jpg)
Add MiniCPAN
$ cpan
cpan shell -- CPAN exploration and modules installation (v1.9102)
cpan[2]> o conf urllist unshift file:///MINICPAN
cpan[3]> o conf commit
commit: wrote '/Users/brian/Library/Application Support/.cpan/CPAN/MyConfig.pm'
![Page 24: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/24.jpg)
MyCPAN
• Only the modules I want
• Only the versions I want
• Extra, private modules
• Public modules with local patches
• Internal server or removable media
![Page 25: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/25.jpg)
Private modules
• Local modules for internal use
• Want to install with same tools
• Want to replicate
• Want to distribute internally
![Page 26: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/26.jpg)
CPAN::Mini::Inject
• Creates a parallel archive
• Update MiniCPAN first
• Inject parallel archive into MiniCPAN
• Update PAUSE index files locally
![Page 27: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/27.jpg)
Command line
$ mcpani --add --module Foo::Bar \
--authorid BDFOY --modversion 0.01 \
--file ./Foo-Bar-0.01.tar.gz
![Page 28: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/28.jpg)
~/.mcpani/config
local: /MyCPANremote: ftp:///MINICPANrepository: /AddThesePrivateModulespassive: yesdirmode: 0755
![Page 29: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/29.jpg)
Replacing public distros
• Sometimes I want local patches
• absent author
• truculent author
• Don’t want the latest distro
![Page 30: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/30.jpg)
Three steps
• Inject distros into parallel dir
• Update MiniCPAN
• Inject distros into MiniCPAN
![Page 31: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/31.jpg)
BackPAN
• http://backpan.cpan.org
• All modules ever uploaded to PAUSE
• Not integrated with CPAN tool chain
• Which distro has module version?
![Page 32: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/32.jpg)
Finding old distros
• It's all on BackPAN
• Brute force, right now
• Unpack a distro and check
• Repeat until you find it
![Page 33: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/33.jpg)
MyCPAN on a CD
• I have all the bits to carry around MyCPAN
• MiniCPAN
• Private modules
• Configure CPAN.pm
• Need to discover MyCPAN location
![Page 34: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/34.jpg)
Dynamic configuse CPAN;
CPAN::Config->load(
be_silent => 1,
write_report => 0,
);
CPAN::Shell->o(
qw( conf urllist unshift ),
$where_i_found_cpan,
);
![Page 35: Making My Own CPANcomdog/Talks/MyCPAN-LApm200709.pdf · Making My Own CPAN brian d foy Stonehenge Consulting Services September 20, 2007](https://reader034.vdocument.in/reader034/viewer/2022051815/603e44e1b5cc8e42ac6f42b7/html5/thumbnails/35.jpg)
Future work
• Index all of BackPAN
• Make that searchable
• Easier injecting
• Integrate with CPAN tools
• Perhaps another CPAN Search