您正在从Perl 5.6.2查看此文档的版本。查看最新版本

目录

名称

README.os390-为OS/390构建和安装Perl。

简介

本文档将帮助您在OS/390 Unix系统服务上配置、构建、测试和安装Perl。

说明

这是一个完全移植的Perl for OS/390 Version 2 Release 3、5、6、7、8和9。它可能适用于其他版本或发行版,但这些是我们测试过的版本。

在运行Perl的Configure脚本之前,您可能需要执行一些系统配置任务。

打开包装

有关OS/390的Gunzip/gzip的讨论,请参阅:

http://www.s390.ibm.com/products/oe/bpxqp1.html

要在OS/390上提取ASCII tar存档,请尝试以下操作:

pax-o to=IBM-1047,from=ISO8859-1-r<latest.tar

设置和实用程序

确保您的yacc安装到位,包括任何必要的解析器模板文件。如果您尚未这样做,请确保:

cp/samples/yyparse.c/etc

这可能也是确保/etc/protocol文件和/etc/resolv.conf或/etc/hosts文件到位的好时机。描述此类USS系统设置问题的IBM文档是SC28-1890-07“OS/390 UNIX系统服务规划”,特别是关于定制OE shell的第6章。

GNU make for OS/390建议用于构建perl(以及构建CPAN模块和扩展),可从以下网站获得:

http://www.mks.com/s390/gnu/index.htm

一些人报告说,在尝试使用GNU make二进制文件构建Perl时遇到“内存不足!”错误。如果您遇到这样的问题,请尝试下载源代码工具包并从源代码构建GNU make以消除任何此类问题。您还可以在IBM的红皮书《OS/390 UNIX开源软件》(SG24-5944-00)中找到GNU make(以及Perl和Apache)。

如果要使用系统提供的make程序而不是推荐的GNU make,请确保通过shell命令正确安装默认规则文件:

cp/samples/startup.mk等

并且确保还设置了环境变量_C89_CCMODE=1(导出_C89_CCMCODE=1对于GNU make的用户来说也是一个好主意)。

您可能还希望在运行Perl的“makeinstall”步骤之前安装GNUgroffforOS/390。

IBM随USS V2R7、V2R8(可能还有V2R9)提供的/usr/include/sys/socket.h头文件中存在语法错误。头文件的问题是,在SO_REUSEPORT常量的定义附近,注释外有一个虚假的额外“/”字符,如下所示:

#定义SO_REUSEPORT 0x0200/*允许本地地址和端口再利用*//

您可以自己编辑该标题以删除最后一个“/”,或者您可能会注意到语言环境(LE)APAR PQ39997描述了该问题,PTF的UQ46272和UQ46171是(至少R8)修复程序并应用它们。如果无人参与,这个语法错误将导致Perl无法构建其“Socket”扩展。

为了成功测试,如果您还没有打开世界可读/tmp目录的粘性位,那么您可能需要打开粘性位(请参阅man chmod)。

配置

解压缩发行版后,运行“sh-Configure”(有关配置选项的完整讨论,请参阅INSTALL)。os390有一个“提示”文件,它为大多数事情指定了正确的值。需要注意的事项包括:

构建、测试、安装

简单地说:

sh配置制作进行测试

如果一切正常(请参阅下一节测试/IVP诊断),则:

进行安装

最后一步可能需要或不需要UID=0权限,这取决于您如何回答Configure提出的问题,以及您是否具有指定目录的写入权限。

构建异常

Perl构建过程中的“内存不足!”消息通常通过从源代码工具包重新构建用于OS/390的GNU make实用程序来修复。

另一个要检查的内存限制项是“SYS1.PARMLIB(BPXPRMxx)”数据集中的MAXASSIZE参数(请注意,从V2R8开始,可以在RACF配置文件的USS段中基于每个用户ID设置地址空间限制)。有人报告说,成功构建了MAXASSIZE参数小于503316480的Perl(并且可能使用小于该参数的MAXASSIZ来构建Perl)。

在USS中,您的/etc/profile或$HOME/.profile可能会限制您的ulimit设置。检查以下命令是否返回合理的值:

ulimit-a(乌利米特-a)

为了节省内存,应该将编译器模块加载到链接包区域(LPA/ELPA)中,而不是加载到链接列表或步骤库中。

如果c89编译器在构建Socket扩展期间抱怨语法错误,请确保修复系统头文件/usr/include/sys/Socket.h中的语法错误。

测试异常

“make test”步骤通常在安装之前运行Perl验证过程。即使在成功运行“make test”时,也可能会遇到STDERR消息。以下是一些常见异常的指南:

安装异常

