summaryrefslogtreecommitdiffstats
path: root/contrib/perl5/INSTALL
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/perl5/INSTALL')
-rw-r--r--contrib/perl5/INSTALL2167
1 files changed, 0 insertions, 2167 deletions
diff --git a/contrib/perl5/INSTALL b/contrib/perl5/INSTALL
deleted file mode 100644
index dbf6cb5..0000000
--- a/contrib/perl5/INSTALL
+++ /dev/null
@@ -1,2167 +0,0 @@
-=head1 NAME
-
-Install - Build and Installation guide for perl5.
-
-=head1 SYNOPSIS
-
-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.cpan.org/src/>.
-
-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
- make
- make test
- make install
-
- # You may also wish to add these:
- (cd /usr/include && h2ph *.h sys/*.h)
- (installhtml --help)
- (cd pod && make tex && <process the latex files>)
-
-Each of these is explained in further detail below.
-
-B<NOTE>: starting from the release 5.6.0 Perl will use a version
-scheme where even-numbered subreleases (like 5.6) are stable
-maintenance releases and odd-numbered subreleases (like 5.7) are
-unstable development releases. Development releases should not be
-used in production environments. Fixes and new features are first
-carefully tested in development releases and only if they prove
-themselves to be worthy will they be migrated to the maintenance
-releases.
-
-The above commands will install Perl to /usr/local or /opt, depending
-on the platform. If that's not okay with you, use
-
- rm -f config.sh Policy.sh
- sh Configure
- make
- make test
- make install
-
-For information on non-Unix systems, see the section on
-L<"Porting information"> below.
-
-If you have problems, corrections, or questions, please see
-L<"Reporting Problems"> below.
-
-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.
-
-=head1 DESCRIPTION
-
-This document is written in pod format as an easy way to indicate its
-structure. The pod format is described in pod/perlpod.pod, but you can
-read it as is with any pager or editor. Headings and items are marked
-by lines beginning with '='. The other mark-up used is
-
- B<text> embolden text, used for switches, programs or commands
- C<code> literal code
- L<name> A link (cross reference) to name
-
-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
-the README file specific to your operating system, since this may
-provide additional or different instructions for building Perl.
-
-If there is a hint file for your system (in the hints/ directory) you
-should also read that hint file for specific information for your
-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
-a perl that will be binary compatible with the 5.005 release.
-
-However, if you run Configure with any custom options, such as
--Dusethreads, -Dusemultiplicity, -Dusemymalloc, -Ubincompat5005 etc.,
-the resulting perl will not be binary compatible. Under these
-circumstances, if you have dynamically loaded extensions that were
-built under perl 5.005, you will need to rebuild and reinstall all
-those extensions to use them with 5.6.
-
-Pure perl modules without XS or C code should continue to work fine
-without reinstallation. See the discussions below on
-L<"Coexistence with earlier versions of perl5"> and
-L<"Upgrading from 5.005 to 5.6"> for more details.
-
-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 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.
-
-=head1 WARNING: This version requires a compiler that supports ANSI C.
-
-Most C compilers are now ANSI-compliant. However, a few current
-computers are delivered with an older C compiler expressly for
-rebuilding the system kernel, or for some other historical reason.
-Alternatively, you may have an old machine which was shipped before
-ANSI compliance became widespread. Such compilers are not suitable
-for building Perl.
-
-If you find that your default C compiler is not ANSI-capable, but you
-know that an ANSI-capable compiler is installed on your system, you
-can tell F<Configure> to use the correct compiler by means of the
-C<-Dcc=> command-line option -- see L<"gcc">.
-
-If do not have an ANSI-capable compiler there are several avenues open
-to you:
-
-=over 4
-
-=item *
-
-You may try obtaining GCC, available from GNU mirrors worldwide,
-listed at <URL:http://www.gnu.org/order/ftp.html>. If, rather than
-building gcc from source code, you locate a binary version configured
-for your platform, be sure that it is compiled for the version of the
-operating system that you are using.
-
-=item *
-
-You may purchase a commercial ANSI C compiler from your system
-supplier or elsewhere. (Or your organization may already have
-licensed such software -- ask your colleagues to find out how to
-access it.) If there is a README file for your system in the Perl
-distribution (for example, F<README.hpux>), it may contain advice on
-suitable compilers.
-
-=item *
-
-Another alternative may be to use a tool like ansi2knr to convert the
-sources back to K&R style, but there is no guarantee this route will get
-you anywhere, since the prototypes are not the only ANSI features used
-in the Perl sources. ansi2knr is usually found as part of the freely
-available Ghostscript distribution. Another similar tool is
-unprotoize, distributed with GCC. Since unprotoize requires GCC to
-run, you may have to run it on a platform where GCC is available, and move
-the sources back to the platform without GCC.
-
-If you succeed in automatically converting the sources to a K&R compatible
-form, be sure to email perlbug@perl.org to let us know the steps you
-followed. This will enable us to officially support this option.
-
-=back
-
-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 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 20 MB, though again that
-value is system-dependent.
-
-=head1 Start with a Fresh Distribution
-
-If you have built perl before, you should clean out the build directory
-with the command
-
- make distclean
-
-or
-
- make realclean
-
-The only difference between the two is that make distclean also removes
-your old config.sh and Policy.sh files.
-
-The results of a Configure run are stored in the config.sh and Policy.sh
-files. If you are upgrading from a previous version of perl, or if you
-change systems or compilers or make other significant changes, or if
-you are experiencing difficulties building perl, you should probably
-not re-use your old config.sh. Simply remove it
-
- rm -f config.sh
-
-If you wish to use your old config.sh, be especially attentive to the
-version and architecture-specific questions and answers. For example,
-the default directory for architecture-dependent library modules
-includes the version name. By default, Configure will reuse your old
-name (e.g. /opt/perl/lib/i86pc-solaris/5.003) even if you're running
-Configure for a different version, e.g. 5.004. Yes, Configure should
-probably check and correct for this, but it doesn't, presently.
-Similarly, if you used a shared libperl.so (see below) with version
-numbers, you will probably want to adjust them as well.
-
-Also, be careful to check your architecture name. For example, some
-Linux distributions use i386, while others may use i486. If you build
-it yourself, Configure uses the output of the arch command, which
-might be i586 or i686 instead. If you pick up a precompiled binary, or
-compile extensions on different systems, they might not all agree on
-the architecture name.
-
-In short, if you wish to use your old config.sh, I recommend running
-Configure interactively rather than blindly accepting the defaults.
-
-If your reason to reuse your old config.sh is to save your particular
-installation choices, then you can probably achieve the same effect by
-using the Policy.sh file. See the section on L<"Site-wide Policy
-settings"> below. If you wish to start with a fresh distribution, you
-also need to remove any old Policy.sh files you may have with
-
- rm -f Policy.sh
-
-=head1 Run Configure
-
-Configure will figure out various things about your system. Some
-things Configure will figure out for itself, other things it will ask
-you about. To accept the default, just press RETURN. The default is
-almost always okay. It is normal for some things to be "NOT found",
-since Configure often searches for many different ways of performing
-the same function.
-
-At any Configure prompt, you can type &-d and Configure will use the
-defaults from then on.
-
-After it runs, Configure will perform variable substitution on all the
-*.SH files and offer to run make depend.
-
-=head2 Altering config.sh variables for C compiler switches etc.
-
-For most users, all of the Configure defaults are fine. Configure
-also has several convenient options which are all described below.
-However, if Configure doesn't have an option to do what you want,
-you can change Configure variables after the platform hints have been
-run, by using Configure's -A switch. For example, here's how to add
-a couple of extra flags to C compiler invocations:
-
- sh Configure -Accflags="-DPERL_Y2KWARN -DPERL_POLLUTE_MALLOC"
-
-For more help on Configure switches, run:
-
- sh Configure -h
-
-=head2 Building Perl outside of the source directory
-
-Sometimes it is desirable to build Perl in a directory different from
-where the sources are, for example if you want to keep your sources
-read-only, or if you want to share the sources between different binary
-architectures.
-
-Starting from Perl 5.6.1 you can do this (if your file system supports
-symbolic links) by
-
- mkdir /tmp/perl/build/directory
- cd /tmp/perl/build/directory
- sh /path/to/perl/source/Configure -Dmksymlinks ...
-
-This will create in /tmp/perl/build/directory a tree of symbolic links
-pointing to files in /path/to/perl/source. The original files are left
-unaffected. After Configure has finished you can just say
-
- make all test
-
-and Perl will be built and tested, all in /tmp/perl/build/directory.
-
-=head2 Common Configure options
-
-Configure supports a number of useful options. Run B<Configure -h> to
-get a listing. See the Porting/Glossary file for a complete list of
-Configure variables you can set and their definitions.
-
-=over 4
-
-=item gcc
-
-To compile with gcc you should run
-
- sh Configure -Dcc=gcc
-
-This is the preferred way to specify gcc (or another alternative
-compiler) so that the hints files can set appropriate defaults.
-
-=item Installation prefix
-
-By default, for most systems, perl will be installed in
-/usr/local/{bin, lib, man}. (See L<"Installation Directories">
-and L<"Coexistence with earlier versions of perl5"> below for
-further details.)
-
-You can specify a different 'prefix' for the default installation
-directory, when Configure prompts you or by using the Configure command
-line option -Dprefix='/some/directory', e.g.
-
- sh Configure -Dprefix=/opt/perl
-
-If your prefix contains the string "perl", then the suggested
-directory structure is simplified. For example, if you use
-prefix=/opt/perl, then Configure will suggest /opt/perl/lib instead of
-/opt/perl/lib/perl5/. Again, see L<"Installation Directories"> below
-for more details.
-
-NOTE: You must not specify an installation directory that is the same
-as or below your perl source directory. If you do, installperl will
-attempt infinite recursion.
-
-=item /usr/bin/perl
-
-It may seem obvious, but Perl is useful only when users can easily
-find it. It's often a good idea to have both /usr/bin/perl and
-/usr/local/bin/perl be symlinks to the actual binary. Be especially
-careful, however, not to overwrite a version of perl supplied by your
-vendor unless you are sure you know what you are doing.
-
-By default, Configure will arrange for /usr/bin/perl to be linked to
-the current version of perl. You can turn off that behavior by running
-
- Configure -Uinstallusrbinperl
-
-or by answering 'no' to the appropriate Configure prompt.
-
-In any case, system administrators are strongly encouraged to
-put (symlinks to) perl and its accompanying utilities, such as perldoc,
-into a directory typically found along a user's PATH, or in another
-obvious and convenient place.
-
-=item Overriding an old config.sh
-
-If you want to use your old config.sh but override some of the items
-with command line options, you need to use B<Configure -O>.
-
-=back
-
-If you are willing to accept all the defaults, and you want terse
-output, you can run
-
- sh Configure -des
-
-Note: for development releases (odd subreleases, like 5.7, as opposed
-to maintenance releases which have even subreleases, like 5.6)
-if you want to use Configure -d, you will also need to supply -Dusedevel
-to Configure, because the default answer to the question "do you really
-want to Configure a development version?" is "no". The -Dusedevel
-skips that sanity check.
-
-For example for my Solaris system, I usually use
-
- sh Configure -Dprefix=/opt/perl -Doptimize='-xpentium -xO4' -des
-
-=head2 GNU-style configure
-
-If you prefer the GNU-style configure command line interface, you can
-use the supplied configure.gnu command, e.g.
-
- CC=gcc ./configure.gnu
-
-The configure.gnu script emulates a few of the more common configure
-options. Try
-
- ./configure.gnu --help
-
-for a listing.
-
-Cross compiling and compiling in a different directory are not supported.
-
-(The file is called configure.gnu to avoid problems on systems
-that would not distinguish the files "Configure" and "configure".)
-
-=head2 Installation Directories
-
-The installation directories can all be changed by answering the
-appropriate questions in Configure. For convenience, all the
-installation questions are near the beginning of Configure.
-Further, there are a number of additions to the installation
-directories since 5.005, so reusing your old config.sh may not
-be sufficient to put everything where you want it.
-
-I highly recommend running Configure interactively to be sure it puts
-everything where you want it. At any point during the Configure
-process, you can answer a question with &-d and Configure will use
-the defaults from then on.
-
-The defaults are intended to be reasonable and sensible for most
-people building from sources. Those who build and distribute binary
-distributions or who export perl to a range of systems will probably
-need to alter them. If you are content to just accept the defaults,
-you can safely skip the next section.
-
-The directories set up by Configure fall into three broad categories.
-
-=over 4
-
-=item Directories for the perl distribution
-
-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
-variables are in the file Porting/Glossary.
-
- Configure variable Default value
- $prefix /usr/local
- $bin $prefix/bin
- $scriptdir $prefix/bin
- $privlib $prefix/lib/perl5/$version
- $archlib $prefix/lib/perl5/$version/$archname
- $man1dir $prefix/man/man1
- $man3dir $prefix/man/man3
- $html1dir (none)
- $html3dir (none)
-
-Actually, Configure recognizes the SVR3-style
-/usr/local/man/l_man/man1 directories, if present, and uses those
-instead. Also, if $prefix contains the string "perl", the library
-directories are simplified as described below. For simplicity, only
-the common style is shown here.
-
-=item Directories for site-specific add-on files
-
-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.
-
- Configure variable Default value
- $siteprefix $prefix
- $sitebin $siteprefix/bin
- $sitescript $siteprefix/bin
- $sitelib $siteprefix/lib/perl5/site_perl/$version
- $sitearch $siteprefix/lib/perl5/site_perl/$version/$archname
- $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
-distribution, Configure can optionally set up the following directories
-for you to use to distribute add-on modules.
-
- Configure variable Default value
- $vendorprefix (none)
- (The next ones are set only if vendorprefix is set.)
- $vendorbin $vendorprefix/bin
- $vendorscript $vendorprefix/bin
- $vendorlib $vendorprefix/lib/perl5/vendor_perl/$version
- $vendorarch $vendorprefix/lib/perl5/vendor_perl/$version/$archname
- $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:
-
- $prefix /usr/bin
- $siteprefix /usr/local/bin
- $vendorprefix /usr/bin
-
-This would have the effect of setting the following:
-
- $bin /usr/bin
- $scriptdir /usr/bin
- $privlib /usr/lib/perl5/$version
- $archlib /usr/lib/perl5/$version/$archname
- $man1dir /usr/man/man1
- $man3dir /usr/man/man3
-
- $sitebin /usr/local/bin
- $sitescript /usr/local/bin
- $sitelib /usr/local/lib/perl5/site_perl/$version
- $sitearch /usr/local/lib/perl5/site_perl/$version/$archname
- $siteman1 /usr/local/man/man1
- $siteman3 /usr/local/man/man3
-
- $vendorbin /usr/bin
- $vendorscript /usr/bin
- $vendorlib /usr/lib/perl5/vendor_perl/$version
- $vendorarch /usr/lib/perl5/vendor_perl/$version/$archname
- $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
-installed libraries corresponding to compatible earlier versions.
-See L<"Coexistence with earlier versions of perl5"> below for more details
-on how Perl can be made to search older version directories.
-
-Of course you may use these directories however you see fit. For
-example, you may wish to use $siteprefix for site-specific files that
-are stored locally on your own disk and use $vendorprefix for
-site-specific files that are stored elsewhere on your organization's
-network. One way to do that would be something like
-
- sh Configure -Dsiteprefix=/usr/local -Dvendorprefix=/usr/share/perl
-
-=item otherlibdirs
-
-As a final catch-all, Configure also offers an $otherlibdirs
-variable. This variable contains a colon-separated list of additional
-directories to add to @INC. By default, it will be empty.
-Perl will search these directories (including architecture and
-version-specific subdirectories) for add-on modules and extensions.
-
-=item APPLLIB_EXP
-
-There is one other way of adding paths to @INC at perl build time, and
-that is by setting the APPLLIB_EXP C pre-processor token to a colon-
-separated list of directories, like this
-
- sh Configure -Accflags='-DAPPLLIB_EXP=\"/usr/libperl\"'
-
-The directories defined by APPLLIB_EXP get added to @INC I<first>,
-ahead of any others, and so provide a way to override the standard perl
-modules should you, for example, want to distribute fixes without
-touching the perl distribution proper. And, like otherlib dirs,
-version and architecture specific subdirectories are also searched, if
-present, at run time. Of course, you can still search other @INC
-directories ahead of those in APPLLIB_EXP by using any of the standard
-run-time methods: $PERLLIB, $PERL5LIB, -I, use lib, etc.
-
-=item Man Pages
-
-In versions 5.005_57 and earlier, the default was to store module man
-pages in a version-specific directory, such as
-/usr/local/lib/perl5/$version/man/man3. The default for 5.005_58 and
-after is /usr/local/man/man3 so that most users can find the man pages
-without resetting MANPATH.
-
-You can continue to use the old default from the command line with
-
- sh Configure -Dman3dir=/usr/local/lib/perl5/5.6.0/man/man3
-
-Some users also prefer to use a .3pm suffix. You can do that with
-
- sh Configure -Dman3ext=3pm
-
-Again, these are just the defaults, and can be changed as you run
-Configure.
-
-=item HTML pages
-
-As of perl5.005_57, the standard perl installation does not do
-anything with HTML documentation, but that may change in the future.
-Further, some add-on modules may wish to install HTML documents. The
-html Configure variables listed above are provided if you wish to
-specify where such documents should be placed. The default is "none",
-but will likely eventually change to something useful based on user
-feedback.
-
-=back
-
-Some users prefer to append a "/share" to $privlib and $sitelib
-to emphasize that those directories can be shared among different
-architectures.
-
-Note that these are just the defaults. You can actually structure the
-directories any way you like. They don't even have to be on the same
-filesystem.
-
-Further details about the installation directories, maintenance and
-development subversions, and about supporting multiple versions are
-discussed in L<"Coexistence with earlier versions of perl5"> below.
-
-If you specify a prefix that contains the string "perl", then the
-library directory structure is slightly simplified. Instead of
-suggesting $prefix/lib/perl5/, Configure will suggest $prefix/lib.
-
-Thus, for example, if you Configure with
--Dprefix=/opt/perl, then the default library directories for 5.6.0 are
-
- Configure variable Default value
- $privlib /opt/perl/lib/5.6.0
- $archlib /opt/perl/lib/5.6.0/$archname
- $sitelib /opt/perl/lib/site_perl/5.6.0
- $sitearch /opt/perl/lib/site_perl/5.6.0/$archname
-
-=head2 Changing the installation directory
-
-Configure distinguishes between the directory in which perl (and its
-associated files) should be installed and the directory in which it
-will eventually reside. For most sites, these two are the same; for
-sites that use AFS, this distinction is handled automatically.
-However, sites that use software such as depot to manage software
-packages, or users building binary packages for distribution may also
-wish to install perl into a different directory and use that
-management software to move perl to its final destination. This
-section describes how to do that.
-
-Suppose you want to install perl under the /tmp/perl5 directory. You
-could edit config.sh and change all the install* variables to point to
-/tmp/perl5 instead of /usr/local, or you could simply use the
-following command line:
-
- sh Configure -Dinstallprefix=/tmp/perl5
-
-(replace /tmp/perl5 by a directory of your choice).
-
-Beware, though, that if you go to try to install new add-on
-modules, they too will get installed in under '/tmp/perl5' if you
-follow this example. The next section shows one way of dealing with
-that problem.
-
-=head2 Creating an installable tar archive
-
-If you need to install perl on many identical systems, it is
-convenient to compile it once and create an archive that can be
-installed on multiple systems. Suppose, for example, that you want to
-create an archive that can be installed in /opt/perl.
-Here's one way to do that:
-
- # Set up to install perl into a different directory,
- # e.g. /tmp/perl5 (see previous part).
- sh Configure -Dinstallprefix=/tmp/perl5 -Dprefix=/opt/perl -des
- make
- make test
- make install # This will install everything into /tmp/perl5.
- cd /tmp/perl5
- # Edit $archlib/Config.pm and $archlib/.packlist to change all the
- # install* variables back to reflect where everything will
- # really be installed. (That is, change /tmp/perl5 to /opt/perl
- # everywhere in those files.)
- # Check the scripts in $scriptdir to make sure they have the correct
- # #!/wherever/perl line.
- tar cvf ../perl5-archive.tar .
- # Then, on each machine where you want to install perl,
- cd /opt/perl # Or wherever you specified as $prefix
- tar xvf perl5-archive.tar
-
-=head2 Site-wide Policy settings
-
-After Configure runs, it stores a number of common site-wide "policy"
-answers (such as installation directories and the local perl contact
-person) in the Policy.sh file. If you want to build perl on another
-system using the same policy defaults, simply copy the Policy.sh file
-to the new system and Configure will use it along with the appropriate
-hint file for your system.
-
-Alternatively, if you wish to change some or all of those policy
-answers, you should
-
- rm -f Policy.sh
-
-to ensure that Configure doesn't re-use them.
-
-Further information is in the Policy_sh.SH file itself.
-
-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.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.
-
-=head2 Configure-time Options
-
-There are several different ways to Configure and build perl for your
-system. For most users, the defaults are sensible and will work.
-Some users, however, may wish to further customize perl. Here are
-some of the main things you can change.
-
-=head2 Threads
-
-On some platforms, perl5.005 and later can be compiled with
-experimental support for threads. To enable this, read the file
-README.threads, and then try:
-
- sh Configure -Dusethreads
-
-Currently, you need to specify -Dusethreads on the Configure command
-line so that the hint files can make appropriate adjustments.
-
-The default is to compile without thread support.
-
-As of v5.5.64, perl has two different internal threads implementations.
-The 5.005 version (5005threads) and an interpreter-based implementation
-(ithreads) with one interpreter per thread. By default, Configure selects
-ithreads if -Dusethreads is specified. However, you can select the old
-5005threads behavior instead by either
-
- sh Configure -Dusethreads -Duse5005threads
-
-or by
- sh Configure -Dusethreads -Uuseithreads
-
-Eventually (by perl v5.6.0) this internal confusion ought to disappear,
-and these options may disappear as well.
-
-=head2 64 bit support.
-
-If your platform does not have 64 bits natively, but can simulate them with
-compiler flags and/or C<long long> or C<int64_t>, you can build a perl that
-uses 64 bits.
-
-There are actually two modes of 64-bitness: the first one is achieved
-using Configure -Duse64bitint and the second one using Configure
--Duse64bitall. The difference is that the first one is minimal and
-the second one maximal. The first works in more places than the second.
-
-The C<use64bitint> does only as much as is required to get 64-bit
-integers into Perl (this may mean, for example, using "long longs")
-while your memory may still be limited to 2 gigabytes (because your
-pointers could still be 32-bit). Note that the name C<64bitint> does
-not imply that your C compiler will be using 64-bit C<int>s (it might,
-but it doesn't have to): the C<use64bitint> means that you will be
-able to have 64 bits wide scalar values.
-
-The C<use64bitall> goes all the way by attempting to switch also
-integers (if it can), longs (and pointers) to being 64-bit. This may
-create an even more binary incompatible Perl than -Duse64bitint: the
-resulting executable may not run at all in a 32-bit box, or you may
-have to reboot/reconfigure/rebuild your operating system to be 64-bit
-aware.
-
-Natively 64-bit systems like Alpha and Cray need neither -Duse64bitint
-nor -Duse64bitall.
-
- NOTE: 64-bit support is still experimental on most platforms.
- Existing support only covers the LP64 data model. In particular, the
- LLP64 data model is not yet supported. 64-bit libraries and system
- APIs on many platforms have not stabilized--your mileage may vary.
-
-=head2 Long doubles
-
-In some systems you may be able to use long doubles to enhance the
-range and precision of your double precision floating point numbers
-(that is, Perl's numbers). Use Configure -Duselongdouble to enable
-this support (if it is available).
-
-=head2 "more bits"
-
-You can "Configure -Dusemorebits" to turn on both the 64-bit support
-and the long double support.
-
-=head2 Selecting File IO mechanisms
-
-Previous versions of perl used the standard IO mechanisms as defined in
-stdio.h. Versions 5.003_02 and later of perl allow alternate IO
-mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
-the default and is the only supported mechanism.
-
-This PerlIO abstraction can be enabled either on the Configure command
-line with
-
- sh Configure -Duseperlio
-
-or interactively at the appropriate Configure prompt.
-
-If you choose to use the PerlIO abstraction layer, there are two
-(experimental) possibilities for the underlying IO calls. These have been
-tested to some extent on some platforms, but are not guaranteed to work
-everywhere.
-
-=over 4
-
-=item 1.
-
-AT&T's "sfio". This has superior performance to stdio.h in many
-cases, and is extensible by the use of "discipline" modules. Sfio
-currently only builds on a subset of the UNIX platforms perl supports.
-Because the data structures are completely different from stdio, perl
-extension modules or external libraries may not work. This
-configuration exists to allow these issues to be worked on.
-
-This option requires the 'sfio' package to have been built and installed.
-The latest sfio is available from http://www.research.att.com/sw/tools/sfio/
-
-You select this option by
-
- sh Configure -Duseperlio -Dusesfio
-
-If you have already selected -Duseperlio, and if Configure detects
-that you have sfio, then sfio will be the default suggested by
-Configure.
-
-Note: On some systems, sfio's iffe configuration script fails to
-detect that you have an atexit function (or equivalent). Apparently,
-this is a problem at least for some versions of Linux and SunOS 4.
-Configure should detect this problem and warn you about problems with
-_exit vs. exit. If you have this problem, the fix is to go back to
-your sfio sources and correct iffe's guess about atexit.
-
-=item 2.
-
-Normal stdio IO, but with all IO going through calls to the PerlIO
-abstraction layer. This configuration can be used to check that perl and
-extension modules have been correctly converted to use the PerlIO
-abstraction.
-
-This configuration should work on all platforms (but might not).
-
-You select this option via:
-
- sh Configure -Duseperlio -Uusesfio
-
-If you have already selected -Duseperlio, and if Configure does not
-detect sfio, then this will be the default suggested by Configure.
-
-=back
-
-=head2 SOCKS
-
-Perl can be configured to be 'socksified', that is, to use the SOCKS
-TCP/IP proxy protocol library. SOCKS is used to give applications
-access to transport layer network proxies. Perl supports only SOCKS
-Version 5. You can find more about SOCKS from http://www.socks.nec.com/
-
-=head2 Dynamic Loading
-
-By default, Configure will compile perl to use dynamic loading if
-your system supports it. If you want to force perl to be compiled
-statically, you can either choose this when Configure prompts you or
-you can use the Configure command line option -Uusedl.
-
-=head2 Building a shared libperl.so Perl library
-
-Currently, for most systems, the main perl executable is built by
-linking the "perl library" libperl.a with perlmain.o, your static
-extensions (usually just DynaLoader.a) and various extra libraries,
-such as -lm.
-
-On some systems that support dynamic loading, it may be possible to
-replace libperl.a with a shared libperl.so. If you anticipate building
-several different perl binaries (e.g. by embedding libperl into
-different programs, or by using the optional compiler extension), then
-you might wish to build a shared libperl.so so that all your binaries
-can share the same library.
-
-The disadvantages are that there may be a significant performance
-penalty associated with the shared libperl.so, and that the overall
-mechanism is still rather fragile with respect to different versions
-and upgrades.
-
-In terms of performance, on my test system (Solaris 2.5_x86) the perl
-test suite took roughly 15% longer to run with the shared libperl.so.
-Your system and typical applications may well give quite different
-results.
-
-The default name for the shared library is typically something like
-libperl.so.3.2 (for Perl 5.003_02) or libperl.so.302 or simply
-libperl.so. Configure tries to guess a sensible naming convention
-based on your C library name. Since the library gets installed in a
-version-specific architecture-dependent directory, the exact name
-isn't very important anyway, as long as your linker is happy.
-
-For some systems (mostly SVR4), building a shared libperl is required
-for dynamic loading to work, and hence is already the default.
-
-You can elect to build a shared libperl by
-
- sh Configure -Duseshrplib
-
-To build a shared libperl, the environment variable controlling shared
-library search (LD_LIBRARY_PATH in most systems, DYLD_LIBRARY_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
-library search settings.
-
-However, there are some special cases where manually setting the
-shared library path might be required. For example, if you want to run
-something like the following with the newly-built but not-yet-installed
-./perl:
-
- cd t; ./perl misc/failing_test.t
-or
- ./perl -Ilib ~/my_mission_critical_test
-
-then you need to set up the shared library path explicitly.
-You can do this with
-
- LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH
-
-for Bourne-style shells, or
-
- setenv LD_LIBRARY_PATH `pwd`
-
-for Csh-style shells. (This procedure may also be needed if for some
-unexpected reason Configure fails to set up makefile correctly.)
-
-You can often recognize failures to build/use a shared libperl from error
-messages complaining about a missing libperl.so (or libperl.sl in HP-UX),
-for example:
-18126:./miniperl: /sbin/loader: Fatal Error: cannot map libperl.so
-
-There is also an potential problem with the shared perl library if you
-want to have more than one "flavor" of the same version of perl (e.g.
-with and without -DDEBUGGING). For example, suppose you build and
-install a standard Perl 5.004 with a shared library. Then, suppose you
-try to build Perl 5.004 with -DDEBUGGING enabled, but everything else
-the same, including all the installation directories. How can you
-ensure that your newly built perl will link with your newly built
-libperl.so.4 rather with the installed libperl.so.4? The answer is
-that you might not be able to. The installation directory is encoded
-in the perl binary with the LD_RUN_PATH environment variable (or
-equivalent ld command-line option). On Solaris, you can override that
-with LD_LIBRARY_PATH; on Linux you can't. On Digital Unix, you can
-override LD_LIBRARY_PATH by setting the _RLD_ROOT environment variable
-to point to the perl build directory.
-
-The only reliable answer is that you should specify a different
-directory for the architecture-dependent library for your -DDEBUGGING
-version of perl. You can do this by changing all the *archlib*
-variables in config.sh to point to your new architecture-dependent library.
-
-=head2 Malloc Issues
-
-Perl relies heavily on malloc(3) to grow data structures as needed,
-so perl's performance can be noticeably affected by the performance of
-the malloc function on your system. The perl source is shipped with a
-version of malloc that has been optimized for the typical requests from
-perl, so there's a chance that it may be both faster and use less memory
-than your system malloc.
-
-However, if your system already has an excellent malloc, or if you are
-experiencing difficulties with extensions that use third-party libraries
-that call malloc, then you should probably use your system's malloc.
-(Or, you might wish to explore the malloc flags discussed below.)
-
-=over 4
-
-=item Using the system malloc
-
-To build without perl's malloc, you can use the Configure command
-
- sh Configure -Uusemymalloc
-
-or you can answer 'n' at the appropriate interactive Configure prompt.
-
-=item -DPERL_POLLUTE_MALLOC
-
-NOTE: This flag is enabled automatically on some platforms if you
-asked for binary compatibility with version 5.005, or if you just
-run Configure to accept all the defaults on those platforms. You
-can refuse the automatic binary compatibility flags wholesale by
-running:
-
- sh Configure -Ubincompat5005
-
-or by answering 'n' at the appropriate prompt.
-
-Perl's malloc family of functions are called Perl_malloc(),
-Perl_realloc(), Perl_calloc() and Perl_mfree(). When this flag is
-not enabled, the names do not clash with the system versions of
-these functions.
-
-If enabled, Perl's malloc family of functions will have the same
-names as the system versions. This may be sometimes required when you
-have libraries that like to free() data that may have been allocated
-by Perl_malloc() and vice versa.
-
-Note that enabling this option may sometimes lead to duplicate symbols
-from the linker for malloc et al. In such cases, the system probably
-does not allow its malloc functions to be fully replaced with custom
-versions.
-
-=back
-
-=head2 Building a debugging perl
-
-You can run perl scripts under the perl debugger at any time with
-B<perl -d your_script>. If, however, you want to debug perl itself,
-you probably want to do
-
- sh Configure -Doptimize='-g'
-
-This will do two independent things: First, it will force compilation
-to use cc -g so that you can use your system's debugger on the
-executable. (Note: Your system may actually require something like
-cc -g2. Check your man pages for cc(1) and also any hint file for
-your system.) Second, it will add -DDEBUGGING to your ccflags
-variable in config.sh so that you can use B<perl -D> to access perl's
-internal state. (Note: Configure will only add -DDEBUGGING by default
-if you are not reusing your old config.sh. If you want to reuse your
-old config.sh, then you can just edit it and change the optimize and
-ccflags variables by hand and then propagate your changes as shown in
-L<"Propagating your changes to config.sh"> below.)
-
-You can actually specify -g and -DDEBUGGING independently, but usually
-it's convenient to have both.
-
-If you are using a shared libperl, see the warnings about multiple
-versions of perl under L<Building a shared libperl.so Perl library>.
-
-=head2 Extensions
-
-By default, Configure will offer to build every extension which appears
-to be supported. For example, Configure will offer to build GDBM_File
-only if it is able to find the gdbm library. (See examples below.)
-B, DynaLoader, Fcntl, IO, and attrs are always built by default.
-Configure does not contain code to test for POSIX compliance, so POSIX
-is always built by default as well. If you wish to skip POSIX, you can
-set the Configure variable useposix=false either in a hint file or from
-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.
-
-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.
-
-Even if you do not have dynamic loading, you must still build the
-DynaLoader extension; you should just build the stub dl_none.xs
-version. (Configure will suggest this as the default.)
-
-In summary, here are the Configure command-line variables you can set
-to turn off each extension:
-
- B (Always included by default)
- DB_File i_db
- DynaLoader (Must always be included as a static extension)
- Fcntl (Always included by default)
- GDBM_File i_gdbm
- IO (Always included by default)
- NDBM_File i_ndbm
- ODBM_File i_dbm
- POSIX useposix
- SDBM_File (Always included by default)
- Opcode useopcode
- Socket d_socket
- Threads use5005threads
- attrs (Always included by default)
-
-Thus to skip the NDBM_File extension, you can use
-
- sh Configure -Ui_ndbm
-
-Again, this is taken care of automatically if you don't have the ndbm
-library.
-
-Of course, you may always run Configure interactively and select only
-the extensions you want.
-
-Note: The DB_File module will only work with version 1.x of Berkeley
-DB or newer releases of version 2. Configure will automatically detect
-this for you and refuse to try to build DB_File with earlier
-releases of version 2.
-
-If you re-use your old config.sh but change your system (e.g. by
-adding libgdbm) Configure will still offer your old choices of extensions
-for the default answer, but it will also point out the discrepancy to
-you.
-
-Finally, if you have dynamic loading (most modern Unix systems do)
-remember that these extensions do not increase the size of your perl
-executable, nor do they impact start-up time, so you probably might as
-well build all the ones that will work on your system.
-
-=head2 Including locally-installed libraries
-
-Perl5 comes with interfaces to number of database extensions, including
-dbm, ndbm, gdbm, and Berkeley db. For each extension, if
-Configure can find the appropriate header files and libraries, it will
-automatically include that extension. The gdbm and db libraries
-are not included with perl. See the library documentation for
-how to obtain the libraries.
-
-If your database header (.h) files are not in a directory normally
-searched by your C compiler, then you will need to include the
-appropriate -I/your/directory option when prompted by Configure. If
-your database library (.a) files are not in a directory normally
-searched by your C compiler and linker, then you will need to include
-the appropriate -L/your/directory option when prompted by Configure.
-See the examples below.
-
-=head2 Examples
-
-=over 4
-
-=item gdbm in /usr/local
-
-Suppose you have gdbm and want Configure to find it and build the
-GDBM_File extension. This example assumes you have gdbm.h
-installed in /usr/local/include/gdbm.h and libgdbm.a installed in
-/usr/local/lib/libgdbm.a. Configure should figure all the
-necessary steps out automatically.
-
-Specifically, when Configure prompts you for flags for
-your C compiler, you should include -I/usr/local/include.
-
-When Configure prompts you for linker flags, you should include
--L/usr/local/lib.
-
-If you are using dynamic loading, then when Configure prompts you for
-linker flags for dynamic loading, you should again include
--L/usr/local/lib.
-
-Again, this should all happen automatically. This should also work if
-you have gdbm installed in any of (/usr/local, /opt/local, /usr/gnu,
-/opt/gnu, /usr/GNU, or /opt/GNU).
-
-=item gdbm in /usr/you
-
-Suppose you have gdbm installed in some place other than /usr/local/,
-but you still want Configure to find it. To be specific, assume you
-have /usr/you/include/gdbm.h and /usr/you/lib/libgdbm.a. You
-still have to add -I/usr/you/include to cc flags, but you have to take
-an extra step to help Configure find libgdbm.a. Specifically, when
-Configure prompts you for library directories, you have to add
-/usr/you/lib to the list.
-
-It is possible to specify this from the command line too (all on one
-line):
-
- sh Configure -de \
- -Dlocincpth="/usr/you/include" \
- -Dloclibpth="/usr/you/lib"
-
-locincpth is a space-separated list of include directories to search.
-Configure will automatically add the appropriate -I directives.
-
-loclibpth is a space-separated list of library directories to search.
-Configure will automatically add the appropriate -L directives. If
-you have some libraries under /usr/local/ and others under
-/usr/you, then you have to include both, namely
-
- sh Configure -de \
- -Dlocincpth="/usr/you/include /usr/local/include" \
- -Dloclibpth="/usr/you/lib /usr/local/lib"
-
-=back
-
-=head2 Building DB, NDBM, and ODBM interfaces with Berkeley DB 3
-
-Perl interface for DB3 is part of Berkeley DB, but if you want to
-compile standard Perl DB/ODBM/NDBM interfaces, you must follow
-following instructions.
-
-Berkeley DB3 from Sleepycat Software is by default installed without
-DB1 compatibility code (needed for DB_File interface) and without
-links to compatibility files. So if you want to use packages written
-for DB/ODBM/NDBM interfaces, you need to configure DB3 with
---enable-compat185 (and optionally with --enable-dump185) and create
-additional references (suppose you are installing DB3 with
---prefix=/usr):
-
- ln -s libdb-3.so /usr/lib/libdbm.so
- ln -s libdb-3.so /usr/lib/libndbm.so
- echo '#define DB_DBM_HSEARCH 1' >dbm.h
- echo '#include <db.h>' >>dbm.h
- install -m 0644 dbm.h /usr/include/dbm.h
- install -m 0644 dbm.h /usr/include/ndbm.h
-
-Optionally, if you have compiled with --enable-compat185 (not needed
-for ODBM/NDBM):
-
- ln -s libdb-3.so /usr/lib/libdb1.so
- ln -s libdb-3.so /usr/lib/libdb.so
-
-ODBM emulation seems not to be perfect, but is quite usable,
-using DB 3.1.17:
-
- lib/odbm.............FAILED at test 9
- Failed 1/64 tests, 98.44% okay
-
-=head2 What if it doesn't work?
-
-If you run into problems, try some of the following ideas.
-If none of them help, then see L<"Reporting Problems"> below.
-
-=over 4
-
-=item Running Configure Interactively
-
-If Configure runs into trouble, remember that you can always run
-Configure interactively so that you can check (and correct) its
-guesses.
-
-All the installation questions have been moved to the top, so you don't
-have to wait for them. Once you've handled them (and your C compiler and
-flags) you can type &-d at the next Configure prompt and Configure
-will use the defaults from then on.
-
-If you find yourself trying obscure command line incantations and
-config.over tricks, I recommend you run Configure interactively
-instead. You'll probably save yourself time in the long run.
-
-=item Hint files
-
-The perl distribution includes a number of system-specific hints files
-in the hints/ directory. If one of them matches your system, Configure
-will offer to use that hint file.
-
-Several of the hint files contain additional important information.
-If you have any problems, it is a good idea to read the relevant hint file
-for further information. See hints/solaris_2.sh for an extensive example.
-More information about writing good hints is in the hints/README.hints
-file.
-
-=item *** WHOA THERE!!! ***
-
-Occasionally, Configure makes a wrong guess. For example, on SunOS
-4.1.3, Configure incorrectly concludes that tzname[] is in the
-standard C library. The hint file is set up to correct for this. You
-will see a message:
-
- *** WHOA THERE!!! ***
- The recommended value for $d_tzname on this machine was "undef"!
- Keep the recommended value? [y]
-
-You should always keep the recommended value unless, after reading the
-relevant section of the hint file, you are sure you want to try
-overriding it.
-
-If you are re-using an old config.sh, the word "previous" will be
-used instead of "recommended". Again, you will almost always want
-to keep the previous value, unless you have changed something on your
-system.
-
-For example, suppose you have added libgdbm.a to your system
-and you decide to reconfigure perl to use GDBM_File. When you run
-Configure again, you will need to add -lgdbm to the list of libraries.
-Now, Configure will find your gdbm include file and library and will
-issue a message:
-
- *** WHOA THERE!!! ***
- The previous value for $i_gdbm on this machine was "undef"!
- Keep the previous value? [y]
-
-In this case, you do not want to keep the previous value, so you
-should answer 'n'. (You'll also have to manually add GDBM_File to
-the list of dynamic extensions to build.)
-
-=item Changing Compilers
-
-If you change compilers or make other significant changes, you should
-probably not re-use your old config.sh. Simply remove it or
-rename it, e.g. mv config.sh config.sh.old. Then rerun Configure
-with the options you want to use.
-
-This is a common source of problems. If you change from cc to
-gcc, you should almost always remove your old config.sh.
-
-=item Propagating your changes to config.sh
-
-If you make any changes to config.sh, you should propagate
-them to all the .SH files by running
-
- sh Configure -S
-
-You will then have to rebuild by running
-
- make depend
- make
-
-=item config.over
-
-You can also supply a shell script config.over to over-ride Configure's
-guesses. It will get loaded up at the very end, just before config.sh
-is created. You have to be careful with this, however, as Configure
-does no checking that your changes make sense.
-
-=item config.h
-
-Many of the system dependencies are contained in config.h.
-Configure builds config.h by running the config_h.SH script.
-The values for the variables are taken from config.sh.
-
-If there are any problems, you can edit config.h directly. Beware,
-though, that the next time you run Configure, your changes will be
-lost.
-
-=item cflags
-
-If you have any additional changes to make to the C compiler command
-line, they can be made in cflags.SH. For instance, to turn off the
-optimizer on toke.c, find the line in the switch structure for
-toke.c and put the command optimize='-g' before the ;; . You
-can also edit cflags directly, but beware that your changes will be
-lost the next time you run Configure.
-
-To explore various ways of changing ccflags from within a hint file,
-see the file hints/README.hints.
-
-To change the C flags for all the files, edit config.sh and change either
-$ccflags or $optimize, and then re-run
-
- sh Configure -S
- make depend
-
-=item No sh
-
-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.
-
-=item Environment variable clashes
-
-Configure uses a CONFIG variable that is reported to cause trouble on
-ReliantUnix 5.44. If your system sets this variable, you can try
-unsetting it before you run Configure. Configure should eventually
-be fixed to avoid polluting the namespace of the environment.
-
-=item Digital UNIX/Tru64 UNIX and BIN_SH
-
-In Digital UNIX/Tru64 UNIX, Configure might abort with
-
-Build a threading Perl? [n]
-Configure[2437]: Syntax error at line 1 : `config.sh' is not expected.
-
-This indicates that Configure is being run with a broken Korn shell
-(even though you think you are using a Bourne shell by using
-"sh Configure" or "./Configure"). The Korn shell bug has been reported
-to Compaq as of February 1999 but in the meanwhile, the reason ksh is
-being used is that you have the environment variable BIN_SH set to
-'xpg4'. This causes /bin/sh to delegate its duties to /bin/posix/sh
-(a ksh). Unset the environment variable and rerun Configure.
-
-=item HP-UX 11, pthreads, and libgdbm
-
-If you are running Configure with -Dusethreads in HP-UX 11, be warned
-that POSIX threads and libgdbm (the GNU dbm library) compiled before
-HP-UX 11 do not mix. This will cause a basic test run by Configure to
-fail
-
-Pthread internal error: message: __libc_reinit() failed, file: ../pthreads/pthread.c, line: 1096
-Return Pointer is 0xc082bf33
-sh: 5345 Quit(coredump)
-
-and Configure will give up. The cure is to recompile and install
-libgdbm under HP-UX 11.
-
-=item Porting information
-
-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.
-
-Ports for other systems may also be available. You should check out
-http://www.perl.com/CPAN/ports for current information on ports to
-various other operating systems.
-
-If you plan to port Perl to a new architecture study carefully the
-section titled "Philosophical Issues in Patching and Porting Perl"
-in the file Porting/pumpkin.pod and the file Porting/patching.pod.
-Study also how other non-UNIX ports have solved problems.
-
-=back
-
-=head1 make depend
-
-This will look for all the includes. The output is stored in makefile.
-The only difference between Makefile and makefile is the dependencies at
-the bottom of makefile. If you have to make any changes, you should edit
-makefile, not Makefile since the Unix make command reads makefile first.
-(On non-Unix systems, the output may be stored in a different file.
-Check the value of $firstmakefile in your config.sh if in doubt.)
-
-Configure will offer to do this step for you, so it isn't listed
-explicitly above.
-
-=head1 make
-
-This will attempt to make perl in the current directory.
-
-=head2 What if it doesn't work?
-
-If you can't compile successfully, try some of the following ideas.
-If none of them help, and careful reading of the error message and
-the relevant manual pages on your system doesn't help,
-then see L<"Reporting Problems"> below.
-
-=over 4
-
-=item hints
-
-If you used a hint file, try reading the comments in the hint file
-for further tips and information.
-
-=item extensions
-
-If you can successfully build miniperl, but the process crashes
-during the building of extensions, you should run
-
- make minitest
-
-to test your version of miniperl.
-
-=item locale
-
-If you have any locale-related environment variables set, try unsetting
-them. I have some reports that some versions of IRIX hang while
-running B<./miniperl configpm> with locales other than the C locale.
-See the discussion under L<"make test"> below about locales and the
-whole L<"Locale problems"> section in the file pod/perllocale.pod.
-The latter is especially useful if you see something like this
-
- perl: warning: Setting locale failed.
- perl: warning: Please check that your locale settings:
- LC_ALL = "En_US",
- LANG = (unset)
- are supported and installed on your system.
- perl: warning: Falling back to the standard locale ("C").
-
-at Perl startup.
-
-=item varargs
-
-If you get varargs problems with gcc, be sure that gcc is installed
-correctly and that you are not passing -I/usr/include to gcc. When using
-gcc, you should probably have i_stdarg='define' and i_varargs='undef'
-in config.sh. The problem is usually solved by running fixincludes
-correctly. If you do change config.sh, don't forget to propagate
-your changes (see L<"Propagating your changes to config.sh"> below).
-See also the L<"vsprintf"> item below.
-
-=item util.c
-
-If you get error messages such as the following (the exact line
-numbers and function name may vary in different versions of perl):
-
- util.c: In function `Perl_form':
- util.c:1107: number of arguments doesn't match prototype
- proto.h:125: prototype declaration
-
-it might well be a symptom of the gcc "varargs problem". See the
-previous L<"varargs"> item.
-
-=item LD_LIBRARY_PATH
-
-If you run into dynamic loading problems, check your setting of
-the LD_LIBRARY_PATH environment variable. If you're creating a static
-Perl library (libperl.a rather than libperl.so) it should build
-fine with LD_LIBRARY_PATH unset, though that may depend on details
-of your local set-up.
-
-=item nm extraction
-
-If Configure seems to be having trouble finding library functions,
-try not using nm extraction. You can do this from the command line
-with
-
- sh Configure -Uusenm
-
-or by answering the nm extraction question interactively.
-If you have previously run Configure, you should not reuse your old
-config.sh.
-
-=item umask not found
-
-If the build processes encounters errors relating to umask(), the problem
-is probably that Configure couldn't find your umask() system call.
-Check your config.sh. You should have d_umask='define'. If you don't,
-this is probably the L<"nm extraction"> problem discussed above. Also,
-try reading the hints file for your system for further information.
-
-=item vsprintf
-
-If you run into problems with vsprintf in compiling util.c, the
-problem is probably that Configure failed to detect your system's
-version of vsprintf(). Check whether your system has vprintf().
-(Virtually all modern Unix systems do.) Then, check the variable
-d_vprintf in config.sh. If your system has vprintf, it should be:
-
- d_vprintf='define'
-
-If Configure guessed wrong, it is likely that Configure guessed wrong
-on a number of other common functions too. This is probably
-the L<"nm extraction"> problem discussed above.
-
-=item do_aspawn
-
-If you run into problems relating to do_aspawn or do_spawn, the
-problem is probably that Configure failed to detect your system's
-fork() function. Follow the procedure in the previous item
-on L<"nm extraction">.
-
-=item __inet_* errors
-
-If you receive unresolved symbol errors during Perl build and/or test
-referring to __inet_* symbols, check to see whether BIND 8.1 is
-installed. It installs a /usr/local/include/arpa/inet.h that refers to
-these symbols. Versions of BIND later than 8.1 do not install inet.h
-in that location and avoid the errors. You should probably update to a
-newer version of BIND. If you can't, you can either link with the
-updated resolver library provided with BIND 8.1 or rename
-/usr/local/bin/arpa/inet.h during the Perl build and test process to
-avoid the problem.
-
-=item #error "No DATAMODEL_NATIVE specified"
-
-This is a common error when trying to build perl on Solaris 2.6 with a
-gcc installation from Solaris 2.5 or 2.5.1. The Solaris header files
-changed, so you need to update your gcc installation. You can either
-rerun the fixincludes script from gcc or take the opportunity to
-update your gcc installation.
-
-=item Optimizer
-
-If you can't compile successfully, try turning off your compiler's
-optimizer. Edit config.sh and change the line
-
- optimize='-O'
-
-to
-
- optimize=' '
-
-then propagate your changes with B<sh Configure -S> and rebuild
-with B<make depend; make>.
-
-=item CRIPPLED_CC
-
-If you still can't compile successfully, try:
-
- sh Configure -Accflags=-DCRIPPLED_CC
-
-This flag simplifies some complicated expressions for compilers that get
-indigestion easily. (Just because you get no errors doesn't mean it
-compiled right!)
-
-=item Missing functions
-
-If you have missing routines, you probably need to add some library or
-other, or you need to undefine some feature that Configure thought was
-there but is defective or incomplete. Look through config.h for
-likely suspects. If Configure guessed wrong on a number of functions,
-you might have the L<"nm extraction"> problem discussed above.
-
-=item toke.c
-
-Some compilers will not compile or optimize the larger files (such as
-toke.c) without some extra switches to use larger jump offsets or
-allocate larger internal tables. You can customize the switches for
-each file in cflags. It's okay to insert rules for specific files into
-makefile since a default rule only takes effect in the absence of a
-specific rule.
-
-=item Missing dbmclose
-
-SCO prior to 3.2.4 may be missing dbmclose(). An upgrade to 3.2.4
-that includes libdbm.nfs (which includes dbmclose()) may be available.
-
-=item Note (probably harmless): No library found for -lsomething
-
-If you see such a message during the building of an extension, but
-the extension passes its tests anyway (see L<"make test"> below),
-then don't worry about the warning message. The extension
-Makefile.PL goes looking for various libraries needed on various
-systems; few systems will need all the possible libraries listed.
-For example, a system may have -lcposix or -lposix, but it's
-unlikely to have both, so most users will see warnings for the one
-they don't have. The phrase 'probably harmless' is intended to
-reassure you that nothing unusual is happening, and the build
-process is continuing.
-
-On the other hand, if you are building GDBM_File and you get the
-message
-
- Note (probably harmless): No library found for -lgdbm
-
-then it's likely you're going to run into trouble somewhere along
-the line, since it's hard to see how you can use the GDBM_File
-extension without the -lgdbm library.
-
-It is true that, in principle, Configure could have figured all of
-this out, but Configure and the extension building process are not
-quite that tightly coordinated.
-
-=item sh: ar: not found
-
-This is a message from your shell telling you that the command 'ar'
-was not found. You need to check your PATH environment variable to
-make sure that it includes the directory with the 'ar' command. This
-is a common problem on Solaris, where 'ar' is in the /usr/ccs/bin
-directory.
-
-=item db-recno failure on tests 51, 53 and 55
-
-Old versions of the DB library (including the DB library which comes
-with FreeBSD 2.1) had broken handling of recno databases with modified
-bval settings. Upgrade your DB library or OS.
-
-=item Bad arg length for semctl, is XX, should be ZZZ
-
-If you get this error message from the lib/ipc_sysv test, your System
-V IPC may be broken. The XX typically is 20, and that is what ZZZ
-also should be. Consider upgrading your OS, or reconfiguring your OS
-to include the System V semaphores.
-
-=item lib/ipc_sysv........semget: No space left on device
-
-Either your account or the whole system has run out of semaphores. Or
-both. Either list the semaphores with "ipcs" and remove the unneeded
-ones (which ones these are depends on your system and applications)
-with "ipcrm -s SEMAPHORE_ID_HERE" or configure more semaphores to your
-system.
-
-=item GNU binutils
-
-If you mix GNU binutils (nm, ld, ar) with equivalent vendor-supplied
-tools you may be in for some trouble. For example creating archives
-with an old GNU 'ar' and then using a new current vendor-supplied 'ld'
-may lead into linking problems. Either recompile your GNU binutils
-under your current operating system release, or modify your PATH not
-to include the GNU utils before running Configure, or specify the
-vendor-supplied utilities explicitly to Configure, for example by
-Configure -Dar=/bin/ar.
-
-=item THIS PACKAGE SEEMS TO BE INCOMPLETE
-
-The F<Configure> program has not been able to find all the files which
-make up the complete Perl distribution. You may have a damaged source
-archive file (in which case you may also have seen messages such as
-C<gzip: stdin: unexpected end of file> and C<tar: Unexpected EOF on
-archive file>), or you may have obtained a structurally-sound but
-incomplete archive. In either case, try downloading again from the
-official site named at the start of this document. If you do find
-that any site is carrying a corrupted or incomplete source code
-archive, please report it to the site's maintainer.
-
-=item invalid token: ##
-
-You are using a non-ANSI-compliant C compiler. See L<WARNING: This
-version requires a compiler that supports ANSI C>.
-
-=item Miscellaneous
-
-Some additional things that have been reported for either perl4 or perl5:
-
-Genix may need to use libc rather than libc_s, or #undef VARARGS.
-
-NCR Tower 32 (OS 2.01.01) may need -W2,-Sl,2000 and #undef MKDIR.
-
-UTS may need one or more of -DCRIPPLED_CC, -K or -g, and undef LSTAT.
-
-FreeBSD can fail the lib/ipc_sysv.t test if SysV IPC has not been
-configured to the kernel. Perl tries to detect this, though, and
-you will get a message telling what to do.
-
-If you get syntax errors on '(', try -DCRIPPLED_CC.
-
-Machines with half-implemented dbm routines will need to #undef I_ODBM
-
-HP-UX 11 Y2K patch "Y2K-1100 B.11.00.B0125 HP-UX Core OS Year 2000
-Patch Bundle" has been reported to break the io/fs test #18 which
-tests whether utime() can change timestamps. The Y2K patch seems to
-break utime() so that over NFS the timestamps do not get changed
-(on local filesystems utime() still works).
-
-=back
-
-=head1 make test
-
-This will run the regression tests on the perl you just made. If
-'make test' doesn't say "All tests successful" then something went
-wrong. See the file t/README in the t subdirectory.
-
-Note that you can't run the tests in background if this disables
-opening of /dev/tty. You can use 'make test-notty' in that case but
-a few tty tests will be skipped.
-
-=head2 What if make test doesn't work?
-
-If make test bombs out, just cd to the t directory and run ./TEST
-by hand to see if it makes any difference. If individual tests
-bomb, you can run them by hand, e.g.,
-
- ./perl op/groups.t
-
-Another way to get more detailed information about failed tests and
-individual subtests is to cd to the t directory and run
-
- ./perl harness
-
-(this assumes that most basic tests succeed, since harness uses
-complicated constructs).
-
-You should also read the individual tests to see if there are any helpful
-comments that apply to your system.
-
-=over 4
-
-=item locale
-
-Note: One possible reason for errors is that some external programs
-may be broken due to the combination of your environment and the way
-B<make test> exercises them. For example, this may happen if you have
-one or more of these environment variables set: LC_ALL LC_CTYPE
-LC_COLLATE LANG. In some versions of UNIX, the non-English locales
-are known to cause programs to exhibit mysterious errors.
-
-If you have any of the above environment variables set, please try
-
- setenv LC_ALL C
-
-(for C shell) or
-
- LC_ALL=C;export LC_ALL
-
-for Bourne or Korn shell) from the command line and then retry
-make test. If the tests then succeed, you may have a broken program that
-is confusing the testing. Please run the troublesome test by hand as
-shown above and see whether you can locate the program. Look for
-things like: exec, `backquoted command`, system, open("|...") or
-open("...|"). All these mean that Perl is trying to run some
-external program.
-
-=item Out of memory
-
-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.
-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:
-
- cd t; ./perl op/pat.t
-
-to see if you have any better luck. If your perl still fails this
-test, it does not necessarily mean you have a broken perl. This test
-tries to exercise the regular expression subsystem quite thoroughly,
-and may well be far more demanding than your normal usage.
-
-=item Test failures from lib/ftmp-security saying "system possibly insecure"
-
-Firstly, test failures from the ftmp-security are not necessarily
-serious or indicative of a real security threat. That being said,
-they bear investigating.
-
-The tests may fail for the following reasons. Note that each of the
-tests is run both in the building directory and the temporary
-directory, as returned by File::Spec->tmpdir().
-
-(1) If the directory the tests are being run is owned by somebody else
-than the user running the tests, or root (uid 0). This failure can
-happen if the Perl source code distribution is unpacked in a way that
-the user ids in the distribution package are used as-is. Some tar
-programs do this.
-
-(2) If the directory the test are being run in is writable by group
-or by other (remember: with UNIX/POSIX semantics, write access to
-a directory means the right to add/remove files in that directory),
-and there is no sticky bit set in the directory. 'Sticky bit' is
-a feature used in some UNIXes to give extra protection to files: if
-the bit is on a directory, no one but the owner (or the root) can remove
-that file even if the permissions of the directory would allow file
-removal by others. This failure can happen if the permissions in the
-directory simply are a bit too liberal for the tests' liking. This
-may or may not be a real problem: it depends on the permissions policy
-used on this particular directory/project/system/site. This failure
-can also happen if the system either doesn't support the sticky bit
-(this is the case with many non-UNIX platforms: in principle the
-File::Temp should know about these platforms and skip the tests), or
-if the system supports the sticky bit but for some reason or reasons
-it is not being used. This is for example the case with HP-UX: as of
-HP-UX release 11.00, the sticky bit is very much supported, but HP-UX
-doesn't use it on its /tmp directory as shipped. Also as with the
-permissions, some local policy might dictate that the stickiness is
-not used.
-
-(3) If the system supports the POSIX 'chown giveaway' feature and if
-any of the parent directories of the temporary file back to the root
-directory are 'unsafe', using the definitions given above in (1) and
-(2).
-
-See the documentation for the File::Temp module for more information
-about the various security aspects.
-
-=back
-
-=head1 make install
-
-This will put perl into the public directory you specified to
-Configure; by default this is /usr/local/bin. It will also try
-to put the man pages in a reasonable place. It will not nroff the man
-pages, however. You may need to be root to run B<make install>. If you
-are not root, you must own the directories in question and you should
-ignore any messages about chown not working.
-
-=head2 Installing perl under different names
-
-If you want to install perl under a name other than "perl" (for example,
-when installing perl with special features enabled, such as debugging),
-indicate the alternate name on the "make install" line, such as:
-
- make install PERLNAME=myperl
-
-You can separately change the base used for versioned names (like
-"perl5.005") by setting PERLNAME_VERBASE, like
-
- make install PERLNAME=perl5 PERLNAME_VERBASE=perl
-
-This can be useful if you have to install perl as "perl5" (due to an
-ancient version in /usr/bin supplied by your vendor, eg). Without this
-the versioned binary would be called "perl55.005".
-
-=head2 Installed files
-
-If you want to see exactly what will happen without installing
-anything, you can run
-
- ./perl installperl -n
- ./perl installman -n
-
-make install will install the following:
-
- binaries
-
- perl,
- perl5.nnn where nnn is the current release number. This
- will be a link to perl.
- suidperl,
- sperl5.nnn If you requested setuid emulation.
- a2p awk-to-perl translator
-
- scripts
-
- cppstdin This is used by perl -P, if your cc -E can't
- read from stdin.
- c2ph, pstruct Scripts for handling C structures in header files.
- s2p sed-to-perl translator
- find2perl find-to-perl translator
- h2ph Extract constants and simple macros from C headers
- h2xs Converts C .h header files to Perl extensions.
- perlbug Tool to report bugs in Perl.
- perldoc Tool to read perl's pod documentation.
- pl2pm Convert Perl 4 .pl files to Perl 5 .pm modules
- pod2html, Converters from perl's pod documentation format
- pod2latex, to other useful formats.
- pod2man,
- pod2text,
- pod2checker,
- pod2select,
- pod2usage
- splain Describe Perl warnings and errors
- dprofpp Perl code profile post-processor
-
- library files
-
- in $privlib and $archlib specified to
- Configure, usually under /usr/local/lib/perl5/.
-
- documentation
-
- man pages in $man1dir, usually /usr/local/man/man1.
- module man
- pages in $man3dir, usually /usr/local/man/man3.
- pod/*.pod in $privlib/pod/.
-
-Installperl will also create the directories listed above
-in L<"Installation Directories">.
-
-Perl's *.h header files and the libperl library are also installed
-under $archlib so that any user may later build new modules, run the
-optional Perl compiler, or embed the perl interpreter into another
-program even if the Perl source is no longer available.
-
-Sometimes you only want to install the version-specific parts of the perl
-installation. For example, you may wish to install a newer version of
-perl alongside an already installed production version of perl without
-disabling installation of new modules for the production version.
-To only install the version-specific parts of the perl installation, run
-
- Configure -Dversiononly
-
-or answer 'y' to the appropriate Configure prompt. Alternatively,
-you can just manually run
-
- ./perl installperl -v
-
-and skip installman altogether.
-See also L<"Maintaining completely separate versions"> for another
-approach.
-
-=head1 Coexistence with earlier versions of perl5
-
-In general, you can usually safely upgrade from one version of Perl (e.g.
-5.004_04) to another similar version (e.g. 5.004_05) without re-compiling
-all of your add-on extensions. You can also safely leave the old version
-around in case the new version causes you problems for some reason.
-For example, if you want to be sure that your script continues to run
-with 5.004_04, simply replace the '#!/usr/local/bin/perl' line at the
-top of the script with the particular version you want to run, e.g.
-#!/usr/local/bin/perl5.00404.
-
-Most extensions will probably not need to be recompiled to use
-with a newer version of perl. Here is how it is supposed to work.
-(These examples assume you accept all the Configure defaults.)
-
-Suppose you already have version 5.005_03 installed. The directories
-searched by 5.005_03 are
-
- /usr/local/lib/perl5/5.00503/$archname
- /usr/local/lib/perl5/5.00503
- /usr/local/lib/perl5/site_perl/5.005/$archname
- /usr/local/lib/perl5/site_perl/5.005
-
-Beginning with 5.6.0 the version number in the site libraries are
-fully versioned. Now, suppose you install version 5.6.0. The directories
-searched by version 5.6.0 will be
-
- /usr/local/lib/perl5/5.6.0/$archname
- /usr/local/lib/perl5/5.6.0
- /usr/local/lib/perl5/site_perl/5.6.0/$archname
- /usr/local/lib/perl5/site_perl/5.6.0
-
- /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 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,
-suppose that you upgrade a module to one which requires features
-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.
-
-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
-by 5.6.1 (if you don't change the Configure defaults) will be:
-
- /usr/local/lib/perl5/5.6.1/$archname
- /usr/local/lib/perl5/5.6.1
- /usr/local/lib/perl5/site_perl/5.6.1/$archname
- /usr/local/lib/perl5/site_perl/5.6.1
-
- /usr/local/lib/perl5/site_perl/5.6.0/$archname
- /usr/local/lib/perl5/site_perl/5.6.0
-
- /usr/local/lib/perl5/site_perl/5.005/$archname
- /usr/local/lib/perl5/site_perl/5.005
- /usr/local/lib/perl5/site_perl/
-
-Assuming the users in your site are still actively using perl 5.6.0 and
-5.005 after you installed 5.6.1, you can continue to install add-on
-extensions using any of perl 5.6.1, 5.6.0, or 5.005. The installations
-of these different versions remain distinct, but remember that the newer
-versions of perl are automatically set up to search the site libraries of
-the older ones. This means that installing a new extension with 5.005
-will make it visible to all three versions. Later, if you install the
-same extension using, say, perl 5.6.1, it will override the 5.005-installed
-version, but only for perl 5.6.1.
-
-This way, you can choose to share compatible extensions, but also upgrade
-to a newer version of an extension that may be incompatible with earlier
-versions, without breaking the earlier versions' installations.
-
-=head2 Maintaining completely separate versions
-
-Many users prefer to keep all versions of perl in completely
-separate directories. This guarantees that an update to one version
-won't interfere with another version. (The defaults guarantee this for
-libraries after 5.6.0, but not for executables. TODO?) One convenient
-way to do this is by using a separate prefix for each version, such as
-
- sh Configure -Dprefix=/opt/perl5.004
-
-and adding /opt/perl5.004/bin to the shell PATH variable. Such users
-may also wish to add a symbolic link /usr/local/bin/perl so that
-scripts can still start with #!/usr/local/bin/perl.
-
-Others might share a common directory for maintenance sub-versions
-(e.g. 5.004 for all 5.004_0x versions), but change directory with
-each major version.
-
-If you are installing a development subversion, you probably ought to
-seriously consider using a separate directory, since development
-subversions may not have all the compatibility wrinkles ironed out
-yet.
-
-=head2 Upgrading from 5.005 to 5.6.0
-
-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
-
-You can safely install perl5 even if you want to keep perl4 around.
-
-By default, the perl5 libraries go into /usr/local/lib/perl5/, so
-they don't override the perl4 libraries in /usr/local/lib/perl/.
-
-In your /usr/local/bin directory, you should have a binary named
-perl4.036. That will not be touched by the perl5 installation
-process. Most perl4 scripts should run just fine under perl5.
-However, if you have any scripts that require perl4, you can replace
-the #! line at the top of them by #!/usr/local/bin/perl4.036 (or
-whatever the appropriate pathname is). See pod/perltrap.pod for
-possible problems running perl4 scripts under perl5.
-
-=head1 cd /usr/include; h2ph *.h sys/*.h
-
-Some perl scripts need to be able to obtain information from the
-system header files. This command will convert the most commonly used
-header files in /usr/include into files that can be easily interpreted
-by perl. These files will be placed in the architecture-dependent
-library ($archlib) directory you specified to Configure.
-
-Note: Due to differences in the C and perl languages, the conversion
-of the header files is not perfect. You will probably have to
-hand-edit some of the converted files to get them to parse correctly.
-For example, h2ph breaks spectacularly on type casting and certain
-structures.
-
-=head1 installhtml --help
-
-Some sites may wish to make perl documentation available in HTML
-format. The installhtml utility can be used to convert pod
-documentation into linked HTML files and install them.
-
-Currently, the supplied ./installhtml script does not make use of the
-html Configure variables. This should be fixed in a future release.
-
-The following command-line is an example of one used to convert
-perl documentation:
-
- ./installhtml \
- --podroot=. \
- --podpath=lib:ext:pod:vms \
- --recurse \
- --htmldir=/perl/nmanual \
- --htmlroot=/perl/nmanual \
- --splithead=pod/perlipc \
- --splititem=pod/perlfunc \
- --libpods=perlfunc:perlguts:perlvar:perlrun:perlop \
- --verbose
-
-See the documentation in installhtml for more details. It can take
-many minutes to execute a large installation and you should expect to
-see warnings like "no title", "unexpected directive" and "cannot
-resolve" as the files are processed. We are aware of these problems
-(and would welcome patches for them).
-
-You may find it helpful to run installhtml twice. That should reduce
-the number of "cannot resolve" warnings.
-
-=head1 cd pod && make tex && (process the latex files)
-
-Some sites may also wish to make the documentation in the pod/ directory
-available in TeX format. Type
-
- (cd pod && make tex && <process the latex files>)
-
-=head1 Reporting Problems
-
-If you have difficulty building perl, and none of the advice in this file
-helps, and careful reading of the error message and the relevant manual
-pages on your system doesn't help either, then you should send a message
-to either the comp.lang.perl.misc newsgroup or to perlbug@perl.org with
-an accurate description of your problem.
-
-Please include the output of the ./myconfig shell script that comes with
-the distribution. Alternatively, you can use the perlbug program that
-comes with the perl distribution, but you need to have perl compiled
-before you can use it. (If you have not installed it yet, you need to
-run C<./perl -Ilib utils/perlbug> instead of a plain C<perlbug>.)
-
-Please try to make your message brief but clear. Trim out unnecessary
-information. Do not include large files (such as config.sh or a complete
-Configure or make log) unless absolutely necessary. Do not include a
-complete transcript of your build session. Just include the failing
-commands, the relevant error messages, and whatever preceding commands
-are necessary to give the appropriate context. Plain text should
-usually be sufficient--fancy attachments or encodings may actually
-reduce the number of people who read your message. Your message
-will get relayed to over 400 subscribers around the world so please
-try to keep it brief but clear.
-
-=head1 DOCUMENTATION
-
-Read the manual entries before running perl. The main documentation
-is in the pod/ subdirectory and should have been installed during the
-build process. Type B<man perl> to get started. Alternatively, you
-can type B<perldoc perl> to use the supplied perldoc script. This is
-sometimes useful for finding things in the library modules.
-
-Under UNIX, you can produce a documentation book in postscript form,
-along with its table of contents, by going to the pod/ subdirectory and
-running (either):
-
- ./roffitall -groff # If you have GNU groff installed
- ./roffitall -psroff # If you have psroff
-
-This will leave you with two postscript files ready to be printed.
-(You may need to fix the roffitall command to use your local troff
-set-up.)
-
-Note that you must have performed the installation already before running
-the above, since the script collects the installed files to generate
-the documentation.
-
-=head1 AUTHOR
-
-Original author: Andy Dougherty doughera@lafayette.edu , borrowing very
-heavily from the original README by Larry Wall, with lots of helpful
-feedback and additions from the perl5-porters@perl.org folks.
-
-If you have problems, corrections, or questions, please see
-L<"Reporting Problems"> above.
-
-=head1 REDISTRIBUTION
-
-This document is part of the Perl package and may be distributed under
-the same terms as perl itself, with the following additional request:
-If you are distributing a modified version of perl (perhaps as part of
-a larger package) please B<do> modify these installation instructions
-and the contact information to match your distribution.
-
-=head1 LAST MODIFIED
-
-$Id: INSTALL,v 1.58 1999/07/23 14:43:00 doughera Exp $
OpenPOWER on IntegriCloud