1PERLSOLARIS(1)         Perl Programmers Reference Guide         PERLSOLARIS(1)
2
3
4

NAME

6       README.solaris - Perl version 5 on Solaris systems
7

DESCRIPTION

9       This document describes various features of Sun's Solaris operating
10       system that will affect how Perl version 5 (hereafter just perl) is
11       compiled and/or runs.  Some issues relating to the older SunOS 4.x are
12       also discussed, though they may be out of date.
13
14       For the most part, everything should just work.
15
16       Starting with Solaris 8, perl5.00503 (or higher) is supplied with the
17       operating system, so you might not even need to build a newer version
18       of perl at all.  The Sun-supplied version is installed in /usr/perl5
19       with /usr/bin/perl pointing to /usr/perl5/bin/perl.  Do not disturb
20       that installation unless you really know what you are doing.  If you
21       remove the perl supplied with the OS, you will render some bits of your
22       system inoperable.  If you wish to install a newer version of perl,
23       install it under a different prefix from /usr/perl5.  Common prefixes
24       to use are /usr/local and /opt/perl.
25
26       You may wish to put your version of perl in the PATH of all users by
27       changing the link /usr/bin/perl.  This is probably OK, as most perl
28       scripts shipped with Solaris use an explicit path.  (There are a few
29       exceptions, such as /usr/bin/rpm2cpio and /etc/rcm/scripts/README, but
30       these are also sufficiently generic that the actual version of perl
31       probably doesn't matter too much.)
32
33       Solaris ships with a range of Solaris-specific modules.  If you choose
34       to install your own version of perl you will find the source of many of
35       these modules is available on CPAN under the Sun::Solaris:: namespace.
36
37       Solaris may include two versions of perl, e.g. Solaris 9 includes both
38       5.005_03 and 5.6.1.  This is to provide stability across Solaris
39       releases, in cases where a later perl version has incompatibilities
40       with the version included in the preceeding Solaris release.  The
41       default perl version will always be the most recent, and in general the
42       old version will only be retained for one Solaris release.  Note also
43       that the default perl will NOT be configured to search for modules in
44       the older version, again due to compatibility/stability concerns.  As a
45       consequence if you upgrade Solaris, you will have to rebuild/reinstall
46       any additional CPAN modules that you installed for the previous Solaris
47       version.  See the CPAN manpage under 'autobundle' for a quick way of
48       doing this.
49
50       As an interim measure, you may either change the #! line of your
51       scripts to specifically refer to the old perl version, e.g. on Solaris
52       9 use #!/usr/perl5/5.00503/bin/perl to use the perl version that was
53       the default for Solaris 8, or if you have a large number of scripts it
54       may be more convenient to make the old version of perl the default on
55       your system.  You can do this by changing the appropriate symlinks
56       under /usr/perl5 as follows (example for Solaris 9):
57
58        # cd /usr/perl5
59        # rm bin man pod
60        # ln -s ./5.00503/bin
61        # ln -s ./5.00503/man
62        # ln -s ./5.00503/lib/pod
63        # rm /usr/bin/perl
64        # ln -s ../perl5/5.00503/bin/perl /usr/bin/perl
65
66       In both cases this should only be considered to be a temporary measure
67       - you should upgrade to the later version of perl as soon as is practi‐
68       cable.
69
70       Note also that the perl command-line utilities (e.g. perldoc) and any
71       that are added by modules that you install will be under
72       /usr/perl5/bin, so that directory should be added to your PATH.
73
74       Solaris Version Numbers.
75
76       For consistency with common usage, perl's Configure script performs
77       some minor manipulations on the operating system name and version num‐
78       ber as reported by uname.  Here's a partial translation table:
79
80                 Sun:                      perl's Configure:
81        uname    uname -r   Name           osname     osvers
82        SunOS    4.1.3     Solaris 1.1     sunos      4.1.3
83        SunOS    5.6       Solaris 2.6     solaris    2.6
84        SunOS    5.8       Solaris 8       solaris    2.8
85        SunOS    5.9       Solaris 9       solaris    2.9
86        SunOS    5.10      Solaris 10      solaris    2.10
87
88       The complete table can be found in the Sun Managers' FAQ
89       <ftp://ftp.cs.toronto.edu/pub/jdd/sunmanagers/faq> under "9.1) Which
90       Sun models run which versions of SunOS?".
91

RESOURCES

93       There are many, many sources for Solaris information.  A few of the
94       important ones for perl:
95
96       Solaris FAQ
97           The Solaris FAQ is available at <http://www.sci
98           ence.uva.nl/pub/solaris/solaris2.html>.
99
100           The Sun Managers' FAQ is available at
101           <ftp://ftp.cs.toronto.edu/pub/jdd/sunmanagers/faq>
102
103       Precompiled Binaries
104           Precompiled binaries, links to many sites, and much, much more are
105           available at <http://www.sunfreeware.com/> and <http://www.blast
106           wave.org/>.
107
108       Solaris Documentation
109           All Solaris documentation is available on-line at
110           <http://docs.sun.com/>.
111

SETTING UP

113       File Extraction Problems on Solaris.
114
115       Be sure to use a tar program compiled under Solaris (not SunOS 4.x) to
116       extract the perl-5.x.x.tar.gz file.  Do not use GNU tar compiled for
117       SunOS4 on Solaris.  (GNU tar compiled for Solaris should be fine.)
118       When you run SunOS4 binaries on Solaris, the run-time system magically
119       alters pathnames matching m#lib/locale# so that when tar tries to cre‐
120       ate lib/locale.pm, a file named lib/oldlocale.pm gets created instead.
121       If you found this advice too late and used a SunOS4-compiled tar any‐
122       way, you must find the incorrectly renamed file and move it back to
123       lib/locale.pm.
124
125       Compiler and Related Tools on Solaris.
126
127       You must use an ANSI C compiler to build perl.  Perl can be compiled
128       with either Sun's add-on C compiler or with gcc.  The C compiler that
129       shipped with SunOS4 will not do.
130
131       Include /usr/ccs/bin/ in your PATH.
132
133       Several tools needed to build perl are located in /usr/ccs/bin/:  ar,
134       as, ld, and make.  Make sure that /usr/ccs/bin/ is in your PATH.
135
136       You need to make sure the following packages are installed (this info
137       is extracted from the Solaris FAQ):
138
139       for tools (sccs, lex, yacc, make, nm, truss, ld, as): SUNWbtool, SUN‐
140       Wsprot, SUNWtoo
141
142       for libraries & headers: SUNWhea, SUNWarc, SUNWlibm, SUNWlibms, SUN‐
143       Wdfbh, SUNWcg6h, SUNWxwinc, SUNWolinc
144
145       for 64 bit development: SUNWarcx, SUNWbtoox, SUNWdplx, SUNWscpux, SUN‐
146       Wsprox, SUNWtoox, SUNWlmsx, SUNWlmx, SUNWlibCx
147
148       If you are in doubt which package contains a file you are missing, try
149       to find an installation that has that file. Then do a
150
151        $ grep /my/missing/file /var/sadm/install/contents
152
153       This will display a line like this:
154
155       /usr/include/sys/errno.h f none 0644 root bin 7471 37605 956241356 SUN‐
156       Whea
157
158       The last item listed (SUNWhea in this example) is the package you need.
159
160       Avoid /usr/ucb/cc.
161
162       You don't need to have /usr/ucb/ in your PATH to build perl.  If you
163       want /usr/ucb/ in your PATH anyway, make sure that /usr/ucb/ is NOT in
164       your PATH before the directory containing the right C compiler.
165
166       Sun's C Compiler
167
168       If you use Sun's C compiler, make sure the correct directory (usually
169       /opt/SUNWspro/bin/) is in your PATH (before /usr/ucb/).
170
171       GCC
172
173       If you use gcc, make sure your installation is recent and complete.
174       perl versions since 5.6.0 build fine with gcc > 2.8.1 on Solaris >=
175       2.6.
176
177       You must Configure perl with
178
179        $ sh Configure -Dcc=gcc
180
181       If you don't, you may experience strange build errors.
182
183       If you have updated your Solaris version, you may also have to update
184       your gcc.  For example, if you are running Solaris 2.6 and your gcc is
185       installed under /usr/local, check in /usr/local/lib/gcc-lib and make
186       sure you have the appropriate directory, sparc-sun-solaris2.6/ or
187       i386-pc-solaris2.6/.  If gcc's directory is for a different version of
188       Solaris than you are running, then you will need to rebuild gcc for
189       your new version of Solaris.
190
191       You can get a precompiled version of gcc from <http://www.sunfree
192       ware.com/> or <http://www.blastwave.org/>. Make sure you pick up the
193       package for your Solaris release.
194
195       If you wish to use gcc to build add-on modules for use with the perl
196       shipped with Solaris, you should use the Solaris::PerlGcc module which
197       is available from CPAN.  The perl shipped with Solaris is configured
198       and built with the Sun compilers, and the compiler configuration infor‐
199       mation stored in Config.pm is therefore only relevant to the Sun com‐
200       pilers.  The Solaris:PerlGcc module contains a replacement Config.pm
201       that is correct for gcc - see the module for details.
202
203       GNU as and GNU ld
204
205       The following information applies to gcc version 2.  Volunteers to
206       update it as appropropriate for gcc version 3 would be appreciated.
207
208       The versions of as and ld supplied with Solaris work fine for building
209       perl.  There is normally no need to install the GNU versions to compile
210       perl.
211
212       If you decide to ignore this advice and use the GNU versions anyway,
213       then be sure that they are relatively recent.  Versions newer than 2.7
214       are apparently new enough.  Older versions may have trouble with
215       dynamic loading.
216
217       If you wish to use GNU ld, then you need to pass it the -Wl,-E flag.
218       The hints/solaris_2.sh file tries to do this automatically by setting
219       the following Configure variables:
220
221        ccdlflags="$ccdlflags -Wl,-E"
222        lddlflags="$lddlflags -Wl,-E -G"
223
224       However, over the years, changes in gcc, GNU ld, and Solaris ld have
225       made it difficult to automatically detect which ld ultimately gets
226       called.  You may have to manually edit config.sh and add the -Wl,-E
227       flags yourself, or else run Configure interactively and add the flags
228       at the appropriate prompts.
229
230       If your gcc is configured to use GNU as and ld but you want to use the
231       Solaris ones instead to build perl, then you'll need to add
232       -B/usr/ccs/bin/ to the gcc command line.  One convenient way to do that
233       is with
234
235        $ sh Configure -Dcc='gcc -B/usr/ccs/bin/'
236
237       Note that the trailing slash is required.  This will result in some
238       harmless warnings as Configure is run:
239
240        gcc: file path prefix `/usr/ccs/bin/' never used
241
242       These messages may safely be ignored.  (Note that for a SunOS4 system,
243       you must use -B/bin/ instead.)
244
245       Alternatively, you can use the GCC_EXEC_PREFIX environment variable to
246       ensure that Sun's as and ld are used.  Consult your gcc documentation
247       for further information on the -B option and the GCC_EXEC_PREFIX vari‐
248       able.
249
250       Sun and GNU make
251
252       The make under /usr/ccs/bin works fine for building perl.  If you have
253       the Sun C compilers, you will also have a parallel version of make
254       (dmake).  This works fine to build perl, but can sometimes cause prob‐
255       lems when running 'make test' due to underspecified dependencies
256       between the different test harness files.  The same problem can also
257       affect the building of some add-on modules, so in those cases either
258       specify '-m serial' on the dmake command line, or use /usr/ccs/bin/make
259       instead.  If you wish to use GNU make, be sure that the set-group-id
260       bit is not set.  If it is, then arrange your PATH so that
261       /usr/ccs/bin/make is before GNU make or else have the system adminis‐
262       trator disable the set-group-id bit on GNU make.
263
264       Avoid libucb.
265
266       Solaris provides some BSD-compatibility functions in
267       /usr/ucblib/libucb.a.  Perl will not build and run correctly if linked
268       against -lucb since it contains routines that are incompatible with the
269       standard Solaris libc.  Normally this is not a problem since the
270       solaris hints file prevents Configure from even looking in /usr/ucblib
271       for libraries, and also explicitly omits -lucb.
272
273       Environment for Compiling perl on Solaris
274
275       PATH
276
277       Make sure your PATH includes the compiler (/opt/SUNWspro/bin/ if you're
278       using Sun's compiler) as well as /usr/ccs/bin/ to pick up the other
279       development tools (such as make, ar, as, and ld).  Make sure your path
280       either doesn't include /usr/ucb or that it includes it after the com‐
281       piler and compiler tools and other standard Solaris directories.  You
282       definitely don't want /usr/ucb/cc.
283
284       LD_LIBRARY_PATH
285
286       If you have the LD_LIBRARY_PATH environment variable set, be sure that
287       it does NOT include /lib or /usr/lib.  If you will be building exten‐
288       sions that call third-party shared libraries (e.g. Berkeley DB) then
289       make sure that your LD_LIBRARY_PATH environment variable includes the
290       directory with that library (e.g. /usr/local/lib).
291
292       If you get an error message
293
294        dlopen: stub interception failed
295
296       it is probably because your LD_LIBRARY_PATH environment variable
297       includes a directory which is a symlink to /usr/lib (such as /lib).
298       The reason this causes a problem is quite subtle.  The file
299       libdl.so.1.0 actually *only* contains functions which generate 'stub
300       interception failed' errors!  The runtime linker intercepts links to
301       "/usr/lib/libdl.so.1.0" and links in internal implementations of those
302       functions instead.  [Thanks to Tim Bunce for this explanation.]
303

RUN CONFIGURE.

305       See the INSTALL file for general information regarding Configure.  Only
306       Solaris-specific issues are discussed here.  Usually, the defaults
307       should be fine.
308
309       64-bit perl on Solaris.
310
311       See the INSTALL file for general information regarding 64-bit compiles.
312       In general, the defaults should be fine for most people.
313
314       By default, perl-5.6.0 (or later) is compiled as a 32-bit application
315       with largefile and long-long support.
316
317       General 32-bit vs. 64-bit issues.
318
319       Solaris 7 and above will run in either 32 bit or 64 bit mode on SPARC
320       CPUs, via a reboot. You can build 64 bit apps whilst running 32 bit
321       mode and vice-versa. 32 bit apps will run under Solaris running in
322       either 32 or 64 bit mode.  64 bit apps require Solaris to be running 64
323       bit mode.
324
325       Existing 32 bit apps are properly known as LP32, i.e. Longs and Point‐
326       ers are 32 bit.  64-bit apps are more properly known as LP64.  The dis‐
327       criminating feature of a LP64 bit app is its ability to utilise a
328       64-bit address space.  It is perfectly possible to have a LP32 bit app
329       that supports both 64-bit integers (long long) and largefiles (> 2GB),
330       and this is the default for perl-5.6.0.
331
332       For a more complete explanation of 64-bit issues, see the "Solaris
333       64-bit Developer's Guide" at <http://docs.sun.com/>
334
335       You can detect the OS mode using "isainfo -v", e.g.
336
337        $ isainfo -v   # Ultra 30 in 64 bit mode
338        64-bit sparcv9 applications
339        32-bit sparc applications
340
341       By default, perl will be compiled as a 32-bit application.  Unless you
342       want to allocate more than ~ 4GB of memory inside perl, or unless you
343       need more than 255 open file descriptors, you probably don't need perl
344       to be a 64-bit app.
345
346       Large File Support
347
348       For Solaris 2.6 and onwards, there are two different ways for 32-bit
349       applications to manipulate large files (files whose size is > 2GByte).
350       (A 64-bit application automatically has largefile support built in by
351       default.)
352
353       First is the "transitional compilation environment", described in
354       lfcompile64(5).  According to the man page,
355
356        The transitional compilation  environment  exports  all  the
357        explicit 64-bit functions (xxx64()) and types in addition to
358        all the regular functions (xxx()) and types. Both xxx()  and
359        xxx64()  functions  are  available to the program source.  A
360        32-bit application must use the xxx64() functions in  order
361        to  access  large  files.  See the lf64(5) manual page for a
362        complete listing of the 64-bit transitional interfaces.
363
364       The transitional compilation environment is obtained with the following
365       compiler and linker flags:
366
367        getconf LFS64_CFLAGS        -D_LARGEFILE64_SOURCE
368        getconf LFS64_LDFLAG        # nothing special needed
369        getconf LFS64_LIBS          # nothing special needed
370
371       Second is the "large file compilation environment", described in lfcom‐
372       pile(5).  According to the man page,
373
374        Each interface named xxx() that needs to access 64-bit entities
375        to  access  large  files maps to a xxx64() call in the
376        resulting binary. All relevant data types are defined to  be
377        of correct size (for example, off_t has a typedef definition
378        for a 64-bit entity).
379
380        An application compiled in this environment is able  to  use
381        the  xxx()  source interfaces to access both large and small
382        files, rather than having to explicitly utilize the  transitional
383        xxx64()  interface  calls to access large files.
384
385       Two exceptions are fseek() and ftell().  32-bit applications should use
386       fseeko(3C) and ftello(3C).  These will get automatically mapped to
387       fseeko64() and ftello64().
388
389       The large file compilation environment is obtained with
390
391        getconf LFS_CFLAGS      -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
392        getconf LFS_LDFLAGS     # nothing special needed
393        getconf LFS_LIBS        # nothing special needed
394
395       By default, perl uses the large file compilation environment and relies
396       on Solaris to do the underlying mapping of interfaces.
397
398       Building an LP64 perl
399
400       To compile a 64-bit application on an UltraSparc with a recent Sun Com‐
401       piler, you need to use the flag "-xarch=v9".  getconf(1) will tell you
402       this, e.g.
403
404        $ getconf -a ⎪ grep v9
405        XBS5_LP64_OFF64_CFLAGS:         -xarch=v9
406        XBS5_LP64_OFF64_LDFLAGS:        -xarch=v9
407        XBS5_LP64_OFF64_LINTFLAGS:      -xarch=v9
408        XBS5_LPBIG_OFFBIG_CFLAGS:       -xarch=v9
409        XBS5_LPBIG_OFFBIG_LDFLAGS:      -xarch=v9
410        XBS5_LPBIG_OFFBIG_LINTFLAGS:    -xarch=v9
411        _XBS5_LP64_OFF64_CFLAGS:        -xarch=v9
412        _XBS5_LP64_OFF64_LDFLAGS:       -xarch=v9
413        _XBS5_LP64_OFF64_LINTFLAGS:     -xarch=v9
414        _XBS5_LPBIG_OFFBIG_CFLAGS:      -xarch=v9
415        _XBS5_LPBIG_OFFBIG_LDFLAGS:     -xarch=v9
416        _XBS5_LPBIG_OFFBIG_LINTFLAGS:   -xarch=v9
417
418       This flag is supported in Sun WorkShop Compilers 5.0 and onwards (now
419       marketed under the name Forte) when used on Solaris 7 or later on
420       UltraSparc systems.
421
422       If you are using gcc, you would need to use -mcpu=v9 -m64 instead.
423       This option is not yet supported as of gcc 2.95.2; from install/SPE‐
424       CIFIC in that release:
425
426        GCC version 2.95 is not able to compile code correctly for sparc64
427        targets. Users of the Linux kernel, at least, can use the sparc32
428        program to start up a new shell invocation with an environment that
429        causes configure to recognize (via uname -a) the system as sparc-*-*
430        instead.
431
432       All this should be handled automatically by the hints file, if
433       requested.
434
435       Long Doubles.
436
437       As of 5.8.1, long doubles are working if you use the Sun compilers
438       (needed for additional math routines not included in libm).
439
440       Threads in perl on Solaris.
441
442       It is possible to build a threaded version of perl on Solaris.  The
443       entire perl thread implementation is still experimental, however, so
444       beware.
445
446       Malloc Issues with perl on Solaris.
447
448       Starting from perl 5.7.1 perl uses the Solaris malloc, since the perl
449       malloc breaks when dealing with more than 2GB of memory, and the
450       Solaris malloc also seems to be faster.
451
452       If you for some reason (such as binary backward compatibility) really
453       need to use perl's malloc, you can rebuild perl from the sources and
454       Configure the build with
455
456        $ sh Configure -Dusemymalloc
457
458       You should not use perl's malloc if you are building with gcc.  There
459       are reports of core dumps, especially in the PDL module.  The problem
460       appears to go away under -DDEBUGGING, so it has been difficult to track
461       down.  Sun's compiler appears to be okay with or without perl's malloc.
462       [XXX further investigation is needed here.]
463

MAKE PROBLEMS.

465       Dynamic Loading Problems With GNU as and GNU ld
466           If you have problems with dynamic loading using gcc on SunOS or
467           Solaris, and you are using GNU as and GNU ld, see the section "GNU
468           as and GNU ld" above.
469
470       ld.so.1: ./perl: fatal: relocation error:
471           If you get this message on SunOS or Solaris, and you're using gcc,
472           it's probably the GNU as or GNU ld problem in the previous item
473           "GNU as and GNU ld".
474
475       dlopen: stub interception failed
476           The primary cause of the 'dlopen: stub interception failed' message
477           is that the LD_LIBRARY_PATH environment variable includes a direc‐
478           tory which is a symlink to /usr/lib (such as /lib).  See
479           "LD_LIBRARY_PATH" above.
480
481       #error "No DATAMODEL_NATIVE specified"
482           This is a common error when trying to build perl on Solaris 2.6
483           with a gcc installation from Solaris 2.5 or 2.5.1.  The Solaris
484           header files changed, so you need to update your gcc installation.
485           You can either rerun the fixincludes script from gcc or take the
486           opportunity to update your gcc installation.
487
488       sh: ar: not found
489           This is a message from your shell telling you that the command 'ar'
490           was not found.  You need to check your PATH environment variable to
491           make sure that it includes the directory with the 'ar' command.
492           This is a common problem on Solaris, where 'ar' is in the
493           /usr/ccs/bin/ directory.
494

MAKE TEST

496       op/stat.t test 4 in Solaris
497
498       op/stat.t test 4 may fail if you are on a tmpfs of some sort.  Building
499       in /tmp sometimes shows this behavior.  The test suite detects if you
500       are building in /tmp, but it may not be able to catch all tmpfs situa‐
501       tions.
502
503       nss_delete core dump from op/pwent or op/grent
504
505       See "nss_delete core dump from op/pwent or op/grent" in perlhpux.
506

PREBUILT BINARIES OF PERL FOR SOLARIS.

508       You can pick up prebuilt binaries for Solaris from <http://www.sunfree
509       ware.com/>, <http://www.blastwave.org>, ActiveState
510       <http://www.activestate.com/>, and <http://www.perl.com/> under the
511       Binaries list at the top of the page.  There are probably other sources
512       as well.  Please note that these sites are under the control of their
513       respective owners, not the perl developers.
514

RUNTIME ISSUES FOR PERL ON SOLARIS.

516       Limits on Numbers of Open Files on Solaris.
517
518       The stdio(3C) manpage notes that for LP32 applications, only 255 files
519       may be opened using fopen(), and only file descriptors 0 through 255
520       can be used in a stream.  Since perl calls open() and then fdopen(3C)
521       with the resulting file descriptor, perl is limited to 255 simultaneous
522       open files, even if sysopen() is used.  If this proves to be an insur‐
523       mountable problem, you can compile perl as a LP64 application, see
524       "Building an LP64 perl" for details.  Note also that the default
525       resource limit for open file descriptors on Solaris is 255, so you will
526       have to modify your ulimit or rctl (Solaris 9 onwards) appropriately.
527

SOLARIS-SPECIFIC MODULES.

529       See the modules under the Solaris:: and Sun::Solaris namespaces on
530       CPAN, see <http://www.cpan.org/modules/by-module/Solaris/> and
531       <http://www.cpan.org/modules/by-module/Sun/>.
532

SOLARIS-SPECIFIC PROBLEMS WITH MODULES.

534       Proc::ProcessTable on Solaris
535
536       Proc::ProcessTable does not compile on Solaris with perl5.6.0 and
537       higher if you have LARGEFILES defined.  Since largefile support is the
538       default in 5.6.0 and later, you have to take special steps to use this
539       module.
540
541       The problem is that various structures visible via procfs use off_t,
542       and if you compile with largefile support these change from 32 bits to
543       64 bits.  Thus what you get back from procfs doesn't match up with the
544       structures in perl, resulting in garbage.  See proc(4) for further dis‐
545       cussion.
546
547       A fix for Proc::ProcessTable is to edit Makefile to explicitly remove
548       the largefile flags from the ones MakeMaker picks up from Config.pm.
549       This will result in Proc::ProcessTable being built under the correct
550       environment.  Everything should then be OK as long as Proc::Pro‐
551       cessTable doesn't try to share off_t's with the rest of perl, or if it
552       does they should be explicitly specified as off64_t.
553
554       BSD::Resource on Solaris
555
556       BSD::Resource versions earlier than 1.09 do not compile on Solaris with
557       perl 5.6.0 and higher, for the same reasons as Proc::ProcessTable.
558       BSD::Resource versions starting from 1.09 have a workaround for the
559       problem.
560
561       Net::SSLeay on Solaris
562
563       Net::SSLeay requires a /dev/urandom to be present. This device is
564       available from Solaris 9 onwards.  For earlier Solaris versions you can
565       either get the package SUNWski (packaged with several Sun software
566       products, for example the Sun WebServer, which is part of the Solaris
567       Server Intranet Extension, or the Sun Directory Services, part of
568       Solaris for ISPs) or download the ANDIrand package from
569       <http://www.cosy.sbg.ac.at/~andi/>. If you use SUNWski, make a symbolic
570       link /dev/urandom pointing to /dev/random.  For more details, see Docu‐
571       ment ID27606 entitled "Differing /dev/random support requirements
572       within Solaris[TM] Operating Environments", available at http://sun
573       solve.sun.com .
574
575       It may be possible to use the Entropy Gathering Daemon (written in
576       Perl!), available from <http://www.lothar.com/tech/crypto/>.
577

SunOS 4.x

579       In SunOS 4.x you most probably want to use the SunOS ld, /usr/bin/ld,
580       since the more recent versions of GNU ld (like 2.13) do not seem to
581       work for building Perl anymore.  When linking the extensions, the GNU
582       ld gets very unhappy and spews a lot of errors like this
583
584         ... relocation truncated to fit: BASE13 ...
585
586       and dies.  Therefore the SunOS 4.1 hints file explicitly sets the ld to
587       be /usr/bin/ld.
588
589       As of Perl 5.8.1 the dynamic loading of libraries (DynaLoader,
590       XSLoader) also seems to have become broken in in SunOS 4.x.  Therefore
591       the default is to build Perl statically.
592
593       Running the test suite in SunOS 4.1 is a bit tricky since the
594       lib/Tie/File/t/09_gen_rs test hangs (subtest #51, FWIW) for some
595       unknown reason.  Just stop the test and kill that particular Perl
596       process.
597
598       There are various other failures, that as of SunOS 4.1.4 and gcc 3.2.2
599       look a lot like gcc bugs.  Many of the failures happen in the Encode
600       tests, where for example when the test expects "0" you get "&#48;"
601       which should after a little squinting look very odd indeed.  Another
602       example is earlier in t/run/fresh_perl where chr(0xff) is expected but
603       the test fails because the result is chr(0xff).  Exactly.
604
605       This is the "make test" result from the said combination:
606
607         Failed 27 test scripts out of 745, 96.38% okay.
608
609       Running the "harness" is painful because of the many failing Unicode-
610       related tests will output megabytes of failure messages, but if one
611       patiently waits, one gets these results:
612
613        Failed Test                     Stat Wstat Total Fail  Failed  List of Failed
614        -----------------------------------------------------------------------------
615        ...
616        ../ext/Encode/t/at-cn.t            4  1024    29    4  13.79%  14-17
617        ../ext/Encode/t/at-tw.t           10  2560    17   10  58.82%  2 4 6 8 10 12
618                                                                       14-17
619        ../ext/Encode/t/enc_data.t        29  7424    ??   ??       %  ??
620        ../ext/Encode/t/enc_eucjp.t       29  7424    ??   ??       %  ??
621        ../ext/Encode/t/enc_module.t      29  7424    ??   ??       %  ??
622        ../ext/Encode/t/encoding.t        29  7424    ??   ??       %  ??
623        ../ext/Encode/t/grow.t            12  3072    24   12  50.00%  2 4 6 8 10 12 14
624                                                                       16 18 20 22 24
625         Failed Test                     Stat Wstat Total Fail  Failed  List of Failed
626        ------------------------------------------------------------------------------
627        ../ext/Encode/t/guess.t          255 65280    29   40 137.93%  10-29
628        ../ext/Encode/t/jperl.t           29  7424    15   30 200.00%  1-15
629        ../ext/Encode/t/mime-header.t      2   512    10    2  20.00%  2-3
630        ../ext/Encode/t/perlio.t          22  5632    38   22  57.89%  1-4 9-16 19-20
631                                                                       23-24 27-32
632        ../ext/List/Util/t/shuffle.t       0   139    ??   ??       %  ??
633        ../ext/PerlIO/t/encoding.t                    14    1   7.14%  11
634        ../ext/PerlIO/t/fallback.t                     9    2  22.22%  3 5
635        ../ext/Socket/t/socketpair.t       0     2    45   70 155.56%  11-45
636        ../lib/CPAN/t/vcmp.t                          30    1   3.33%  25
637        ../lib/Tie/File/t/09_gen_rs.t      0    15    ??   ??       %  ??
638        ../lib/Unicode/Collate/t/test.t              199   30  15.08%  7 26-27 71-75
639                                                                       81-88 95 101
640                                                                       103-104 106 108-
641                                                                       109 122 124 161
642                                                                       169-172
643        ../lib/sort.t                      0   139   119   26  21.85%  107-119
644        op/alarm.t                                     4    1  25.00%  4
645        op/utfhash.t                                  97    1   1.03%  31
646        run/fresh_perl.t                              91    1   1.10%  32
647        uni/tr_7jis.t                                 ??   ??       %  ??
648        uni/tr_eucjp.t                    29  7424     6   12 200.00%  1-6
649        uni/tr_sjis.t                     29  7424     6   12 200.00%  1-6
650        56 tests and 467 subtests skipped.
651        Failed 27/811 test scripts, 96.67% okay. 1383/75399 subtests failed, 98.17% okay.
652
653       The alarm() test failure is caused by system() apparently blocking
654       alarm().  That is probably a libc bug, and given that SunOS 4.x has
655       been end-of-lifed years ago, don't hold your breath for a fix.  In
656       addition to that, don't try anything too Unicode-y, especially with
657       Encode, and you should be fine in SunOS 4.x.
658

AUTHOR

660       The original was written by Andy Dougherty doughera@lafayette.edu draw‐
661       ing heavily on advice from Alan Burlison, Nick Ing-Simmons, Tim Bunce,
662       and many other Solaris users over the years.
663
664       Please report any errors, updates, or suggestions to perlbug@perl.org.
665
666
667
668perl v5.8.8                       2006-01-07                    PERLSOLARIS(1)
Impressum