pod/perldelta.pod file. For more detailed information about specific
changes, see the Changes file.
+IMPORTANT NOTE: 5.005_53 and later releases do not export unadorned
+global symbols anymore. This means most CPAN modules probably won't
+build under this release without adding '-DPERL_POLLUTE' to ccflags
+in config.sh. This is not the default because we want the modules
+to get fixed *before* the 5.006 release. pod/perldelta.pod contains
+additional notes about this.
+
=head1 DESCRIPTION
This document is written in pod format as an easy way to indicate its
In a related issue, old extensions may possibly be affected by the
changes in the Perl language in the current release. Please see
-pod/perldelta.pod for a description of what's changed.
+pod/perldelta.pod (and pod/perl500Xdelta.pod) for a description of
+what's changed.
+
+=head1 WARNING: This version requires a compiler that supports ANSI C.
+
+If you find that your C compiler is not ANSI-capable, try obtaining
+GCC, available from GNU mirrors worldwide (e.g. ftp://ftp.gnu.org/pub/gnu).
+Another alternative may be to use a tool like C<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. C<ansi2knr> is usually found as part of the freely
+available C<Ghostscript> distribution. Another similar tool is
+C<unprotoize>, distributed with GCC. Since C<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.com to let us know the steps you
+followed. This will enable us to officially support this option.
=head1 Space Requirements
=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
+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
process, you can answer a question with &-d and Configure
will use the defaults from then on.
-By default, Configure will use the following directories for
-library files for 5.005 (archname is a string like sun4-sunos, determined
-by Configure).
+By default, Configure will use the following directories for library files
+for 5.005 (archname is a string like sun4-sunos, determined by Configure).
- /usr/local/lib/perl5/5.005/archname
- /usr/local/lib/perl5/5.005/share
- /usr/local/lib/perl5/site_perl/5.005/archname
- /usr/local/lib/perl5/site_perl/5.005/share
+ Configure variable Default value
+ $archlib /usr/local/lib/perl5/5.005/archname
+ $privlib /usr/local/lib/perl5/5.005
+ $sitearch /usr/local/lib/perl5/site_perl/5.005/archname
+ $sitelib /usr/local/lib/perl5/site_perl/5.005
-and the following directories for manual pages:
+Some users prefer to append a "/share" to $privlib and $sitelib
+to emphasize that those directories can be shared among different
+architectures.
- /usr/local/man/man1
- /usr/local/lib/perl5/man/man3
+By default, Configure will use the following directories for manual pages:
+
+ Configure variable Default value
+ $man1dir /usr/local/man/man1
+ $man3dir /usr/local/lib/perl5/man/man3
(Actually, Configure recognizes the SVR3-style
/usr/local/man/l_man/man1 directories, if present, and uses those
directory structure is simplified. For example, if you Configure with
-Dprefix=/opt/perl, then the defaults for 5.005 are
- /opt/perl/lib/5.005/archname
- /opt/perl/lib/5.005/share
- /opt/perl/lib/site_perl/5.005/archname
- /opt/perl/lib/site_perl/5.005/share
+ Configure variable Default value
+ $archlib /opt/perl/lib/5.005/archname
+ $privlib /opt/perl/lib/5.005
+ $sitearch /opt/perl/lib/site_perl/5.005/archname
+ $sitelib /opt/perl/lib/site_perl/5.005
- /opt/perl/man/man1
- /opt/perl/man/man3
+ $man1dir /opt/perl/man/man1
+ $man3dir /opt/perl/man/man3
The perl executable will search the libraries in the order given
above.
-The directories under site_perl are empty, but are intended to be used
+The directories under site_perl are empty, but are intended to be used
for installing local or site-wide extensions. Perl will automatically
look in these directories.
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. Here's one way to do that:
+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 config.over to install perl into a different directory,
# e.g. /tmp/perl5 (see previous part).
- sh Configure -des
+ sh Configure -Dprefix=/opt/perl -des
make
make test
- make install
+ make install # This will install everything into /tmp/perl5.
cd /tmp/perl5
- # Edit $archlib/Config.pm to change all the
+ # Edit $archlib/Config.pm and $archlib/.packlist to change all the
# install* variables back to reflect where everything will
- # really be installed.
- # Edit any of the scripts in $scriptdir to have the correct
+ # 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 /usr/local # Or wherever you specified as $prefix
+ cd /opt/perl # Or wherever you specified as $prefix
tar xvf perl5-archive.tar
=head2 Site-wide Policy settings
by adding appropriate -D directives to your ccflags variable in
config.sh.
-For example, you can replace the rand() and srand() functions in the
-perl source by any other random number generator by a trick such as the
-following:
-
- sh Configure -Dccflags='-Drand=random -Dsrand=srandom'
-
-or by adding -Drand=random and -Dsrand=srandom to your ccflags
-at the appropriate Configure prompt. (Note: Although this worked for
-me, it might not work for you if your system's header files give
-different prototypes for rand() and random() or srand() and srandom().)
+Starting from Perl 5.005_53 you no more need to replace the rand() and
+srand() functions in the perl source by any other random number
+generator because Configure chooses the widest one available
+(drand48(), srandom(), or rand()).
You should also run Configure interactively to verify that a hint file
doesn't inadvertently override your ccflags setting. (Hints files
If you can successfully build miniperl, but the process crashes
during the building of extensions, you should run
- make minitest
+ make minitest
to test your version of miniperl.
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 Miscellaneous
Some additional things that have been reported for either perl4 or perl5:
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
Installperl will also create the library directories $siteperl and
$sitearch listed in config.sh. Usually, these are something like
- /usr/local/lib/perl5/site_perl/5.005/share
+ /usr/local/lib/perl5/site_perl/5.005
/usr/local/lib/perl5/site_perl/5.005/archname
where archname is something like sun4-sunos. These directories
Configure variable Default value
$archlib /usr/local/lib/perl5/5.005/archname
- $privlib /usr/local/lib/perl5/5.005/share
+ $privlib /usr/local/lib/perl5/5.005
$sitearch /usr/local/lib/perl5/site_perl/5.005/archname
- $sitelib /usr/local/lib/perl5/site_perl/5.005/share
+ $sitelib /usr/local/lib/perl5/site_perl/5.005
while the directories searched by version 5.005_01 will be
$archlib /usr/local/lib/perl5/5.00501/archname
- $privlib /usr/local/lib/perl5/5.00501/share
+ $privlib /usr/local/lib/perl5/5.00501
$sitearch /usr/local/lib/perl5/site_perl/5.005/archname
- $sitelib /usr/local/lib/perl5/site_perl/5.005/share
+ $sitelib /usr/local/lib/perl5/site_perl/5.005
When you install an add-on extension, it gets installed into $sitelib (or
$sitearch if it is architecture-specific). This directory deliberately
=head1 LAST MODIFIED
-$Id: INSTALL,v 1.39 1998/07/02 15:41:45 doughera Released $
+$Id: INSTALL,v 1.42 1998/07/15 18:04:44 doughera Released $