This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Point submitters to perlbug@perl.org, not perl5-porters@perl.org
[perl5.git] / pod / perlmodinstall.pod
... / ...
CommitLineData
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 Unix-like 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
141http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/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 with "Classic" MacOS and MacPerl,>
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://my.smithmicro.com/mac/stuffit/ )
183or the freeware B<MacGzip> program (
184http://persephone.cps.unizar.es/general/gente/spd/gzip/gzip.html ).
185
186B. UNPACK
187
188If you're using untarzipme or StuffIt, the archive should be extracted
189now. B<Or>, you can use the freeware B<suntar> or I<Tar> (
190http://hyperarchive.lcs.mit.edu/HyperArchive/Archive/cmp/ ).
191
192C. BUILD
193
194Check the contents of the distribution.
195Read the module's documentation, looking for
196reasons why you might have trouble using it with MacPerl. Look for
197F<.xs> and F<.c> files, which normally denote that the distribution
198must be compiled, and you cannot install it "out of the box."
199(See L<"PORTABILITY">.)
200
201D. INSTALL
202
203If you are using cpan-mac, just drop the folder on the
204B<installme> droplet, and use the module.
205
206B<Or>, if you aren't using cpan-mac, do some manual labor.
207
208Make sure the newlines for the modules are in Mac format, not Unix format.
209If they are not then you might have decompressed them incorrectly. Check
210your decompression and unpacking utilities settings to make sure they are
211translating text files properly.
212
213As a last resort, you can use the perl one-liner:
214
215 perl -i.bak -pe 's/(?:\015)?\012/\015/g' <filenames>
216
217on the source files.
218
219Then move the files (probably just the F<.pm> files, though there
220may be some additional ones, too; check the module documentation)
221to their final destination: This will
222most likely be in C<$ENV{MACPERL}site_lib:> (i.e.,
223C<HD:MacPerl folder:site_lib:>). You can add new paths to
224the default C<@INC> in the Preferences menu item in the
225MacPerl application (C<$ENV{MACPERL}site_lib:> is added
226automagically). Create whatever directory structures are required
227(i.e., for C<Some::Module>, create
228C<$ENV{MACPERL}site_lib:Some:> and put
229C<Module.pm> in that directory).
230
231Then run the following script (or something like it):
232
233 #!perl -w
234 use AutoSplit;
235 my $dir = "${MACPERL}site_perl";
236 autosplit("$dir:Some:Module.pm", "$dir:auto", 0, 1, 1);
237
238=item *
239
240B<If you're on the DJGPP port of DOS,>
241
242 A. DECOMPRESS
243
244djtarx ( ftp://ftp.delorie.com/pub/djgpp/current/v2/ )
245will both uncompress and unpack.
246
247 B. UNPACK
248
249See above.
250
251 C. BUILD
252
253Go into the newly-created directory and type:
254
255 perl Makefile.PL
256 make test
257
258You will need the packages mentioned in F<README.dos>
259in the Perl distribution.
260
261 D. INSTALL
262
263While still in that directory, type:
264
265 make install
266
267You will need the packages mentioned in F<README.dos> in the Perl distribution.
268
269=item *
270
271B<If you're on OS/2,>
272
273Get the EMX development suite and gzip/tar, from either Hobbes (
274http://hobbes.nmsu.edu ) or Leo ( http://www.leo.org ), and then follow
275the instructions for Unix.
276
277=item *
278
279B<If you're on VMS,>
280
281When downloading from CPAN, save your file with a C<.tgz>
282extension instead of C<.tar.gz>. All other periods in the
283filename should be replaced with underscores. For example,
284C<Your-Module-1.33.tar.gz> should be downloaded as
285C<Your-Module-1_33.tgz>.
286
287A. DECOMPRESS
288
289Type
290
291 gzip -d Your-Module.tgz
292
293or, for zipped modules, type
294
295 unzip Your-Module.zip
296
297Executables for gzip, zip, and VMStar:
298
299 http://www.hp.com/go/openvms/freeware/
300
301and their source code:
302
303 http://www.fsf.org/order/ftp.html
304
305Note that GNU's gzip/gunzip is not the same as Info-ZIP's zip/unzip
306package. The former is a simple compression tool; the latter permits
307creation of multi-file archives.
308
309B. UNPACK
310
311If you're using VMStar:
312
313 VMStar xf Your-Module.tar
314
315Or, if you're fond of VMS command syntax:
316
317 tar/extract/verbose Your_Module.tar
318
319C. BUILD
320
321Make sure you have MMS (from Digital) or the freeware MMK ( available
322from MadGoat at http://www.madgoat.com ). Then type this to create
323the DESCRIP.MMS for the module:
324
325 perl Makefile.PL
326
327Now you're ready to build:
328
329 mms test
330
331Substitute C<mmk> for C<mms> above if you're using MMK.
332
333D. INSTALL
334
335Type
336
337 mms install
338
339Substitute C<mmk> for C<mms> above if you're using MMK.
340
341=item *
342
343B<If you're on MVS>,
344
345Introduce the F<.tar.gz> file into an HFS as binary; don't translate from
346ASCII to EBCDIC.
347
348A. DECOMPRESS
349
350Decompress the file with C<gzip -d yourmodule.tar.gz>
351
352You can get gzip from
353http://www.s390.ibm.com/products/oe/bpxqp1.html
354
355B. UNPACK
356
357Unpack the result with
358
359 pax -o to=IBM-1047,from=ISO8859-1 -r < yourmodule.tar
360
361The BUILD and INSTALL steps are identical to those for Unix. Some
362modules generate Makefiles that work better with GNU make, which is
363available from http://www.mks.com/s390/gnu/
364
365=back
366
367=head1 PORTABILITY
368
369Note that not all modules will work with on all platforms.
370See L<perlport> for more information on portability issues.
371Read the documentation to see if the module will work on your
372system. There are basically three categories
373of modules that will not work "out of the box" with all
374platforms (with some possibility of overlap):
375
376=over 4
377
378=item *
379
380B<Those that should, but don't.> These need to be fixed; consider
381contacting the author and possibly writing a patch.
382
383=item *
384
385B<Those that need to be compiled, where the target platform
386doesn't have compilers readily available.> (These modules contain
387F<.xs> or F<.c> files, usually.) You might be able to find
388existing binaries on the CPAN or elsewhere, or you might
389want to try getting compilers and building it yourself, and then
390release the binary for other poor souls to use.
391
392=item *
393
394B<Those that are targeted at a specific platform.>
395(Such as the Win32:: modules.) If the module is targeted
396specifically at a platform other than yours, you're out
397of luck, most likely.
398
399=back
400
401
402
403Check the CPAN Testers if a module should work with your platform
404but it doesn't behave as you'd expect, or you aren't sure whether or
405not a module will work under your platform. If the module you want
406isn't listed there, you can test it yourself and let CPAN Testers know,
407you can join CPAN Testers, or you can request it be tested.
408
409 http://testers.cpan.org/
410
411
412=head1 HEY
413
414If you have any suggested changes for this page, let me know. Please
415don't send me mail asking for help on how to install your modules.
416There are too many modules, and too few Orwants, for me to be able to
417answer or even acknowledge all your questions. Contact the module
418author instead, or post to comp.lang.perl.modules, or ask someone
419familiar with Perl on your operating system.
420
421=head1 AUTHOR
422
423Jon Orwant
424
425orwant@medita.mit.edu
426
427with invaluable help from Chris Nandor, and valuable help from Brandon
428Allbery, Charles Bailey, Graham Barr, Dominic Dunlop, Jarkko
429Hietaniemi, Ben Holzman, Tom Horsley, Nick Ing-Simmons, Tuomas
430J. Lukka, Laszlo Molnar, Alan Olsen, Peter Prymmer, Gurusamy Sarathy,
431Christoph Spalinger, Dan Sugalski, Larry Virden, and Ilya Zakharevich.
432
433First version July 22, 1998; last revised November 21, 2001.
434
435=head1 COPYRIGHT
436
437Copyright (C) 1998, 2002, 2003 Jon Orwant. All Rights Reserved.
438
439Permission is granted to make and distribute verbatim copies of this
440documentation provided the copyright notice and this permission notice are
441preserved on all copies.
442
443Permission is granted to copy and distribute modified versions of this
444documentation under the conditions for verbatim copying, provided also
445that they are marked clearly as modified versions, that the authors'
446names and title are unchanged (though subtitles and additional
447authors' names may be added), and that the entire resulting derived
448work is distributed under the terms of a permission notice identical
449to this one.
450
451Permission is granted to copy and distribute translations of this
452documentation into another language, under the above conditions for
453modified versions.
454