これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの 390 つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド perlosXNUMX です。
プログラム:
NAME
perlos390 - OS/390 および z/OS 用の Perl のビルドとインストール
SYNOPSIS
この文書は、OS/390 (別名 z/OS) での Perl の構成、構築、テスト、およびインストールに役立ちます。
Unix システム サービス。
この ドキュメント ニーズ 〜へ be 更新しました、 焙煎が極度に未発達や過発達のコーヒーにて、クロロゲン酸の味わいへの影響は強くなり、金属を思わせる味わいと乾いたマウスフィールを感じさせます。 we しない 知っています 何 it すべき いう。 お近くのLuxinar支社またはディストリビューターに メール
注釈 〜へ [メール保護] <mailto:[メール保護]>.
DESCRIPTION
これは、OS/390 バージョン 2 リリース 3、5、6、7、8、および 9 用に完全に移植された Perl です。
他のバージョンやリリースでも動作しますが、それらは私たちがテストしたものです。
構成を実行する前に、いくつかのシステム構成タスクを実行する必要がある場合があります。
Perl用のスクリプト。
ツール
z/OS Unix Tools and Toys のリストは役立つ可能性があり、多くのツールのポートへのリンクが含まれています。
Perl の構築に役立つソフトウェア。
http://www.ibm.com/servers/eserver/zseries/zos/unix/bpxa1toy.html
開梱 パール ディストリビューション on OS / 390
FTP を使用する場合は、ディストリビューションをバイナリ形式で転送することを忘れないでください。
OS/390 用の Gunzip/gzip については、次の場所で説明されています。
http://www.ibm.com/servers/eserver/zseries/zos/unix/bpxa1ty1.html
OS/390 で ASCII tar アーカイブを抽出するには、次のことを試してください。
pax -o to=IBM-1047,from=ISO8859-1 -r < 最新.tar
or
zcat 最新.tar.Z | pax -o to=IBM-1047,from=ISO8859-1 -r
フォームエラーが多発する場合
tar: FSUM7171 ...: uid/gid を設定できません: EDC5139I 操作は許可されていません。
上記を読んでいないため、pax の代わりに tar を使用しようとしました。最初に削除する必要があります。
(現在破損している) perl ディレクトリ
rm -rf perl-...
そしてパックスを使います。
公益事業 の パール on OS / 390
必要なパーサー テンプレートを含め、yacc が適切にインストールされていることを確認してください。
ファイル。 まだ行っていない場合は、必ず次のことを行ってください。
cp /samples/yyparse.c の/ etc
/etc/protocol ファイルと、
/etc/resolv.conf or /etc/hosts ファイルは所定の場所にあります。 このようなことを説明した IBM の文書
USS システム セットアップの問題は、SC28-1890-07「OS/390 UNIX System Services Planning」でした。
特に OE シェルのカスタマイズに関する第 6 章を参照してください。
GNU make for OS/390。これは Perl のビルド (および CPAN のビルドに推奨)
モジュールと拡張機能) は、「ツール」から利用できます。
「メモリ不足!」に遭遇したと報告している人もいます。 Perl をビルドしようとするとエラーが発生する
GNU make バイナリを使用します。 このような問題が発生した場合は、ソースをダウンロードしてみてください
コードキットを作成し、ソースから GNU make をビルドすることで、そのような問題を排除できます。 あなたもそうかもしれません
赤本/書籍「Open Source Software for
OS/390 UNIX」、IBM の SG24-5944-00。
推奨される GNU make の代わりに、システムが提供する make を使用したい場合は、
プログラムを実行した場合は、シェル コマンドを使用してデフォルトのルール ファイルを適切にインストールしてください。
cp /samples/startup.mk の/ etc
また、必ず環境変数 _C89_CCMODE=1 も設定してください (_C89_CCMODE=1 のエクスポートは
GNU make のユーザーにとっても良いアイデアです)。
また、「make」コマンドを実行する前に、OS/390 用の GNU groff をインストールしておくこともできます。
Perl の「インストール」ステップ。
IBM が提供する /usr/include/sys/socket.h ヘッダー ファイルに構文エラーがあります
USS V2R7、V2R8、そして場合によっては V2R9 を使用します。 ヘッダー ファイルの問題は、
SO_REUSEPORT 定数の定義の外側に偽の余分な '/' 文字があります
次のようなコメント:
#define SO_REUSEPORT 0x0200 /* ローカルアドレスとポートを許可します
再利用 */ /
そのヘッダーを自分で編集して最後の '/' を削除することもできますし、次のことに注意することもできます。
Language Environment (LE) APAR PQ39997 には、この問題と PTF の UQ46272 および UQ46271 が説明されています。
(少なくとも R8) 修正を適用してください。 構文エラーを放置すると、
Perl が「Socket」拡張機能を構築できないことが判明します。
テストを成功させるには、世界中で読み取れるようにスティッキー ビットをオンにする必要がある場合があります。 / tmpに
まだディレクトリを作成していない場合は、ディレクトリを作成します (man chmod を参照)。
構成 パール on OS / 390
ディストリビューションを解凍したら、「sh Configure」を実行します(完全なインストールについては「インストール」を参照してください)。
構成オプションについての説明)。 os390 には、次のことを指定する「ヒント」ファイルがあります。
ほとんどのものに対して正しい値が得られます。 注意すべき点としては次のようなものがあります。
· 次の形式のメッセージ:
(Korn シェルを使用しているようですね。一部の ksh が Configure で爆発します。
主に古いエキゾチックなシステムで使用されます。 使用している場合は、代わりに Bourne シェルを試してください)。
全く心配する必要はありません。
· /samples にあるパーサーのデフォルト テンプレート ファイルの一部は、/etc に必要です。 で
特に、少なくとも /samples/yyparse.c を次の場所にコピーしてください。 の/ etc 実行する前に
Perl の設定。 この手順により、EBCDIC バージョンの抽出が確実に成功します。
perly.c や perly.h などのパーサー ファイル。 これは実行前に行う必要があります
初めて設定します。 これに失敗した場合は、再構成する最も簡単な方法があります。
Perl は、誤って設定されたビルド ルートを削除し、tar からソースを再抽出します。
ボール。 次に、試行する前に /etc/yyparse.c が適切に配置されていることを確認する必要があります。
設定を再実行します。
· このポートは動的ロードをサポートしますが、デフォルトでは選択されていません。 もし、あんたが
動的ロードを試したい場合は、必ず -Dusedl を指定してください。
設定スクリプトへの引数。 詳細については、hints/os390.sh のコメントを参照してください。
動的ロードに関する情報。 動的読み込みを使用してビルドする場合は、次のものが必要になります。
$archlibexp/CORE ディレクトリを LIBPATH 環境変数に追加します。
Perl が動作するようになります。 $archlibexp の値については、config.sh ファイルを参照してください。 試している場合
Perl を使用すると、次のようなエラー メッセージが表示されます。
CEE3501S モジュール libperl.dll が見つかりませんでした。
コンパイル単位オフセット +00000194 のエントリ ポイント __dllstaticinit から
この場合、LIBPATH には libperl.x と libperl.dll または libperl.dll の場所がありません。
その中にlibperl.soがあります。 そのディレクトリを LIBPATH に追加して続行します。
・コンパイラ最適化フラグ「-O」をオンにしないでください。 どちらかにバグがあります
オプティマイザーまたは Perl が原因で、オプティマイザーがオンのときに Perl が正しく動作しなくなります。
· 一部の設定ファイル の/ etc ネットワーク API で使用されるものが欠落しているか、
または名前が間違っています。 特に、次のいずれかがあることを確認してください。
/etc/resolv.conf または /etc/hostsので、 gethostbyname() 動作することを確認してください
ファイル /etc/proto の名前が /etc/protocol に変更されました (そうではありません) / etc / protocols、によって使用される
他の Unix システム)。 HOSTNAME や DOMAINORIGIN などを探す必要がある場合があります。
「//'SYS1.TCPPARMS(TCPDATA)'」PDS メンバーを適切に設定するには、 の/ etc
ネットワーク ファイル。
ビルド、 テスト、 インストールを開始する パール on OS / 390
簡単に言えば:
sh 設定
make
テストを行う
すべてが正常に見える場合 (テスト/IVP 診断については次のセクションを参照)、次のようにします。
make installを
この最後のステップでは、質問への答えに応じて、UID=0 権限が必要な場合とそうでない場合があります。
Configure が尋ねた質問、およびディレクトリへの書き込みアクセス権があるかどうか
あなたが指定した。
建設 異常 パール on OS / 390
「メモリ不足です!」 Perl のビルド中のメッセージは、ほとんどの場合、
ソース コード キットからの OS/390 用の GNU make ユーティリティ。
チェックすべきもう XNUMX つのメモリ制限項目は、
「SYS1.PARMLIB(BPXPRMxx)」データ セット (V2R8 以降、アドレス スペースの制限が制限される可能性があることにも注意してください)
RACF プロファイルの USS セグメントでユーザー ID ごとに設定されます)。 人々が報告しました
MAXASSIZE パラメータが 503316480 と小さい Perl のビルドが成功する (場合によっては
それより小さい MAXASSIZE で Perl をビルドすることは可能です)。
USS 内では、 / etc / profile または $HOME/.profile によって ulimit 設定が制限される場合があります。 それを確認します
次のコマンドは適切な値を返します。
ulimit -a
メモリを節約するには、コンパイラ モジュールをリンク パック領域にロードする必要があります。
(LPA/ELPA) リンク リストやステップ ライブラリではなく。
c89 コンパイラーがソケット拡張機能のビルド中に構文エラーを報告する場合
次に、システム ヘッダー /usr/include/sys/socket.h の構文エラーを必ず修正してください。
テスト 異常 パール on OS / 390
「make test」ステップでは、通常はインストール前に Perl 検証手順が実行されます。 あなた
「make test」の実行が成功した場合でも、STDERR メッセージが発生する可能性があります。 がここにあります
より一般的に見られる異常のいくつかについてのガイド:
· 次の形式のメッセージ:
io/openpid.....CEE5210S シグナル SIGHUP を受信しました。
CEE5210S シグナル SIGHUP を受信しました。
CEE5210S シグナル SIGHUP を受信しました。
ok
Perl の t/io/openpid.t テストは合格したが、無関係なテストが行われたことを示します。
CEE からの標準エラー出力のメッセージ。
· 次の形式のメッセージ:
lib/ftmp-security....File::Temp::_gettemp: 親ディレクトリ (/ tmp /)は安全ではありません
(誰でも書き込み可能な場合はスティッキー ビットが設定されていませんか?) lib/ftmp-security.t 100 行目
File::Temp::_gettemp: 親ディレクトリ (/ tmp /) は安全ではありません (スティッキー ビットではありません)
誰でも書き込み可能な場合に設定?) lib/ftmp-security.t 100 行目
ok
の権限に問題があることを示します / tmpに HFS 内のディレクトリ。 に
その問題を修正するには、次のコマンドを発行します。
chmod a + t / tmpに
/tmp のディレクトリ エントリへの書き込みアクセス権を持つアカウントから。
· メモリ不足です!
最近の Perl テスト スイートはかなりメモリを消費します。 上記のコメントに加えて、
メモリ制限があるため、環境内の _CEE_RUNOPTS を確認することも価値があります。
Perl には (miniperlmain.c 内に) CEE 実行オプションを設定するための C #pragma が含まれていますが、
環境変数が勝ちます。
C コードでは次のことが求められます。
#pragma runopts(HEAP(2M,500K,ANYWHERE,KEEP,8K,4K) STACK(,,ANY,) ALL31(ON))
その重要な部分は、HEAP の XNUMX 番目の引数 (増分) です。
スタックを「(16M) ラインより上」にできるようにします。 ヒープ増分が小さすぎる場合
次に、Perl (たとえば、unicode/Name.pl のロード) が「大きな」(400K+) を作成しようとすると、
文字列が XNUMX つのセグメントに収まらないため、「メモリ不足!」というメッセージが表示されます。 - たとえそこにあったとしても
メモリにはまだ十分な空きがあります。
関連する問題は、Perl の malloc での使用です。 Perl の malloc は「sbrk()」を使用してメモリを取得します。
「sbrk()」は最初の割り当てに限定されるため、この場合は次のようになります。
ヒープ(8M、500K、どこでも、キープ、8K、4K)
テストスイートを通過するために必要です。
インストール 異常 パール on OS / 390
installman スクリプトは OS/390 上で実行を試みます。 がある場合、エラーは少なくなります。
roffユーティリティがインストールされています。 GNU groff は、Redbook SG24-5944-00 ftp サイトから入手できます。
使用法 ヒント の パール on OS / 390
OS/390 で Perl を使用する場合は、EBCDIC および ASCII 文字セットが次のとおりであることに注意してください。
違う。 このような文字セットの問題の詳細については、perlebcdic.pod を参照してください。 Perl 組み込み
EBCDIC では動作が異なる可能性がある関数についても、perlport.pod に記載されています。
の資料をご参照ください。
V2R8 以降の Open Edition (UNIX System Services) は #!/path/to/perl スクリプトをサポートします
呼び出し。 シェル/カーネルを許可する V2R7 用の PTF が IBM から入手可能です。
へのサポート #!。 V2R7 より前の USS リリースは #! をサポートしていませんでした。 スクリプトの手段
呼び出し。 V2R6 以前を実行している場合は、次を参照してください。
head `wherece perldoc`
「eval exec」トリックを使用して、Perl に実行させるようにシェルに要求する方法の例については、
Unix System Services の古いリリース上のスクリプト。
角括弧に問題がある場合は、rlogin または
Telnetクライアント。 USS で Perl を使用する場合は、古い 3270 エミュレータと ISHELL の使用を避けるようにしてください。
フローティング ポイント 異常 パール on OS / 390
S/390 システムの浮動小数点実装には次のようなバグがあるようです。
呼び出し int() 数値と小さな大きさの数値の積は、
呼び出し int() その数値と大きな大きさの数値の商に基づいて計算されます。 例えば、
次の Perl コードで:
私の$x = 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 プログラムでさらに調べることができます。
#include
#include
メイン()
{
ダブル 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.000000e+00、z は 1.000000e+05 (c89 の場合) */
}
モジュール 拡張機能 の パール on OS / 390
Pure Pure (つまり、非 xs) モジュールは、通常の方法でインストールできます。
perl Makefile.PL
make
テストを行う
make installを
動的読み込み機能を備えた Perl をビルドした場合、それもビルド方法になります。
xs ベースの拡張機能。 ただし、デフォルトの静的リンクを使用して Perl を構築した場合は、次のことが可能です。
OS/390 用の xs ベースの拡張機能をビルドすることはできますが、次の手順に従う必要があります。
静的にリンクされた Perl バイナリを構築するための ExtUtils::MakeMaker。 最も単純に言うと
静的 perl + xs 拡張機能を構築する構成は、要約すると次のようになります。
perl Makefile.PL
make
perlを作る
テストを行う
make installを
make -f Makefile.aperl inst_perl MAP_TARGET=perl
ほとんどの場合、システムのよりも GNU make を使用した方が良い結果が得られると報告されています。
/bin/make プログラム (プレーン モジュール用でも xs ベースの拡張機能用でも)。
make プロセスでコンパイルまたはリンクのいずれかで問題が発生した場合は、設定を試してください。
_C89_CCMODE を 1 に設定します。 sh がログイン シェルであると仮定して、次を実行します。
エクスポート _C89_CCMODE=1
tcsh がログイン シェルの場合は、setenv コマンドを使用します。
作者
デヴィッド・フィアンダーとピーター・プリマー、デニス・ロングネッカーとウィリアム・ラフロアーに感謝の意を表します。
貴重なレポート、LPAR および PTF のフィードバック。 Mike MacIsaac と Egon Terwedow に感謝します。
SG24-5944-00。 浮動小数点の問題を指摘してくれた Ignasi Roca に感謝します。 ありがとう
動的読み込みについては John Goodyear に問い合わせてください。
onworks.net サービスを使用してオンラインで perlos390 を使用する