This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
documentation fixes from p5p
[perl5.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index 7ac14ca..552c870 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -8,7 +8,8 @@ First, make sure you are installing an up-to-date version of Perl.   If
 you didn't get your Perl source from CPAN, check the latest version at
 <URL:http://www.perl.com/CPAN/src/>.
 
-The basic steps to build and install perl5 on a Unix system are:
+The basic steps to build and install perl5 on a Unix system
+with all the defaults are:
 
        rm -f config.sh Policy.sh
        sh Configure -de
@@ -42,20 +43,6 @@ For information on what's new in this release, see the
 pod/perldelta.pod file.  For more detailed information about specific
 changes, see the Changes file.
 
-IMPORTANT NOTE:  5.005_53 and later releases do not export unadorned
-global symbols anymore.  This means you may need to build older
-extensions that have not been updated for the new naming convention
-with:
-
-       perl Makefile.PL POLLUTE=1
-       
-Alternatively, you can enable CPP symbol pollution wholesale by
-building perl itself with:
-
-       sh Configure -Accflags=-DPERL_POLLUTE
-
-pod/perldelta.pod contains more details about this.
-
 =head1 DESCRIPTION
 
 This document is written in pod format as an easy way to indicate its
@@ -67,7 +54,8 @@ by lines beginning with '='.  The other mark-up used is
     C<code>    literal code
     L<name>     A link (cross reference) to name
 
-You should probably at least skim through this entire document before
+Although most of the defaults are probably fine for most users,
+you should probably at least skim through this entire document before
 proceeding.
 
 If you're building Perl on a non-Unix system, you should also read
@@ -80,6 +68,22 @@ system.  (Unixware users should use the svr4.sh hint file.)  If
 there is a README file for your platform, then you should read
 that too.  Additional information is in the Porting/ directory.
 
+=head1 WARNING:  This version requires an extra step to build old extensions.
+
+5.005_53 and later releases do not export unadorned
+global symbols anymore.  This means you may need to build older
+extensions that have not been updated for the new naming convention
+with:
+
+       perl Makefile.PL POLLUTE=1
+       
+Alternatively, you can enable CPP symbol pollution wholesale by
+building perl itself with:
+
+       sh Configure -Accflags=-DPERL_POLLUTE
+
+pod/perldelta.pod contains more details about this.
+
 =head1 WARNING:  This version may not be binary compatible with Perl 5.005.
 
 Using the default Configure options for building perl should get you
@@ -102,7 +106,7 @@ The standard extensions supplied with Perl will be handled automatically.
 On a related issue, old modules may possibly be affected by the
 changes in the Perl language in the current release.  Please see
 pod/perldelta.pod (and pod/perl500Xdelta.pod) for a description of
-what's changed.  See also your installed copy of the perllocal.pod
+what's changed.  See your installed copy of the perllocal.pod
 file for a (possibly incomplete) list of locally installed modules.
 Also see CPAN::autobundle for one way to make a "bundle" of your
 currently installed modules.
@@ -124,12 +128,15 @@ If you succeed in automatically converting the sources to a K&R compatible
 form, be sure to email perlbug@perl.com to let us know the steps you
 followed.  This will enable us to officially support this option.
 
+Although Perl can be compiled using a C++ compiler, the Configure script
+does not work with some C++ compilers.
+
 =head1 Space Requirements
 
-The complete perl5 source tree takes up about 15 MB of disk space.
-After completing make, it takes up roughly 20 MB, though the actual
+The complete perl5 source tree takes up about 20 MB of disk space.
+After completing make, it takes up roughly 30 MB, though the actual
 total is likely to be quite system-dependent.  The installation
-directories need something on the order of 15 MB, though again that
+directories need something on the order of 20 MB, though again that
 value is system-dependent.
 
 =head1 Start with a Fresh Distribution
@@ -333,7 +340,7 @@ The directories set up by Configure fall into three broad categories.
 
 =item Directories for the perl distribution
 
-By default, Configure will use the following directories for 5.6.
+By default, Configure will use the following directories for 5.6.0.
 $version is the full perl version number, including subversion, e.g.
 5.6.0 or 5.6.1, and $archname is a string like sun4-sunos,
 determined by Configure.  The full definitions of all Configure
@@ -360,23 +367,26 @@ the common style is shown here.
 
 After perl is installed, you may later wish to add modules (e.g. from
 CPAN) or scripts.  Configure will set up the following directories to
-be used for installing those add-on modules and scripts.  $version
-is the perl version number, e.g. 5.6.0.
+be used for installing those add-on modules and scripts.
 
     Configure variable Default value
     $siteprefix                $prefix
     $sitebin           $siteprefix/bin
-    $sitescriptdir     $siteprefix/bin
+    $sitescript                $siteprefix/bin
     $sitelib           $siteprefix/lib/perl5/site_perl/$version
     $sitearch          $siteprefix/lib/perl5/site_perl/$version/$archname
-    $siteman1dir       $siteprefix/man/man1
-    $siteman3dir       $siteprefix/man/man3
-    $sitehtml1dir      (none)
-    $sitehtml3dir      (none)
+    $siteman1          $siteprefix/man/man1
+    $siteman3          $siteprefix/man/man3
+    $sitehtml1         (none)
+    $sitehtml3         (none)
 
 By default, ExtUtils::MakeMaker will install architecture-independent
 modules into $sitelib and architecture-dependent modules into $sitearch.
 
+NOTE:  As of 5.6.0, ExtUtils::MakeMaker will use $sitelib and $sitearch,
+but will not use the other site-specific directories.  Volunteers to
+fix this are needed.
+
 =item Directories for vendor-supplied add-on files
 
 Lastly, if you are building a binary distribution of perl for
@@ -387,13 +397,13 @@ for you to use to distribute add-on modules.
     $vendorprefix      (none)
     (The next ones are set only if vendorprefix is set.)
     $vendorbin         $vendorprefix/bin
-    $vendorscriptdir   $vendorprefix/bin
+    $vendorscript      $vendorprefix/bin
     $vendorlib         $vendorprefix/lib/perl5/vendor_perl/$version
     $vendorarch                $vendorprefix/lib/perl5/vendor_perl/$version/$archname
-    $vendorman1dir     $vendorprefix/man/man1
-    $vendorman3dir     $vendorprefix/man/man3
-    $vendorhtml1dir    (none)
-    $vendorhtml3dir    (none)
+    $vendorman1                $vendorprefix/man/man1
+    $vendorman3                $vendorprefix/man/man3
+    $vendorhtml1       (none)
+    $vendorhtml3       (none)
 
 These are normally empty, but may be set as needed.  For example,
 a vendor might choose the following settings:
@@ -412,23 +422,26 @@ This would have the effect of setting the following:
        $man3dir        /usr/man/man3
 
        $sitebin        /usr/local/bin
-       $sitescriptdir  /usr/local/bin
+       $sitescript     /usr/local/bin
        $sitelib        /usr/local/lib/perl5/site_perl/$version
        $sitearch       /usr/local/lib/perl5/site_perl/$version/$archname
-       $siteman1dir    /usr/local/man/man1
-       $siteman3dir    /usr/local/man/man3
+       $siteman1       /usr/local/man/man1
+       $siteman3       /usr/local/man/man3
 
-       $vendorbin              /usr/bin
-       $vendorscriptdir        /usr/bin
+       $vendorbin      /usr/bin
+       $vendorscript   /usr/bin
        $vendorlib      /usr/lib/perl5/vendor_perl/$version
        $vendorarch     /usr/lib/perl5/vendor_perl/$version/$archname
-       $vendorman1dir  /usr/man/man1
-       $vendorman3dir  /usr/man/man3
+       $vendorman1     /usr/man/man1
+       $vendorman3     /usr/man/man3
 
 Note how in this example, the vendor-supplied directories are in the
 /usr hierarchy, while the directories reserved for the end-user are in
 the /usr/local hierarchy.
 
+NOTE:  As of 5.6.0, ExtUtils::MakeMaker does not use these directories.
+Volunteers to fix this are needed.
+
 The entire installed library hierarchy is installed in locations with
 version numbers, keeping the installations of different versions distinct.
 However, later installations of Perl can still be configured to search the
@@ -582,7 +595,7 @@ If the generated Policy.sh file is unsuitable, you may freely edit it
 to contain any valid shell commands.  It will be run just after the
 platform-specific hints files.
 
-Note:  Since the directory hierarchy for 5.6 contains a number of
+Note:  Since the directory hierarchy for 5.6.0 contains a number of
 new vendor* and site* entries, your Policy.sh file will probably not
 set them to your desired values.  I encourage you to run Configure
 interactively to be sure it puts things where you want them.
@@ -737,7 +750,7 @@ You can elect to build a shared libperl by
 
 To build a shared libperl, the environment variable controlling shared
 library search (LD_LIBRARY_PATH in most systems, DYLD_LIBRARY_PATH for
-NeXTSTEP/OPENSTEP/Rhapsody, LIBRARY_PATH for BeOS, SHLIB_PATH for
+NeXTSTEP/OPENSTEP/Darwin, LIBRARY_PATH for BeOS, SHLIB_PATH for
 HP-UX, LIBPATH for AIX, PATH for Cygwin) must be set up to include
 the Perl build directory because that's where the shared libperl will
 be created.  Configure arranges makefile to have the correct shared
@@ -881,7 +894,17 @@ the Configure command line.  Similarly, the Opcode extension is always
 built by default, but you can skip it by setting the Configure variable
 useopcode=false either in a hint file for from the command line.
 
-You can learn more about each of these extensions by consulting the
+If you unpack any additional extensions in the ext/ directory before
+running Configure, then Configure will offer to build those additional
+extensions as well.  Most users probably shouldn't have to do this --
+it is usually easier to build additional extensions later after perl
+has been installed.  However, if you wish to have those additional
+extensions statically linked into the perl binary, then this offers a
+convenient way to do that in one step.  (It is not necessary, however;
+you can build and install extensions just fine even if you don't have
+dynamic loading.  See lib/ExtUtils/MakeMaker.pm for more details.)
+
+You can learn more about each of the supplied extensions by consulting the
 documentation in the individual .pm modules, located under the
 ext/ subdirectory.
 
@@ -904,7 +927,7 @@ to turn off each extension:
     SDBM_File          (Always included by default)
     Opcode             useopcode
     Socket             d_socket
-    Threads            usethreads
+    Threads            use5005threads
     attrs              (Always included by default)
 
 Thus to skip the NDBM_File extension, you can use
@@ -1133,8 +1156,9 @@ $ccflags or $optimize, and then re-run
 
 =item No sh
 
-If you don't have sh, you'll have to copy the sample file Porting/config_H
-to config.h and edit the config.h to reflect your system's peculiarities.
+If you don't have sh, you'll have to copy the sample file
+Porting/config.sh to config.sh and edit your config.sh to reflect your
+system's peculiarities.  See Porting/pumpkin.pod for more information.
 You'll probably also have to extensively modify the extension building
 mechanism.
 
@@ -1179,7 +1203,7 @@ libgdbm under HP-UX 11.
 Specific information for the OS/2, Plan9, VMS and Win32 ports is in the
 corresponding README files and subdirectories.  Additional information,
 including a glossary of all those config.sh variables, is in the Porting
-subdirectory.  Especially Porting/Glossary should come in handy. 
+subdirectory.  Especially Porting/Glossary should come in handy.
 
 Ports for other systems may also be available.  You should check out
 http://www.perl.com/CPAN/ports for current information on ports to
@@ -1580,10 +1604,8 @@ external program.
 
 On some systems, particularly those with smaller amounts of RAM, some
 of the tests in t/op/pat.t may fail with an "Out of memory" message.
-Specifically, in perl5.004_64, tests 74 and 78 have been reported to
-fail on some systems.  On my SparcStation IPC with 8 MB of RAM, test 78
-will fail if the system is running any other significant tasks at the
-same time.
+For example, on my SparcStation IPC with 12 MB of RAM, in perl5.5.670,
+test 85 will fail if run under either t/TEST or t/harness.
 
 Try stopping other jobs on the system and then running the test by itself:
 
@@ -1704,8 +1726,9 @@ searched by version 5.6.0 will be
 
        /usr/local/lib/perl5/site_perl/5.005/$archname
        /usr/local/lib/perl5/site_perl/5.005
+       /usr/local/lib/perl5/site_perl/
 
-Notice the last two entries -- Perl understands the default structure
+Notice the last three entries -- Perl understands the default structure
 of the $sitelib directories and will look back in older, compatible
 directories.  This way, modules installed under 5.005_03 will continue
 to be usable by 5.005_03 but will also accessible to 5.6.0.  Further,
@@ -1714,11 +1737,8 @@ present only in 5.6.0.  That new module will get installed into
 /usr/local/lib/perl5/site_perl/5.6.0 and will be available to 5.6.0,
 but will not interfere with the 5.005_03 version.
 
-Also, by default, 5.6.0 will look in
-
-       /usr/local/lib/perl5/site_perl/
-
-for 5.004-era pure perl modules.
+The last entry, /usr/local/lib/perl5/site_perl/, is there so that
+5.6.0 will look for 5.004-era pure perl modules.
 
 Lastly, suppose you now install version 5.6.1, which we'll assume is
 binary compatible with 5.6.0 and 5.005.  The directories searched
@@ -1775,15 +1795,15 @@ yet.
 
 =head2 Upgrading from 5.005 to 5.6.0
 
-Extensions built and installed with versions of perl prior to 5.005_50
-will need to be recompiled to be used with 5.005_50 and later.  You will,
-however, be able to continue using 5.005 even after you install 5.6.
-The 5.005 binary will still be able to find the modules built under
-5.005; the 5.6.0 binary will look in the new $sitearch and $sitelib
-directories, and will not find them.  See also your installed copy
-of the perllocal.pod file for a (possibly incomplete) list of locally
-installed modules.  Note that you want perllocal.pod not perllocale.pod
-for installed module information.
+Most extensions built and installed with versions of perl
+prior to 5.005_50 will not need to be recompiled to be used with
+5.6.0.  If you find you do need to rebuild an extension with 5.6.0,
+you may safely do so without disturbing the 5.005 installation.
+(See L<"Coexistence with earlier versions of perl5"> above.)
+
+See your installed copy of the perllocal.pod file for a (possibly
+incomplete) list of locally installed modules.  Note that you want
+perllocal.pod not perllocale.pod for installed module information.
 
 =head1 Coexistence with perl4