هذا هو الأمر perlos390 الذي يمكن تشغيله في مزود الاستضافة المجانية OnWorks باستخدام إحدى محطات العمل المجانية المتعددة عبر الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت
برنامج:
اسم
perlos390 - بناء وتركيب Perl لـ OS / 390 و z / OS
موجز
سيساعدك هذا المستند في تكوين Perl وإنشائه واختباره وتثبيته على OS / 390 (المعروف أيضًا باسم z / OS)
خدمات نظام يونكس.
هذه وثيقة إحتياجات إلى be محدث، لكن we لا علم ماذا it ينبغي قل. من فضلك قم البريد الإلكتروني
تعليقات إلى [البريد الإلكتروني محمي] <ميلتو:[البريد الإلكتروني محمي]>.
الوصف
هذه لغة Perl منقولة بالكامل لنظام التشغيل OS / 390 الإصدار 2 ، الإصدار 3 و 5 و 6 و 7 و 8 و 9.
تعمل على إصدارات أو إصدارات أخرى ، ولكن تلك هي تلك التي اختبرناها عليها.
قد تحتاج إلى تنفيذ بعض مهام تكوين النظام قبل تشغيل التهيئة
البرنامج النصي لبيرل.
الأدوات
قد تكون قائمة أدوات وألعاب z / OS Unix مفيدة وتحتوي على روابط لمنافذ كثيرة
البرنامج مفيد لبناء لغة Perl.
http://www.ibm.com/servers/eserver/zseries/zos/unix/bpxa1toy.html
تفريغ بيرل توزيع on OS / 390
إذا كنت تستخدم بروتوكول نقل الملفات ، تذكر أن تقوم بنقل التوزيع بتنسيق ثنائي.
تتم مناقشة Gunzip / gzip لنظام التشغيل OS / 390 في:
http://www.ibm.com/servers/eserver/zseries/zos/unix/bpxa1ty1.html
لاستخراج أرشيف tar ASCII على OS / 390 ، جرب هذا:
pax -o إلى = IBM-1047 ، من = ISO8859-1 -r <latest.tar
or
zcat latest.tar.Z | pax -o إلى = IBM-1047 ، من = ISO8859-1 -r
إذا حصلت على الكثير من الأخطاء في النموذج
tar: FSUM7171 ...: لا يمكن تعيين uid / gid: EDC5139I العملية غير مسموح بها.
لم تقرأ ما ورد أعلاه وحاولت استخدام القطران بدلاً من pax ، يجب عليك أولاً إزالته
دليل perl (الفاسد الآن)
rm -rf perl -...
ثم استخدم pax.
اقامة و خدمات لـ بيرل on OS / 390
تأكد من أن تثبيت yacc في مكانه بما في ذلك أي قالب محلل ضروري
الملفات. إذا لم تكن قد قمت بذلك بالفعل ، فتأكد من:
cp /samples/yyparse.c / الخ
قد يكون هذا أيضًا وقتًا مناسبًا للتأكد من أن ملف / etc / البروتوكول الخاص بك وأيًا من ملف
/ الخ / resolv.conf or / الخ / المضيفين الملفات في مكانها الصحيح. وثيقة IBM التي وصفت مثل
كانت مشكلات إعداد نظام USS هي SC28-1890-07 "OS / 390 UNIX System Services Planning" ، بتنسيق
الفصل السادس الخاص بتخصيص هيكل المعدات الأصلية.
جنو يصنع لـ OS / 390 ، وهو موصى به لبناء بيرل (بالإضافة إلى بناء CPAN
الوحدات النمطية والامتدادات) ، متاح من "الأدوات".
أبلغ بعض الأشخاص عن مواجهة "نفاد الذاكرة!" أخطاء أثناء محاولة بناء Perl
باستخدام GNU ، عمل ثنائيات. إذا واجهت مثل هذه المشكلة ، فحاول تنزيل المصدر
مجموعة التعليمات البرمجية وبناء GNU من المصدر لإزالة أي مشكلة من هذا القبيل. يمكنك أيضا
ابحث عن نوع GNU (بالإضافة إلى Perl و Apache) في القطعة الحمراء / كتاب "Open Source Software for
OS / 390 UNIX "، SG24-5944-00 من شركة IBM.
إذا كنت ترغب في استخدام نظام الصنع المقدم بدلاً من GNU الموصى به
تأكد من تثبيت ملف القواعد الافتراضية بشكل صحيح عبر أمر shell:
cp /samples/startup.mk / الخ
وتأكد أيضًا من تعيين متغير البيئة _C89_CCMODE = 1 (تصدير _C89_CCMODE = 1 هو
فكرة جيدة لمستخدمي صنع جنو).
قد ترغب أيضًا في تثبيت GNU groff لـ OS / 390 قبل تشغيل "make
تثبيت "الخطوة ل Perl.
يوجد خطأ في بناء الجملة في ملف الرأس /usr/include/sys/socket.h الذي توفره شركة IBM
مع USS V2R7 و V2R8 وربما V2R9. تكمن مشكلة ملف الرأس في أنه بالقرب من ملف
تعريف ثابت SO_REUSEPORT هناك حرف '/' إضافي زائف خارج
تعليق مثل ذلك:
#define SO_REUSEPORT 0x0200 / * السماح بالعنوان المحلي والمنفذ
إعادة استخدام */ /
يمكنك تعديل هذا العنوان بنفسك لإزالة "/" الأخيرة ، أو يمكنك ملاحظة ذلك
بيئة اللغة (LE) تصف APAR PQ39997 المشكلة و PTF's UQ46272 و UQ46271
هي (R8 على الأقل) الإصلاحات وتطبيقها. إذا تركت دون رقابة فإن هذا الخطأ في بناء الجملة سوف
تظهر على أنها عدم قدرة Perl على بناء امتداد "Socket" الخاص بها.
لإجراء اختبار ناجح ، قد تحتاج إلى تشغيل الجزء اللاصق لقراءة عالمك / تمة
الدليل إذا لم تكن قد قمت بذلك بالفعل (انظر man chmod).
ضبط بيرل on OS / 390
بمجرد فك حزم التوزيع ، قم بتشغيل "sh Configure" (انظر التثبيت للحصول على ملف
مناقشة خيارات التكوين). يوجد ملف "تلميحات" لنظام التشغيل os390 يحدد
القيم الصحيحة لمعظم الأشياء. تتضمن بعض الأشياء التي يجب الانتباه لها ما يلي:
· رسالة بالنموذج:
(أرى أنك تستخدم Korn shell. انفجر بعض ksh في Configure ،
بشكل رئيسي على الأنظمة الغريبة القديمة. إذا كان لديك ، فجرب Bourne shell بدلاً من ذلك.)
لا داعي للقلق على الإطلاق.
بعض ملفات القالب الافتراضي في المحلل اللغوي / العينات مطلوبة في / إلخ. في
تأكد من أنك على الأقل تنسخ /samples/yyparse.c إلى / الخ قبل الجري
تكوين بيرل. تضمن هذه الخطوة الاستخراج الناجح لإصدارات EBCDIC من
ملفات محلل مثل perly.c و perly.h. يجب القيام بذلك قبل الجري
تكوين المرة الأولى. إذا فشلت في القيام بذلك ، فإن أسهل طريقة لإعادة التكوين
تقوم Perl بحذف جذر الإنشاء الذي تم تكوينه بشكل خاطئ وإعادة استخراج المصدر من القطران
كرة. ثم يجب عليك التأكد من أن /etc/yyparse.c في مكانه الصحيح قبل المحاولة
لإعادة تشغيل تكوين.
سوف يدعم هذا المنفذ التحميل الديناميكي ، لكن لا يتم تحديده افتراضيًا. اذا أنت
ترغب في تجربة التحميل الديناميكي ، فتأكد من تحديد -Dusedl في ملف
الوسائط لتكوين البرنامج النصي. راجع التعليقات في hints / os390.sh للمزيد
معلومات عن التحميل الديناميكي. إذا كنت تبني مع تحميل ديناميكي ، فستحتاج
لإضافة دليل $ archlibexp / CORE إلى متغير بيئة LIBPATH بالترتيب
لبيرل للعمل. راجع ملف config.sh لمعرفة قيمة $ archlibexp. إذا كنت تحاول
لاستخدام Perl ، ترى رسالة خطأ مشابهة لما يلي:
CEE3501S لم يتم العثور على الوحدة النمطية libperl.dll.
من نقطة الدخول __dllstaticinit عند إزاحة وحدة الترجمة +00000194 عند
ثم لا يحتوي LIBPATH الخاص بك على موقع libperl.x وإما libperl.dll أو
libperl.so فيه. أضف هذا الدليل إلى LIBPATH الخاص بك وتابع.
· لا تقم بتشغيل علامة التحسين للمترجم "-O". يوجد خطأ في أي من ملفات
مُحسِّن أو perl يؤدي إلى عدم عمل perl بشكل صحيح عند تشغيل المُحسِّن.
بعض ملفات التكوين بتنسيق / الخ التي تستخدمها واجهات برمجة التطبيقات للشبكات إما مفقودة
أو لها أسماء خاطئة. على وجه الخصوص ، تأكد من وجود إما امتداد
/ الخ / resolv.conf أو / الخ / المضيفين، بحيث gethostbyname () يعمل ، وتأكد من ذلك
تمت إعادة تسمية الملف / etc / proto إلى / etc / protocol (NOT / الخ / البروتوكولات، كما هو مستخدم بواسطة
أنظمة Unix الأخرى). قد تضطر إلى البحث عن أشياء مثل HOSTNAME و DOMAINORIGIN
في عضو PDS "//'SYS1.TCPPARMS(TCPDATA)" من أجل إعداد / الخ
ملفات الشبكات.
بناء ، اختبار، تثبيت بيرل on OS / 390
ببساطة:
sh تكوين
جعل
قم بإجراء الاختبار
إذا كان كل شيء يبدو على ما يرام (انظر القسم التالي للاختبار / تشخيص IVP) ثم:
جعل تثبيت
قد تتطلب هذه الخطوة الأخيرة أو لا تتطلب امتيازات UID = 0 اعتمادًا على كيفية إجابتك على
الأسئلة التي طرحها التكوين وما إذا كان لديك حق الوصول للكتابة إلى الدلائل أم لا
قمت بتحديده.
البناء الشذوذ مع بيرل on OS / 390
"خارج الذاكرة!" غالبًا ما يتم إصلاح الرسائل أثناء بناء Perl عن طريق إعادة بناء
يقدم GNU فائدة لـ OS / 390 من مجموعة التعليمات البرمجية المصدر.
عنصر آخر محدد للذاكرة يجب التحقق منه هو معلمة MAXASSIZE في ملف
مجموعة بيانات 'SYS1.PARMLIB (BPXPRMxx)' (لاحظ أيضًا أنه اعتبارًا من V2R8 يمكن أن تكون حدود مساحة العنوان
على أساس معرف كل مستخدم في مقطع USS من ملف تعريف RACF). أبلغ الناس
إنشاءات ناجحة لـ Perl مع معلمات MAXASSIZE صغيرة مثل 503316480 (وقد تكون كذلك
من الممكن بناء Perl بحجم أكبر من ذلك).
داخل USS الخاص بك / etc / profile أو $ HOME / .profile قد يحد من إعدادات ulimit الخاصة بك. تحقق من ذلك
يقوم الأمر التالي بإرجاع قيم معقولة:
أوليميت -أ
للحفاظ على الذاكرة ، يجب أن يتم تحميل وحدات المترجم في منطقة حزمة الارتباط
(LPA / ELPA) وليس في قائمة الروابط أو الخطوة lib.
إذا اشتكى المترجم c89 من أخطاء في بناء الجملة أثناء إنشاء ملحق Socket
ثم تأكد من إصلاح خطأ بناء الجملة في رأس النظام /usr/include/sys/socket.h.
الاختبار الشذوذ مع بيرل on OS / 390
تقوم خطوة "إجراء الاختبار" بتشغيل إجراء تحقق Perl ، عادةً قبل التثبيت. أنت
قد تواجه رسائل STDERR حتى أثناء التشغيل الناجح لـ "إجراء اختبار". هنا ملف
دليل لبعض الحالات الشاذة الأكثر شيوعًا:
· رسالة بالنموذج:
io / openpid ........... CEE5210S تم استقبال إشارة SIGHUP.
CEE5210S تم استلام إشارة SIGHUP.
CEE5210S تم استلام إشارة SIGHUP.
ok
يشير إلى أن اختبار t / io / openpid.t الخاص بـ Perl قد اجتاز ولكن تم إجراؤه بطريقة غريبة
رسائل على stderr من أوروبا الوسطى والشرقية.
· رسالة بالنموذج:
lib / ftmp-security .... ملف :: Temp :: _ gettemp: الدليل الأصل (/ تمة /) ليست آمنة
(لم يتم تعيين البت اللاصق عندما يكون العالم قابلاً للكتابة؟) في سطر lib / ftmp-security.t 100
ملف :: Temp :: _ gettemp: الدليل الأصل (/ تمة /) ليست آمنة (بت لزجة لا
ضبط عندما يكون العالم قابلاً للكتابة؟) عند سطر lib / ftmp-security.t 100
ok
يشير إلى وجود مشكلة في الأذونات على / تمة الدليل داخل HFS. ل
تصحيح هذه المشكلة إصدار الأمر:
chmod a + t / تمة
من حساب له حق الوصول للكتابة إلى إدخال الدليل لـ / tmp.
· خارج الذاكرة!
مجموعة اختبار perl الأخيرة متعطشة تمامًا للذاكرة. بالإضافة إلى التعليقات أعلاه على
قيود الذاكرة ، يجدر أيضًا التحقق من _CEE_RUNOPTS في بيئتك.
تمتلك Perl الآن (في miniperlmain.c) a C #pragma لتعيين خيارات تشغيل CEE ، ولكن
يفوز متغير البيئة.
يطلب رمز C ما يلي:
#pragma runopts (HEAP (2M ، 500K ، في أي مكان ، KEEP ، 8K ، 4K) STACK (،، ANY،) ALL31 (ON))
الأجزاء المهمة من ذلك هي الوسيطة الثانية (الزيادة) لـ HEAP ، و
السماح للمكدس بأن يكون "فوق خط (16 م)". إذا كانت زيادة الكومة صغيرة جدًا
ثم عندما يحاول perl (على سبيل المثال تحميل unicode / Name.pl) إنشاء رمز "كبير" (400 ألف +)
سلسلة لا يمكن احتواؤها في مقطع واحد وتحصل على "نفاد الذاكرة!" - حتى لو كان هناك
لا يزال الكثير من الذاكرة المتاحة.
هناك مشكلة ذات صلة وهي الاستخدام مع malloc من perl. يستخدم malloc في Perl "sbrk ()" للحصول على الذاكرة ،
و "sbrk ()" يقتصر على التخصيص الأول ، لذلك في هذه الحالة شيء مثل:
HEAP (8M ، 500K ، في أي مكان ، KEEP ، 8K ، 4K)
هناك حاجة لاجتياز مجموعة الاختبار.
التثبيت الشذوذ مع بيرل on OS / 390
سيحاول البرنامج النصي المثبت التشغيل على OS / 390. سيكون هناك عدد أقل من الأخطاء إذا كان لديك ملف
roff فائدة مثبتة. يمكنك الحصول على GNU groff من موقع Redbook SG24-5944-00 ftp.
الأستعمال إشارة لـ بيرل on OS / 390
عند استخدام perl على OS / 390 ، يرجى تذكر أن مجموعتي الأحرف EBCDIC و ASCII هما
مختلف. راجع perlebcdic.pod للحصول على مزيد من المعلومات حول مشكلات مجموعة الأحرف هذه. بيرل مدمج
الوظائف التي قد تتصرف بشكل مختلف بموجب EBCDIC مذكورة أيضًا في perlport.pod
وثيقة.
الإصدار المفتوح (خدمات نظام UNIX) من V2R8 فصاعدًا يدعم البرنامج النصي #! / path / to / perl
استدعاء. هناك PTF متاح من IBM لـ V2R7 والذي سيسمح لـ shell / kernel
الدعم ل #!. إصدارات USS قبل V2R7 لم تدعم #! وسائل النص
استدعاء. إذا كنت تقوم بتشغيل V2R6 أو إصدار سابق ، فراجع:
رئيس "من أين perldoc"
للحصول على مثال عن كيفية استخدام خدعة "EVAL exec" لتطلب من shell أن تجعل Perl يدير ملفك
البرامج النصية على تلك الإصدارات القديمة من خدمات نظام Unix.
إذا كنت تواجه مشكلة في استخدام الأقواس المربعة ، ففكر في تبديل rlogin أو
عميل telnet. حاول تجنب المحاكيات القديمة 3270 و ISHELL للعمل مع Perl على USS.
عائم البوينت الشذوذ مع بيرل on OS / 390
يبدو أن هناك خطأ في تطبيق النقطة العائمة على أنظمة S / 390 مثل ذلك
دعوة int () على حاصل ضرب عدد وعدد قليل لا يتطابق مع
دعوة int () على حاصل هذا العدد وعدد كبير. على سبيل المثال،
في كود Perl التالي:
س الخاص بي $ = 100000.0 ؛
$ y = int ($ x * 1e-5) * 1e5 ؛ # "0"
$ z الخاص بي = int ($ x / 1e + 5) * 1e5 ؛ # "100000"
print "\ $ y هو $ y و \ $ z هو $ z \ n"؛ # $ y يساوي 0 و $ z يساوي 100000
على الرغم من أن المرء يتوقع أن تكون الكميات $ y و $ z هي نفسها وتساوي 100000
ستختلف وبدلاً من ذلك ستكون 0 و 100000 على التوالي.
يمكن فحص المشكلة بمزيد من التفصيل في برنامج C مكافئ تقريبًا:
#يشمل
#تضمن
الأساسية()
{
مزدوج r1 ، r2 ؛
مزدوج x = 100000.0 ؛
ص مزدوج = 0.0 ؛
مزدوج ض = 0.0 ؛
س = 100000.0 * 1e-5 ؛
r1 = modf (x، & y) ؛
س = 100000.0 / 1e + 5 ؛
r2 = modf (x، & z) ؛
printf ("y هي٪ e و z هي٪ e \ n" ، y * 1e5 ، z * 1e5) ؛
/ * y هو 0.000000e + 00 و z هو 1.000000e + 05 (مع c89) * /
}
الأقسام و ملحقات لـ بيرل on OS / 390
يمكن تثبيت وحدات Pure pure (غير xs) من خلال المعتاد:
بيرل Makefile.PL
جعل
قم بإجراء الاختبار
جعل تثبيت
إذا قمت ببناء بيرل بقدرة تحميل ديناميكية ، فستكون هذه أيضًا طريقة للبناء
ملحقات تستند xs. ومع ذلك ، إذا قمت ببناء perl باستخدام الارتباط الثابت الافتراضي ، يمكنك ذلك
لا يزال بإمكانك إنشاء امتدادات تستند إلى xs لنظام التشغيل OS / 390 ولكنك ستحتاج إلى اتباع التعليمات الموجودة في
ExtUtils :: MakeMaker لبناء ثنائيات بيرل مرتبطة بشكل ثابت. في أبسط
تتلخص التكوينات التي تبني امتداد perl + xs الثابت في:
بيرل Makefile.PL
جعل
جعل بيرل
قم بإجراء الاختبار
جعل تثبيت
make -f Makefile.aperl inst_perl MAP_TARGET = perl
في معظم الحالات ، أبلغ الناس عن نتائج أفضل باستخدام GNU بدلاً من النظام
/ bin / make program ، سواء للوحدات النمطية العادية أو للامتدادات المبنية على xs.
إذا واجهت عملية الإنشاء مشكلة في التجميع أو الربط ، فحاول الإعداد
_C89_CCMODE إلى 1. بافتراض أن sh هو غلاف تسجيل الدخول الخاص بك ، فقم بتشغيل:
تصدير _C89_CCMODE = 1
إذا كانت tcsh هي غلاف تسجيل الدخول الخاص بك ، فاستخدم الأمر setenv.
مؤلفون
ديفيد فياندر وبيتر بريمر مع الشكر لدينيس لونجنيكر وويليام رافلور
تقارير قيمة ، تعليقات LPAR و PTF. بفضل Mike MacIsaac و Egon Terwedow لـ
SG24-5944-00. شكرًا لإيجناسي روكا على توضيح مشاكل النقطة العائمة. شكرًا
إلى John Goodyear للحصول على مساعدة التحميل الديناميكي.
استخدم perlos390 عبر الإنترنت باستخدام خدمات onworks.net