1=head1 NAME 2 3perlmodinstall - Installing CPAN Modules 4 5=head1 DESCRIPTION 6 7You can think of a module as the fundamental unit of reusable Perl 8code; see L<perlmod> for details. Whenever anyone creates a chunk of 9Perl code that they think will be useful to the world, they register 10as a Perl developer at http://www.cpan.org/modules/04pause.html 11so that they can then upload their code to the CPAN. The CPAN is the 12Comprehensive Perl Archive Network and can be accessed at 13http://www.cpan.org/ , and searched at http://search.cpan.org/ . 14 15This documentation is for people who want to download CPAN modules 16and install them on their own computer. 17 18=head2 PREAMBLE 19 20First, are you sure that the module isn't already on your system? Try 21C<perl -MFoo -e 1>. (Replace "Foo" with the name of the module; for 22instance, C<perl -MCGI::Carp -e 1>. 23 24If you don't see an error message, you have the module. (If you do 25see an error message, it's still possible you have the module, but 26that it's not in your path, which you can display with C<perl -e 27"print qq(@INC)">.) For the remainder of this document, we'll assume 28that you really honestly truly lack an installed module, but have 29found it on the CPAN. 30 31So now you have a file ending in .tar.gz (or, less often, .zip). You 32know there's a tasty module inside. There are four steps you must now 33take: 34 35=over 5 36 37=item B<DECOMPRESS> the file 38 39=item B<UNPACK> the file into a directory 40 41=item B<BUILD> the module (sometimes unnecessary) 42 43=item B<INSTALL> the module. 44 45=back 46 47Here's how to perform each step for each operating system. This is 48<not> a substitute for reading the README and INSTALL files that 49might have come with your module! 50 51Also note that these instructions are tailored for installing the 52module into your system's repository of Perl modules -- but you can 53install modules into any directory you wish. For instance, where I 54say C<perl Makefile.PL>, you can substitute C<perl Makefile.PL 55PREFIX=/my/perl_directory> to install the modules into 56C</my/perl_directory>. Then you can use the modules from your Perl 57programs with C<use lib "/my/perl_directory/lib/site_perl";> or 58sometimes just C<use "/my/perl_directory";>. If you're on a system 59that requires superuser/root access to install modules into the 60directories you see when you type C<perl -e "print qq(@INC)">, you'll 61want to install them into a local directory (such as your home 62directory) and use this approach. 63 64=over 4 65 66=item * 67 68B<If you're on a Unix or Linux system,> 69 70You can use Andreas Koenig's CPAN module 71( http://www.cpan.org/modules/by-module/CPAN ) 72to automate the following steps, from DECOMPRESS through INSTALL. 73 74A. DECOMPRESS 75 76Decompress the file with C<gzip -d yourmodule.tar.gz> 77 78You can get gzip from ftp://prep.ai.mit.edu/pub/gnu/ 79 80Or, you can combine this step with the next to save disk space: 81 82 gzip -dc yourmodule.tar.gz | tar -xof - 83 84B. UNPACK 85 86Unpack the result with C<tar -xof yourmodule.tar> 87 88C. BUILD 89 90Go into the newly-created directory and type: 91 92 perl Makefile.PL 93 make test 94 95or 96 97 perl Makefile.PL PREFIX=/my/perl_directory 98 99to install it locally. (Remember that if you do this, you'll have to 100put C<use lib "/my/perl_directory";> near the top of the program that 101is to use this module. 102 103D. INSTALL 104 105While still in that directory, type: 106 107 make install 108 109Make sure you have the appropriate permissions to install the module 110in your Perl 5 library directory. Often, you'll need to be root. 111 112That's all you need to do on Unix systems with dynamic linking. 113Most Unix systems have dynamic linking -- if yours doesn't, or if for 114another reason you have a statically-linked perl, B<and> the 115module requires compilation, you'll need to build a new Perl binary 116that includes the module. Again, you'll probably need to be root. 117 118=item * 119 120B<If you're running ActivePerl (Win95/98/2K/NT/XP, Linux, Solaris)> 121 122First, type C<ppm> from a shell and see whether ActiveState's PPM 123repository has your module. If so, you can install it with C<ppm> and 124you won't have to bother with any of the other steps here. You might 125be able to use the CPAN instructions from the "Unix or Linux" section 126above as well; give it a try. Otherwise, you'll have to follow the 127steps below. 128 129 A. DECOMPRESS 130 131You can use the shareware Winzip ( http://www.winzip.com ) to 132decompress and unpack modules. 133 134 B. UNPACK 135 136If you used WinZip, this was already done for you. 137 138 C. BUILD 139 140You'll need the C<nmake> utility, available at 141ftp://ftp.microsoft.com/Softlib/MSLFILES/nmake15.exe 142or dmake, available on CPAN. 143http://search.cpan.org/dist/dmake/ 144 145Does the module require compilation (i.e. does it have files that end 146in .xs, .c, .h, .y, .cc, .cxx, or .C)? If it does, life is now 147officially tough for you, because you have to compile the module 148yourself -- no easy feat on Windows. You'll need a compiler such as 149Visual C++. Alternatively, you can download a pre-built PPM package 150from ActiveState. 151http://aspn.activestate.com/ASPN/Downloads/ActivePerl/PPM/ 152 153Go into the newly-created directory and type: 154 155 perl Makefile.PL 156 nmake test 157 158 159 D. INSTALL 160 161While still in that directory, type: 162 163 nmake install 164 165=item * 166 167B<If you're using a Macintosh,> 168 169 170A. DECOMPRESS 171 172First, make sure you have the latest B<cpan-mac> distribution ( 173http://www.cpan.org/authors/id/CNANDOR/ ), which has utilities for 174doing all of the steps. Read the cpan-mac directions carefully and 175install it. If you choose not to use cpan-mac for some reason, there 176are alternatives listed here. 177 178After installing cpan-mac, drop the module archive on the 179B<untarzipme> droplet, which will decompress and unpack for you. 180 181B<Or>, you can either use the shareware B<StuffIt Expander> program 182( http://www.aladdinsys.com/expander/ ) 183in combination with B<DropStuff with Expander Enhancer> 184( http://www.aladdinsys.com/dropstuff/ ) 185or the freeware B<MacGzip> program ( 186http://persephone.cps.unizar.es/general/gente/spd/gzip/gzip.html ). 187 188B. UNPACK 189 190If you're using untarzipme or StuffIt, the archive should be extracted 191now. B<Or>, you can use the freeware B<suntar> or I<Tar> ( 192http://hyperarchive.lcs.mit.edu/HyperArchive/Archive/cmp/ ). 193 194C. BUILD 195 196Check the contents of the distribution. 197Read the module's documentation, looking for 198reasons why you might have trouble using it with MacPerl. Look for 199F<.xs> and F<.c> files, which normally denote that the distribution 200must be compiled, and you cannot install it "out of the box." 201(See L<"PORTABILITY">.) 202 203If a module does not work on MacPerl but should, or needs to be 204compiled, see if the module exists already as a port on the 205MacPerl Module Porters site ( http://pudge.net/mmp/ ). 206For more information on doing XS with MacPerl yourself, see 207Arved Sandstrom's XS tutorial ( http://macperl.com/depts/Tutorials/ ), 208and then consider uploading your binary to the CPAN and 209registering it on the MMP site. 210 211D. INSTALL 212 213If you are using cpan-mac, just drop the folder on the 214B<installme> droplet, and use the module. 215 216B<Or>, if you aren't using cpan-mac, do some manual labor. 217 218Make sure the newlines for the modules are in Mac format, not Unix format. 219If they are not then you might have decompressed them incorrectly. Check 220your decompression and unpacking utilities settings to make sure they are 221translating text files properly. 222 223As a last resort, you can use the perl one-liner: 224 225 perl -i.bak -pe 's/(?:\015)?\012/\015/g' <filenames> 226 227on the source files. 228 229Then move the files (probably just the F<.pm> files, though there 230may be some additional ones, too; check the module documentation) 231to their final destination: This will 232most likely be in C<$ENV{MACPERL}site_lib:> (i.e., 233C<HD:MacPerl folder:site_lib:>). You can add new paths to 234the default C<@INC> in the Preferences menu item in the 235MacPerl application (C<$ENV{MACPERL}site_lib:> is added 236automagically). Create whatever directory structures are required 237(i.e., for C<Some::Module>, create 238C<$ENV{MACPERL}site_lib:Some:> and put 239C<Module.pm> in that directory). 240 241Then run the following script (or something like it): 242 243 #!perl -w 244 use AutoSplit; 245 my $dir = "${MACPERL}site_perl"; 246 autosplit("$dir:Some:Module.pm", "$dir:auto", 0, 1, 1); 247 248=item * 249 250B<If you're on the DJGPP port of DOS,> 251 252 A. DECOMPRESS 253 254djtarx ( ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2/ ) 255will both uncompress and unpack. 256 257 B. UNPACK 258 259See above. 260 261 C. BUILD 262 263Go into the newly-created directory and type: 264 265 perl Makefile.PL 266 make test 267 268You will need the packages mentioned in F<README.dos> 269in the Perl distribution. 270 271 D. INSTALL 272 273While still in that directory, type: 274 275 make install 276 277You will need the packages mentioned in F<README.dos> in the Perl distribution. 278 279=item * 280 281B<If you're on OS/2,> 282 283Get the EMX development suite and gzip/tar, from either Hobbes ( 284http://hobbes.nmsu.edu ) or Leo ( http://www.leo.org ), and then follow 285the instructions for Unix. 286 287=item * 288 289B<If you're on VMS,> 290 291When downloading from CPAN, save your file with a C<.tgz> 292extension instead of C<.tar.gz>. All other periods in the 293filename should be replaced with underscores. For example, 294C<Your-Module-1.33.tar.gz> should be downloaded as 295C<Your-Module-1_33.tgz>. 296 297A. DECOMPRESS 298 299Type 300 301 gzip -d Your-Module.tgz 302 303or, for zipped modules, type 304 305 unzip Your-Module.zip 306 307Executables for gzip, zip, and VMStar: 308 309 http://www.openvms.digital.com/freeware/ 310 http://www.crinoid.com/utils/ 311 312and their source code: 313 314 http://www.fsf.org/order/ftp.html 315 316Note that GNU's gzip/gunzip is not the same as Info-ZIP's zip/unzip 317package. The former is a simple compression tool; the latter permits 318creation of multi-file archives. 319 320B. UNPACK 321 322If you're using VMStar: 323 324 VMStar xf Your-Module.tar 325 326Or, if you're fond of VMS command syntax: 327 328 tar/extract/verbose Your_Module.tar 329 330C. BUILD 331 332Make sure you have MMS (from Digital) or the freeware MMK ( available 333from MadGoat at http://www.madgoat.com ). Then type this to create 334the DESCRIP.MMS for the module: 335 336 perl Makefile.PL 337 338Now you're ready to build: 339 340 mms test 341 342Substitute C<mmk> for C<mms> above if you're using MMK. 343 344D. INSTALL 345 346Type 347 348 mms install 349 350Substitute C<mmk> for C<mms> above if you're using MMK. 351 352=item * 353 354B<If you're on MVS>, 355 356Introduce the F<.tar.gz> file into an HFS as binary; don't translate from 357ASCII to EBCDIC. 358 359A. DECOMPRESS 360 361Decompress the file with C<gzip -d yourmodule.tar.gz> 362 363You can get gzip from 364http://www.s390.ibm.com/products/oe/bpxqp1.html 365 366B. UNPACK 367 368Unpack the result with 369 370 pax -o to=IBM-1047,from=ISO8859-1 -r < yourmodule.tar 371 372The BUILD and INSTALL steps are identical to those for Unix. Some 373modules generate Makefiles that work better with GNU make, which is 374available from http://www.mks.com/s390/gnu/ 375 376=back 377 378=head1 PORTABILITY 379 380Note that not all modules will work with on all platforms. 381See L<perlport> for more information on portability issues. 382Read the documentation to see if the module will work on your 383system. There are basically three categories 384of modules that will not work "out of the box" with all 385platforms (with some possibility of overlap): 386 387=over 4 388 389=item * 390 391B<Those that should, but don't.> These need to be fixed; consider 392contacting the author and possibly writing a patch. 393 394=item * 395 396B<Those that need to be compiled, where the target platform 397doesn't have compilers readily available.> (These modules contain 398F<.xs> or F<.c> files, usually.) You might be able to find 399existing binaries on the CPAN or elsewhere, or you might 400want to try getting compilers and building it yourself, and then 401release the binary for other poor souls to use. 402 403=item * 404 405B<Those that are targeted at a specific platform.> 406(Such as the Win32:: modules.) If the module is targeted 407specifically at a platform other than yours, you're out 408of luck, most likely. 409 410=back 411 412 413 414Check the CPAN Testers if a module should work with your platform 415but it doesn't behave as you'd expect, or you aren't sure whether or 416not a module will work under your platform. If the module you want 417isn't listed there, you can test it yourself and let CPAN Testers know, 418you can join CPAN Testers, or you can request it be tested. 419 420 http://testers.cpan.org/ 421 422 423=head1 HEY 424 425If you have any suggested changes for this page, let me know. Please 426don't send me mail asking for help on how to install your modules. 427There are too many modules, and too few Orwants, for me to be able to 428answer or even acknowledge all your questions. Contact the module 429author instead, or post to comp.lang.perl.modules, or ask someone 430familiar with Perl on your operating system. 431 432=head1 AUTHOR 433 434Jon Orwant 435 436orwant@medita.mit.edu 437 438with invaluable help from Chris Nandor, and valuable help from Brandon 439Allbery, Charles Bailey, Graham Barr, Dominic Dunlop, Jarkko 440Hietaniemi, Ben Holzman, Tom Horsley, Nick Ing-Simmons, Tuomas 441J. Lukka, Laszlo Molnar, Alan Olsen, Peter Prymmer, Gurusamy Sarathy, 442Christoph Spalinger, Dan Sugalski, Larry Virden, and Ilya Zakharevich. 443 444First version July 22, 1998; last revised November 21, 2001. 445 446=head1 COPYRIGHT 447 448Copyright (C) 1998, 2002, 2003 Jon Orwant. All Rights Reserved. 449 450Permission is granted to make and distribute verbatim copies of this 451documentation provided the copyright notice and this permission notice are 452preserved on all copies. 453 454Permission is granted to copy and distribute modified versions of this 455documentation under the conditions for verbatim copying, provided also 456that they are marked clearly as modified versions, that the authors' 457names and title are unchanged (though subtitles and additional 458authors' names may be added), and that the entire resulting derived 459work is distributed under the terms of a permission notice identical 460to this one. 461 462Permission is granted to copy and distribute translations of this 463documentation into another language, under the above conditions for 464modified versions. 465 466