📄 perlos390.1
字号:
Some of the configuration files in /etc used by thenetworking APIs are either missing or have the wrongnames. In particular, make sure that there's eitheran /etc/resolv.conf or an /etc/hosts, so that\&\fIgethostbyname()\fR works, and make sure that the file/etc/proto has been renamed to /etc/protocol (\s-1NOT\s0/etc/protocols, as used by other Unix systems).You may have to look for things like \s-1HOSTNAME\s0 and \s-1DOMAINORIGIN\s0in the \*(L"//'\s-1SYS1\s0.TCPPARMS(\s-1TCPDATA\s0)'\*(R" \s-1PDS\s0 member in order toproperly set up your /etc networking files..Sh "Build, Test, Install Perl on \s-1OS/390\s0".IX Subsection "Build, Test, Install Perl on OS/390"Simply put:.PP.Vb 3\& sh Configure\& make\& make test.Ve.PPif everything looks ok (see the next section for test/IVP diagnosis) then:.PP.Vb 1\& make install.Ve.PPthis last step may or may not require UID=0 privileges dependingon how you answered the questions that Configure asked and whetheror not you have write access to the directories you specified..Sh "Build Anomalies with Perl on \s-1OS/390\s0".IX Subsection "Build Anomalies with Perl on OS/390"\&\*(L"Out of memory!\*(R" messages during the build of Perl are most often fixedby re building the \s-1GNU\s0 make utility for \s-1OS/390\s0 from a source code kit..PPAnother memory limiting item to check is your \s-1MAXASSIZE\s0 parameter in your\&'\s-1SYS1\s0.PARMLIB(BPXPRMxx)' data set (note too that as of V2R8 address spacelimits can be set on a per user \s-1ID\s0 basis in the \s-1USS\s0 segment of a \s-1RACF\s0profile). People have reported successful builds of Perl with \s-1MAXASSIZE\s0parameters as small as 503316480 (and it may be possible to build Perlwith a \s-1MAXASSIZE\s0 smaller than that)..PPWithin \s-1USS\s0 your /etc/profile or \f(CW$HOME\fR/.profile may limit your ulimitsettings. Check that the following command returns reasonable values:.PP.Vb 1\& ulimit \-a.Ve.PPTo conserve memory you should have your compiler modules loaded into theLink Pack Area (\s-1LPA/ELPA\s0) rather than in a link list or step lib..PPIf the c89 compiler complains of syntax errors during the build of theSocket extension then be sure to fix the syntax error in the systemheader /usr/include/sys/socket.h..Sh "Testing Anomalies with Perl on \s-1OS/390\s0".IX Subsection "Testing Anomalies with Perl on OS/390"The \*(L"make test\*(R" step runs a Perl Verification Procedure, usually beforeinstallation. You might encounter \s-1STDERR\s0 messages even during a successfulrun of \*(L"make test\*(R". Here is a guide to some of the more commonly seenanomalies:.IP "\(bu" 4A message of the form:.Sp.Vb 5\& comp/cpp.............ERROR CBC3191 ./.301989890.c:1 The character $ is not a\& valid C source character.\& FSUM3065 The COMPILE step ended with return code 12.\& FSUM3017 Could not compile .301989890.c. Correct the errors and try again.\& ok.Ve.Spindicates that the t/comp/cpp.t test of Perl's \-P command line switch haspassed but that the particular invocation of c89 \-E in the cpp script doesnot suppress the C compiler check of source code validity..IP "\(bu" 4A message of the form:.Sp.Vb 4\& io/openpid...........CEE5210S The signal SIGHUP was received.\& CEE5210S The signal SIGHUP was received.\& CEE5210S The signal SIGHUP was received.\& ok.Ve.Spindicates that the t/io/openpid.t test of Perl has passed but done sowith extraneous messages on stderr from \s-1CEE\s0..IP "\(bu" 4A message of the form:.Sp.Vb 5\& lib/ftmp\-security....File::Temp::_gettemp: Parent directory (/tmp/) is not safe\& (sticky bit not set when world writable?) at lib/ftmp\-security.t line 100\& File::Temp::_gettemp: Parent directory (/tmp/) is not safe (sticky bit not\& set when world writable?) at lib/ftmp\-security.t line 100\& ok.Ve.Spindicates a problem with the permissions on your /tmp directory within the \s-1HFS\s0.To correct that problem issue the command:.Sp.Vb 1\& chmod a+t /tmp.Ve.Spfrom an account with write access to the directory entry for /tmp..IP "\(bu" 4Out of Memory!.SpRecent perl test suite is quite memory hunrgy. In addition to the commentsabove on memory limitations it is also worth checking for _CEE_RUNOPTSin your environment. Perl now has (in miniperlmain.c) a C #pragmato set \s-1CEE\s0 run options, but the environment variable wins..SpThe C code asks for:.Sp.Vb 1\& #pragma runopts(HEAP(2M,500K,ANYWHERE,KEEP,8K,4K) STACK(,,ANY,) ALL31(ON)).Ve.SpThe important parts of that are the second argument (the increment) to \s-1HEAP\s0,and allowing the stack to be \*(L"Above the (16M) line\*(R". If the heapincrement is too small then when perl (for example loading unicode/Name.pl) triesto create a \*(L"big\*(R" (400K+) string it cannot fit in a single segmentand you get \*(L"Out of Memory!\*(R" \- even if there is still plenty of memoryavailable..SpA related issue is use with perl's malloc. Perl's malloc uses \f(CW\*(C`sbrk()\*(C'\fRto get memory, and \f(CW\*(C`sbrk()\*(C'\fR is limited to the first allocation so in thiscase something like:.Sp.Vb 1\& HEAP(8M,500K,ANYWHERE,KEEP,8K,4K).Ve.Spis needed to get through the test suite..Sh "Installation Anomalies with Perl on \s-1OS/390\s0".IX Subsection "Installation Anomalies with Perl on OS/390"The installman script will try to run on \s-1OS/390\s0. There will be fewer errorsif you have a roff utility installed. You can obtain \s-1GNU\s0 groff from theRedbook \s-1SG24\-5944\-00\s0 ftp site..Sh "Usage Hints for Perl on \s-1OS/390\s0".IX Subsection "Usage Hints for Perl on OS/390"When using perl on \s-1OS/390\s0 please keep in mind that the \s-1EBCDIC\s0 and \s-1ASCII\s0character sets are different. See perlebcdic.pod for more on such characterset issues. Perl builtin functions that may behave differently under\&\s-1EBCDIC\s0 are also mentioned in the perlport.pod document..PPOpen Edition (\s-1UNIX\s0 System Services) from V2R8 onward does support#!/path/to/perl script invocation. There is a \s-1PTF\s0 available from\&\s-1IBM\s0 for V2R7 that will allow shell/kernel support for #!. \s-1USS\s0releases prior to V2R7 did not support the #! means of script invocation.If you are running V2R6 or earlier then see:.PP.Vb 1\& head \`whence perldoc\`.Ve.PPfor an example of how to use the \*(L"eval exec\*(R" trick to ask the shell tohave Perl run your scripts on those older releases of Unix System Services..PPIf you are having trouble with square brackets then consider switching yourrlogin or telnet client. Try to avoid older 3270 emulators and \s-1ISHELL\s0 forworking with Perl on \s-1USS\s0..Sh "Floating Point Anomalies with Perl on \s-1OS/390\s0".IX Subsection "Floating Point Anomalies with Perl on OS/390"There appears to be a bug in the floating point implementation on S/390systems such that calling \fIint()\fR on the product of a number and a smallmagnitude number is not the same as calling \fIint()\fR on the quotient ofthat number and a large magnitude number. For example, in the followingPerl code:.PP.Vb 4\& my $x = 100000.0;\& my $y = int($x * 1e\-5) * 1e5; # \*(Aq0\*(Aq\& my $z = int($x / 1e+5) * 1e5; # \*(Aq100000\*(Aq\& print "\e$y is $y and \e$z is $z\en"; # $y is 0 and $z is 100000.Ve.PPAlthough one would expect the quantities \f(CW$y\fR and \f(CW$z\fR to be the same and equalto 100000 they will differ and instead will be 0 and 100000 respectively..PPThe problem can be further examined in a roughly equivalent C program:.PP.Vb 10\& #include <stdio.h>\& #include <math.h>\& main()\& {\& double r1,r2;\& double x = 100000.0;\& double y = 0.0;\& double z = 0.0;\& x = 100000.0 * 1e\-5;\& r1 = modf (x,&y);\& x = 100000.0 / 1e+5;\& r2 = modf (x,&z);\& printf("y is %e and z is %e\en",y*1e5,z*1e5);\& /* y is 0.000000e+00 and z is 1.000000e+05 (with c89) */\& }.Ve.Sh "Modules and Extensions for Perl on \s-1OS/390\s0".IX Subsection "Modules and Extensions for Perl on OS/390"Pure pure (that is non xs) modules may be installed via the usual:.PP.Vb 4\& perl Makefile.PL\& make\& make test\& make install.Ve.PPIf you built perl with dynamic loading capability then that would alsobe the way to build xs based extensions. However, if you built perl withthe default static linking you can still build xs based extensions for \s-1OS/390\s0but you will need to follow the instructions in ExtUtils::MakeMaker forbuilding statically linked perl binaries. In the simplest configurationsbuilding a static perl + xs extension boils down to:.PP.Vb 6\& perl Makefile.PL\& make\& make perl\& make test\& make install\& make \-f Makefile.aperl inst_perl MAP_TARGET=perl.Ve.PPIn most cases people have reported better results with \s-1GNU\s0 make ratherthan the system's /bin/make program, whether for plain modules or forxs based extensions..PPIf the make process encounters trouble with either compilation orlinking then try setting the _C89_CCMODE to 1. Assuming sh is yourlogin shell then run:.PP.Vb 1\& export _C89_CCMODE=1.Ve.PPIf tcsh is your login shell then use the setenv command..SH "AUTHORS".IX Header "AUTHORS"David Fiander and Peter Prymmer with thanks to Dennis Longneckerand William Raffloer for valuable reports, \s-1LPAR\s0 and \s-1PTF\s0 feedback.Thanks to Mike MacIsaac and Egon Terwedow for \s-1SG24\-5944\-00\s0.Thanks to Ignasi Roca for pointing out the floating point problems.Thanks to John Goodyear for dynamic loading help..SH "SEE ALSO".IX Header "SEE ALSO"\&\s-1INSTALL\s0, perlport, perlebcdic, ExtUtils::MakeMaker..PP.Vb 1\& http://www\-1.ibm.com/servers/eserver/zseries/zos/unix/bpxa1toy.html\&\& http://www.redbooks.ibm.com/abstracts/sg245944.html\&\& http://www\-1.ibm.com/servers/eserver/zseries/zos/unix/bpxa1ty1.html#opensrc\&\& http://www.xray.mpe.mpg.de/mailing\-lists/perl\-mvs/\&\& http://publibz.boulder.ibm.com:80/cgi\-bin/bookmgr_OS390/BOOKS/ceea3030/\&\& http://publibz.boulder.ibm.com:80/cgi\-bin/bookmgr_OS390/BOOKS/CBCUG030/.Ve.Sh "Mailing list for Perl on \s-1OS/390\s0".IX Subsection "Mailing list for Perl on OS/390"If you are interested in the \s-1VM/ESA\s0, z/OS (formerly known as \s-1OS/390\s0)and POSIX-BC (\s-1BS2000\s0) ports of Perl then see the perl-mvs mailing list.To subscribe, send an empty message to perl\-mvs\-subscribe@perl.org..PPSee also:.PP.Vb 1\& http://lists.perl.org/showlist.cgi?name=perl\-mvs.Ve.PPThere are web archives of the mailing list at:.PP.Vb 2\& http://www.xray.mpe.mpg.de/mailing\-lists/perl\-mvs/\& http://archive.develooper.com/perl\-mvs@perl.org/.Ve.SH "HISTORY".IX Header "HISTORY"This document was originally written by David Fiander for the 5.005release of Perl..PPThis document was podified for the 5.005_03 release of Perl 11 March 1999..PPUpdated 28 November 2001 for broken URLs..PPUpdated 12 November 2000 for the 5.7.1 release of Perl..PPUpdated 15 January 2001 for the 5.7.1 release of Perl..PPUpdated 24 January 2001 to mention dynamic loading..PPUpdated 12 March 2001 to mention //'\s-1SYS1\s0.TCPPARMS(\s-1TCPDATA\s0)'.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -