Ini ialah arahan perlos390 yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.
JADUAL:
NAMA
perlos390 - membina dan memasang Perl untuk OS/390 dan z/OS
SINOPSIS
Dokumen ini akan membantu anda Mengkonfigurasi, membina, menguji dan memasang Perl pada OS/390 (aka z/OS)
Perkhidmatan Sistem Unix.
ini dokumen keperluan kepada be dikemas kini, tetapi we tidak Tahu apa it Sekiranya katakanlah. Sila e-mel
comments kepada [e-mel dilindungi] <mailto:[e-mel dilindungi]>.
DESCRIPTION
Ini ialah Perl yang dialihkan sepenuhnya untuk OS/390 Versi 2 Keluaran 3, 5, 6, 7, 8 dan 9. Ia mungkin
bekerja pada versi atau keluaran lain, tetapi itu adalah versi yang kami telah mengujinya.
Anda mungkin perlu menjalankan beberapa tugas konfigurasi sistem sebelum menjalankan Konfigurasi
skrip untuk Perl.
Alatan
Senarai z/OS Unix Tools and Toys mungkin terbukti membantu dan mengandungi pautan ke banyak port
perisian yang berguna untuk membina Perl.
http://www.ibm.com/servers/eserver/zseries/zos/unix/bpxa1toy.html
Membongkar Perl pengedaran on OS / 390
Jika menggunakan ftp ingat untuk memindahkan pengedaran dalam format binari.
Gunzip/gzip untuk OS/390 dibincangkan di:
http://www.ibm.com/servers/eserver/zseries/zos/unix/bpxa1ty1.html
untuk mengekstrak arkib tar ASCII pada OS/390, cuba ini:
pax -o to=IBM-1047,from=ISO8859-1 -r < latest.tar
or
zcat latest.tar.Z | pax -o to=IBM-1047,from=ISO8859-1 -r
Jika anda mendapat banyak ralat borang
tar: FSUM7171 ...: tidak boleh menetapkan uid/gid: EDC5139I Operasi tidak dibenarkan.
anda tidak membaca perkara di atas dan cuba menggunakan tar dan bukannya pax, anda perlu mengalih keluarnya terlebih dahulu
direktori perl (kini rosak).
rm -rf perl-...
dan kemudian gunakan pax.
Persediaan and utiliti khususnya Perl on OS / 390
Pastikan pemasangan yacc anda telah disediakan termasuk sebarang templat penghurai yang diperlukan
fail. Jika anda belum melakukannya maka pastikan anda:
cp /samples/yyparse.c / Etc
Ini juga mungkin masa yang baik untuk memastikan fail /etc/protocol anda dan sama ada fail anda
/etc/resolv.conf or / Etc / tuan rumah fail ada di tempatnya. Dokumen IBM yang menerangkan sedemikian
Isu persediaan sistem USS ialah SC28-1890-07 "Perancangan Perkhidmatan Sistem OS/390 UNIX", dalam
khususnya Bab 6 mengenai menyesuaikan shell OE.
GNU buat untuk OS/390, yang disyorkan untuk binaan perl (serta membina CPAN
modul dan sambungan), boleh didapati daripada "Alat".
Sesetengah orang telah melaporkan menghadapi "Habis ingatan!" ralat semasa cuba membina Perl
menggunakan GNU membuat binari. Jika anda menghadapi masalah seperti itu, cuba muat turun sumbernya
kit kod dan bina GNU buat daripada sumber untuk menghapuskan sebarang masalah sedemikian. Anda mungkin juga
cari GNU make (serta Perl dan Apache) dalam bahagian merah/buku "Perisian Sumber Terbuka untuk
OS/390 UNIX", SG24-5944-00 daripada IBM.
Jika bukan GNU make yang disyorkan anda ingin menggunakan sistem yang dibekalkan make
program kemudian pastikan anda memasang fail peraturan lalai dengan betul melalui arahan shell:
cp /samples/startup.mk / Etc
dan pastikan anda juga menetapkan pembolehubah persekitaran _C89_CCMODE=1 (mengeksport _C89_CCMODE=1 ialah
juga idea yang baik untuk pengguna GNU make).
Anda juga mungkin ingin memasang GNU groff untuk OS/390 sebelum menjalankan fail "make
pasang" langkah untuk Perl.
Terdapat ralat sintaks dalam fail pengepala /usr/include/sys/socket.h yang dibekalkan oleh IBM
dengan USS V2R7, V2R8, dan mungkin V2R9. Masalah dengan fail pengepala ialah berhampiran fail
takrif pemalar SO_REUSEPORT terdapat aksara '/' tambahan palsu di luar
komen seperti itu:
#define SO_REUSEPORT 0x0200 /* benarkan alamat & port setempat
guna semula */ /
Anda boleh mengedit sendiri pengepala itu untuk mengalih keluar '/' yang terakhir, atau anda mungkin ambil perhatian bahawa
Persekitaran Bahasa (LE) APAR PQ39997 menerangkan masalah dan UQ46272 dan UQ46271 PTF
adalah (sekurang-kurangnya R8) pembetulan dan gunakannya. Jika dibiarkan ralat sintaks itu akan berlaku
muncul sebagai ketidakupayaan untuk Perl membina sambungan "Soket"nya.
Untuk ujian yang berjaya, anda mungkin perlu menghidupkan bit melekit agar dunia anda boleh dibaca / tmp
direktori jika anda belum melakukannya (lihat man chmod).
Konfigurasi Perl on OS / 390
Sebaik sahaja anda telah membongkar pengedaran, jalankan "sh Configure" (lihat INSTALL untuk fail penuh
perbincangan tentang pilihan Konfigurasikan). Terdapat fail "petunjuk" untuk os390 yang menentukan
nilai yang betul untuk kebanyakan perkara. Beberapa perkara yang perlu diberi perhatian termasuk:
· Mesej borang:
(Saya nampak anda menggunakan cangkerang Korn. Beberapa ksh meletup pada Konfigurasi,
terutamanya pada sistem eksotik yang lebih lama. Jika milik anda, cuba cangkerang Bourne sebaliknya.)
tiada apa yang perlu dirisaukan sama sekali.
· Beberapa fail templat lalai parser dalam /samples diperlukan dalam /etc. Dalam
khususnya pastikan anda sekurang-kurangnya menyalin /samples/yyparse.c ke / Etc sebelum berlari
Konfigurasi Perl. Langkah ini memastikan pengekstrakan versi EBCDIC berjaya
fail penghurai seperti perly.c dan perly.h. Ini perlu dilakukan sebelum berlari
Konfigurasikan kali pertama. Jika anda gagal berbuat demikian maka cara paling mudah untuk Konfigurasi semula
Perl adalah untuk memadamkan akar binaan anda yang salah konfigurasi dan mengekstrak semula sumber daripada tar
bola. Kemudian anda mesti memastikan bahawa /etc/yyparse.c diletakkan dengan betul sebelum mencuba
untuk menjalankan semula Konfigurasi.
· Port ini akan menyokong pemuatan dinamik, tetapi ia tidak dipilih secara lalai. Jika awak
ingin bereksperimen dengan pemuatan dinamik maka pastikan untuk menentukan -Dusedl dalam
argumen kepada skrip Konfigurasikan. Lihat ulasan dalam petunjuk/os390.sh untuk lebih lanjut
maklumat mengenai pemuatan dinamik. Jika anda membina dengan pemuatan dinamik maka anda perlu
untuk menambah direktori $archlibexp/CORE pada pembolehubah persekitaran LIBPATH anda mengikut urutan
untuk perl berfungsi. Lihat fail config.sh untuk nilai $archlibexp. Jika dalam mencuba
untuk menggunakan Perl anda melihat mesej ralat yang serupa dengan:
CEE3501S Modul libperl.dll tidak ditemui.
Dari titik masuk __dllstaticinit at compile unit offset +00000194 at
maka LIBPATH anda tidak mempunyai lokasi libperl.x dan sama ada libperl.dll atau
libperl.so di dalamnya. Tambahkan direktori itu pada LIBPATH anda dan teruskan.
· Jangan hidupkan bendera pengoptimuman pengkompil "-O". Terdapat pepijat sama ada dalam
pengoptimum atau perl yang menyebabkan perl tidak berfungsi dengan betul apabila pengoptimum dihidupkan.
· Beberapa fail konfigurasi dalam / Etc yang digunakan oleh API rangkaian sama ada tiada
atau mempunyai nama yang salah. Khususnya, pastikan bahawa terdapat sama ada satu
/etc/resolv.conf atau / Etc / tuan rumah, Supaya gethostbyname() berfungsi, dan pastikan itu
fail /etc/proto telah dinamakan semula kepada /etc/protocol (NOT / etc / protokol, seperti yang digunakan oleh
sistem Unix lain). Anda mungkin perlu mencari perkara seperti HOSTNAME dan DOMAINORIGIN
dalam ahli PDS "//'SYS1.TCPPARMS(TCPDATA)'" untuk menyediakan anda dengan betul / Etc
fail rangkaian.
Membina, Uji, memasang Perl on OS / 390
Hanya meletakkan:
sh Konfigurasikan
membuat
membuat ujian
jika semuanya kelihatan ok (lihat bahagian seterusnya untuk diagnosis ujian/IVP) maka:
membuat memasang
langkah terakhir ini mungkin memerlukan UID=0 keistimewaan atau tidak bergantung pada cara anda menjawab
soalan yang ditanya Konfigurasi dan sama ada anda mempunyai akses tulis kepada direktori atau tidak
anda tentukan.
Membina Anomali bersama Perl on OS / 390
"Lupa!" mesej semasa membina Perl paling kerap diperbaiki dengan membina semula
GNU membuat utiliti untuk OS/390 daripada kit kod sumber.
Satu lagi item mengehadkan memori untuk diperiksa ialah parameter MAXASSIZE anda dalam anda
Set data 'SYS1.PARMLIB(BPXPRMxx)' (perhatikan juga bahawa setakat V2R8 had ruang alamat boleh
ditetapkan pada setiap ID pengguna dalam segmen USS profil RACF). Orang dah lapor
binaan Perl yang berjaya dengan parameter MAXASSIZE sekecil 503316480 (dan mungkin
mungkin untuk membina Perl dengan MAXASSIZE lebih kecil daripada itu).
Dalam USS anda / etc / profil atau $HOME/.profile mungkin mengehadkan tetapan ulimit anda. Semak itu
arahan berikut mengembalikan nilai yang munasabah:
ulimit -a
Untuk menjimatkan memori, anda harus memasukkan modul pengkompil anda ke dalam Kawasan Pek Pautan
(LPA/ELPA) dan bukannya dalam senarai pautan atau step lib.
Jika pengkompil c89 mengadu tentang ralat sintaks semasa membina sambungan Socket
kemudian pastikan anda membetulkan ralat sintaks dalam pengepala sistem /usr/include/sys/socket.h.
Ujian Anomali bersama Perl on OS / 390
Langkah "buat ujian" menjalankan Prosedur Pengesahan Perl, biasanya sebelum pemasangan. awak
mungkin menemui mesej STDERR walaupun semasa "membuat ujian" berjaya. Berikut ialah a
panduan kepada beberapa anomali yang lebih biasa dilihat:
· Mesej borang:
io/openpid..........CEE5210S Isyarat SIGHUP diterima.
CEE5210S Isyarat SIGHUP telah diterima.
CEE5210S Isyarat SIGHUP telah diterima.
ok
menunjukkan bahawa ujian t/io/openpid.t Perl telah lulus tetapi melakukannya dengan luar
mesej pada stderr daripada CEE.
· Mesej borang:
lib/ftmp-security....Fail::Temp::_gettemp: Direktori induk (/ tmp /) tidak selamat
(sticky bit tidak ditetapkan apabila dunia boleh ditulis?) di lib/ftmp-security.t baris 100
Fail::Temp::_gettemp: Direktori induk (/ tmp /) tidak selamat (sticky bit not
tetapkan bila dunia boleh ditulis?) di lib/ftmp-security.t baris 100
ok
menunjukkan masalah dengan kebenaran pada anda / tmp direktori dalam HFS. Kepada
betulkan masalah itu mengeluarkan arahan:
chmod a+t / tmp
daripada akaun dengan akses tulis ke entri direktori untuk /tmp.
· Lupa!
Suite ujian perl baru-baru ini agak haus memori. Selain komen di atas pada
had ingatan ia juga patut diperiksa untuk _CEE_RUNOPTS dalam persekitaran anda.
Perl kini mempunyai (dalam miniperlmain.c) C #pragma untuk menetapkan pilihan larian CEE, tetapi
pembolehubah persekitaran menang.
Kod C meminta:
#pragma runopts(TIMBUNG(2J,500K, DI MANA-MANA, SIAP,8K,4K) TIMBANAN(,,SEBARANG,) SEMUA31(HIDUP))
Bahagian penting itu ialah hujah kedua (kenaikan) kepada HEAP, dan
membenarkan tindanan menjadi "Di atas garisan (16M)". Jika kenaikan timbunan terlalu kecil
maka apabila perl (contohnya memuatkan unicode/Name.pl) cuba mencipta "besar" (400K+)
rentetan ia tidak boleh dimuatkan dalam satu segmen dan anda mendapat "Kehabisan Memori!" - walaupun ada
masih banyak memori tersedia.
Isu berkaitan adalah penggunaan dengan malloc perl. Perl's malloc menggunakan "sbrk()" untuk mendapatkan ingatan,
dan "sbrk()" terhad kepada peruntukan pertama jadi dalam kes ini seperti:
TUMPUAN(8J,500K, DI MANA-MANA, SIMPAN,8K,4K)
diperlukan untuk melalui suite ujian.
Pemasangan Anomali bersama Perl on OS / 390
Skrip pemasang akan cuba dijalankan pada OS/390. Terdapat lebih sedikit ralat jika anda mempunyai a
utiliti roff dipasang. Anda boleh mendapatkan GNU groff dari tapak Redbook SG24-5944-00 ftp.
Penggunaan Petua khususnya Perl on OS / 390
Apabila menggunakan perl pada OS/390 sila ingat bahawa set aksara EBCDIC dan ASCII adalah
berbeza. Lihat perlebcdic.pod untuk maklumat lanjut tentang isu set aksara tersebut. Perl builtin
fungsi yang mungkin berkelakuan berbeza di bawah EBCDIC juga disebut dalam perlport.pod
dokumen.
Edisi Terbuka (Perkhidmatan Sistem UNIX) dari V2R8 dan seterusnya menyokong skrip #!/path/to/perl
seruan. Terdapat PTF yang tersedia daripada IBM untuk V2R7 yang akan membenarkan shell/kernel
sokongan untuk #!. Keluaran USS sebelum V2R7 tidak menyokong #! cara skrip
seruan. Jika anda menjalankan V2R6 atau lebih awal, lihat:
kepala `mana perldoc`
untuk contoh cara menggunakan helah "eval exec" untuk meminta shell agar Perl menjalankan anda
skrip pada keluaran lama Perkhidmatan Sistem Unix tersebut.
Jika anda menghadapi masalah dengan kurungan persegi maka pertimbangkan untuk menukar log masuk anda atau
pelanggan telnet. Cuba elakkan emulator 3270 dan ISHELL yang lebih lama kerana bekerja dengan Perl di USS.
Terapung Titik Anomali bersama Perl on OS / 390
Nampaknya terdapat pepijat dalam pelaksanaan titik terapung pada sistem S/390 sedemikian
memanggil int () pada hasil darab nombor dan nombor magnitud yang kecil tidak sama dengan
memanggil int () pada hasil bagi nombor itu dan nombor magnitud yang besar. Sebagai contoh,
dalam kod Perl berikut:
$x saya = 100000.0;
my $y = int($x * 1e-5) * 1e5; # '0'
$z saya = int($x / 1e+5) * 1e5; # '100000'
cetak "\$y ialah $y dan \$z ialah $z\n"; # $y ialah 0 dan $z ialah 100000
Walaupun seseorang menjangkakan kuantiti $y dan $z adalah sama dan sama dengan 100000 mereka
akan berbeza dan sebaliknya akan menjadi 0 dan 100000 masing-masing.
Masalahnya boleh dikaji lebih lanjut dalam program C yang hampir sama:
#sertakan
#sertakan
main ()
{
ganda r1,r2;
ganda x = 100000.0;
ganda y = 0.0;
z dua kali ganda = 0.0;
x = 100000.0 * 1e-5;
r1 = modf (x,&y);
x = 100000.0 / 1e+5;
r2 = modf (x,&z);
printf("y ialah %e dan z ialah %e\n",y*1e5,z*1e5);
/* y ialah 0.000000e+00 dan z ialah 1.000000e+05 (dengan c89) */
}
Modul and Extensions khususnya Perl on OS / 390
Modul tulen tulen (iaitu bukan xs) boleh dipasang melalui biasa:
perl Makefile.PL
membuat
membuat ujian
membuat memasang
Jika anda membina perl dengan keupayaan pemuatan dinamik maka itu juga akan menjadi cara untuk membina
sambungan berasaskan xs. Walau bagaimanapun, jika anda membina perl dengan pautan statik lalai anda boleh
masih membina sambungan berasaskan xs untuk OS/390 tetapi anda perlu mengikut arahan dalam
ExtUtils::MakeMaker untuk membina binari perl yang dipautkan secara statik. Dalam yang paling mudah
konfigurasi membina sambungan perl + xs statik bermuara kepada:
perl Makefile.PL
membuat
buat perl
membuat ujian
membuat memasang
make -f Makefile.aperl inst_perl MAP_TARGET=perl
Dalam kebanyakan kes, orang telah melaporkan hasil yang lebih baik dengan GNU membuat dan bukannya sistem
/bin/make program, sama ada untuk modul biasa atau untuk sambungan berasaskan xs.
Jika proses membuat menghadapi masalah sama ada dengan penyusunan atau pemautan maka cuba tetapkan
_C89_CCMODE kepada 1. Dengan mengandaikan sh ialah shell log masuk anda kemudian jalankan:
eksport _C89_CCMODE=1
Jika tcsh ialah shell log masuk anda maka gunakan arahan setenv.
PENGARANG
David Fiander dan Peter Prymmer dengan ucapan terima kasih kepada Dennis Longnecker dan William Raffloer untuk
laporan berharga, maklum balas LPAR dan PTF. Terima kasih kepada Mike MacIsaac dan Egon Terwedow untuk
SG24-5944-00. Terima kasih kepada Ignasi Roca kerana menunjukkan masalah titik terapung. terima kasih
kepada John Goodyear untuk bantuan pemuatan dinamik.
Gunakan perlos390 dalam talian menggunakan perkhidmatan onworks.net