The basic steps to build and install perl5 on a Unix system are:
- rm -f config.sh
+ rm -f config.sh Policy.sh
sh Configure
make
make test
=head1 Space Requirements
-The complete perl5 source tree takes up about 7 MB of disk space. The
-complete tree after completing make takes roughly 15 MB, though the
+The complete perl5 source tree takes up about 10 MB of disk space. The
+complete tree after completing make takes roughly 20 MB, though the
actual total is likely to be quite system-dependent. The installation
-directories need something on the order of 7 MB, though again that
+directories need something on the order of 10 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 results of a Configure run are stored in the config.sh file. 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 or rename it, e.g.
+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 or rename it, e.g.
mv config.sh config.sh.old
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 new Policy.sh file. See the section on
+L<"Site-wide Policy settings"> below.
+
=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 ok. At any Configure prompt, you can type &-d
+is almost always okay. 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
your perl source directory. If you do, installperl will attempt
infinite recursion.
+It may seem obvious to say, but Perl is useful only when users can
+easily find it. When possible, it's good for both /usr/bin/perl and
+/usr/local/bin/perl to be symlinks to the actual binary. If that can't
+be done, 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.
+
+It may seem obvious to say, but Perl is useful only when users can
+easily find it. When possible, it's good for both /usr/bin/perl and
+/usr/local/bin/perl to be symlinks to the actual binary. If that can't
+be done, 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.
+
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
=head2 GNU-style configure
If you prefer the GNU-style configure command line interface, you can
-use the supplied configure command, e.g.
+use the supplied configure.gnu command, e.g.
CC=gcc ./configure.gnu
-The configure script emulates a few of the more common configure
+The configure.gnu script emulates a few of the more common configure
options. Try
./configure.gnu --help
Cross compiling is not supported.
-(The file is called configugre.gnu to avoid problems on systems
+(The file is called configure.gnu to avoid problems on systems
that would not distinguish the files "Configure" and "configure".)
=head2 Extensions
DB or newer releases of version 2. Configure will automatically detect
this for you and refuse to try to build DB_File with 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
cd /usr/local # Or wherever you specified as $prefix
tar xvf perl5-archive.tar
-=head2 Site-wide "Policy" settings
+=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
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.
+
=head2 Configure-time Options
There are several different ways to Configure and build perl for your
Some users, however, may wish to further customize perl. Here are
some of the main things you can change.
+=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
+
=head2 Threads
On some platforms, perl5.005 can be compiled to use threads. To
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 you man pages for cc(1) and also any hint file for your
+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
=item malloc duplicates
-If you get duplicates upon linking for malloc et al, add -DHIDEMYMALLOC
-or -DEMBEDMYMALLOC to your ccflags variable in config.sh.
+If you get duplicates upon linking for malloc et al, add -DEMBEDMYMALLOC
+to your ccflags variable in config.sh.
=item varargs
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.,
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
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.
+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.
+
+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.
+
+You may also be able to reduce perl's memory usage by using some of
+the ideas described above in L<"Malloc Performance Flags">.
+
+=back
+
=head1 make install
This will put perl into the public directory you specified to
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, simplly replace the '#!/usr/local/bin/perl' line at the
+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.
If you wish to continue using those extensions under 5.004_04, for
example, then you need to move those extensions from their current
-direcotries, which are something like
+directories, which are something like
/usr/local/lib/perl5/site_perl/
/usr/local/lib/perl5/site_perl/archname
=head1 LAST MODIFIED
-$Id: INSTALL,v 1.31 1998/03/03 18:08:52 doughera Released $
+$Id: INSTALL,v 1.34 1998/04/23 18:19:41 doughera Released $