installman脚本将尝试在OS/390上运行。如果安装了roff实用程序,则错误会更少。您可以从红皮书SG24-5944-00 ftp站点获取GNU groff。

使用提示

在OS/390上使用perl时,请记住EBCDIC和ASCII字符集是不同的。有关此类字符集问题的更多信息,请参阅perlebcdic.pod。perlport.pod文档中还提到了在EBCDIC下可能表现不同的Perl内置函数。

V2R8以后的Open Edition(UNIX系统服务)支持#/路径/to/perl脚本调用。IBM针对V2R7提供了一个PTF,它将支持#!的shell/kernel支持!。V2R7之前的USS版本不支持#!脚本调用的方式。如果您运行的是V2R6或更早版本,请参阅:

人头从何而来`

例如,如何使用“eval-exec”技巧要求shell让Perl在旧版本的Unix系统服务上运行脚本。

如果方括号有问题,请考虑切换rlogin或telnet客户端。尽量避免使用旧的3270模拟器和ISHELL在USS上使用Perl。

浮点异常

S/390系统上的浮点实现中似乎存在一个错误,即调用一个数与一个小幅度数的乘积上的int()与调用该数与大幅度数的商上的int)不同。例如,在以下Perl代码中:

我的x美元=100000.0;my$y=int($x*1e-5)*1e5;#’0'我的$z=int($x/1e+5)*1e5;#'100000'打印“\$y是$y,\$z是$z\n”;#$y是0,$z是100000

尽管人们预计数量$y和$z是相同的,等于100000,但它们会有所不同,而分别是0和100000。

这个问题可以在大致等效的C程序中进一步检查:

#包括<stdio.h>#包括<math.h>main(){双r1,r2;双倍x=100000.0;双y=0.0;双z=0.0;x=100000.0*1e-5;r1=modf(x,&y);x=100000.0/1e+5;r2=modf(x,&z);printf(“y是%e,z是%e\n”,y*1e5,z*1e5);/*y为0.00000e+00,z为1.0000e+05(含c89)*/}

模块和扩展

纯纯(即非xs)模块可以通过通常的方式安装:

perl生成文件。损益制作进行测试进行安装

如果您使用动态加载功能构建perl,那么这也是构建基于xs的扩展的方法。然而,如果使用默认的静态链接构建perl,您仍然可以为OS/390构建基于xs的扩展,但您需要遵循ExtUtils::MakeMaker中的说明来构建静态链接的perl二进制文件。在最简单的配置中,构建静态perl+xs扩展可以归结为:

perl生成文件。损益制作制作perl进行测试进行安装make-f Makefile.aperl inst_perl MAP_TARGET=perl

在大多数情况下,人们报告说,无论是对于普通模块还是基于xs的扩展,GNU make都比系统的/bin/make程序有更好的结果。

如果make进程在编译或链接方面遇到问题,请尝试将_C89_CCMODE设置为1。假设sh是您的登录shell,然后运行:

导出_C89_CCMODE=1

如果tcsh是您的登录shell,那么使用setenv命令。

作者

David Fiander和Peter Prymmer感谢Dennis Longnecker和William Raffloer提供的宝贵报告、LPAR和PTF反馈。感谢Mike MacIsaac和Egon Terwedow提供SG24-5944-00。感谢Ignasi Roca指出了浮点问题。感谢John Goodyear提供的动态加载帮助。

另请参阅

安装,珀尔波特,珍珠色,ExtUtils::MakeMaker.

http://www.mks.com/s390/gnu/index.htmhttp://www.redbooks.ibm.com/abstracts/sg245944.htmlhttp://www.s390.ibm.com/products/oe/bpxa1ty1.html#opensrchttp://www.s390.ibm.com/products/oe/portbk/bpxacenv.htmlhttp://www.xray.mpe.mpg.de/mailing-lists/perl-mvs/

邮件列表

波尔研究所(http://www.perl.org/)维护所有在所有EBCDIC平台(不仅仅是OS/390)上构建和/或使用perl的人员感兴趣的perl-mvs邮件列表。要订阅,请发送以下信息:

订阅perl-mvs

majordomo@perl.org。另请参见:

http://lists.perl.org/showlist.cgi?name=perl-最大值

邮件列表的web存档位于:

http://www.xray.mpe.mpg.de/mailing-lists/perl-mvs/http://archive.develooper.com/perl-mvs@perl.org网站/

历史

本文档最初是由David Fiander为5.005版Perl编写的。

本文档是为Perl的5.005_03版本于1999年3月11日发布的。

2000年11月12日更新了Perl 5.7.1版本。

Perl 5.7.1版本于2001年1月15日更新。

2001年1月24日更新,提及动态荷载。

2001年3月12日更新,提及//“SYS1.TCPPARMS(TCPDATA)”。