英語フランス語スペイン語

OnWorksファビコン

perlsolaris - クラウドでオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターを介して、OnWorks の無料ホスティング プロバイダーで perlsolaris を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド perlsolaris です。

プログラム:

NAME


perlsolaris - Solaris システム上の Perl バージョン 5

DESCRIPTION


このドキュメントでは、Sun の Solaris オペレーティング システムのさまざまな機能について説明します。
Perl バージョン 5 (以下、単に perl) のコンパイルおよび/または実行方法に影響します。 いくつかの問題
古い SunOS 4.x に関連するものについても説明されていますが、それらは古くなっている可能性があります。

ほとんどの場合、すべてがうまくいくはずです。

Solaris 8 以降では、perl5.00503 (またはそれ以降) がオペレーティング システムに付属しているため、
新しいバージョンの perl をビルドする必要さえないかもしれません。 Sun 提供のバージョン
/usr/perl5 にインストールされます / usr / bin / perl を指す /usr/perl5/bin/perl。 しない
自分が何をしているのか本当にわからない限り、そのインストールを妨害しないでください。 を削除すると、
OS に付属の perl を使用すると、システムの一部が動作不能になります。 もし、あんたが
新しいバージョンの perl をインストールしたい場合は、別のプレフィックスでインストールしてください。
/usr/perl5. 使用する一般的なプレフィックスは次のとおりです。 / usr / local および/opt/perl。

リンクを変更して、perl のバージョンをすべてのユーザーの PATH に入れることをお勧めします。
/ usr / bin / perl. Solaris に同梱されているほとんどの perl スクリプトは、
明示的なパス。 (など、一部例外があります。 /usr/bin/rpm2cpio
/etc/rcm/scripts/README、しかしこれらはまた、実際のバージョンが十分に一般的です
perl の数はおそらくあまり重要ではありません。)

Solaris には、さまざまな Solaris 固有のモジュールが付属しています。 自分でインストールする場合
これらのモジュールの多くのソースが CPAN で利用可能であることがわかる perl のバージョン
Sun::Solaris:: 名前空間の下。

Solaris には 9 つのバージョンの perl が含まれている場合があります。たとえば、Solaris 5.005 には 03_5.6.1 と XNUMX の両方が含まれています。
これは、Solaris リリース間で安定性を提供するためのものです。
は、以前の Solaris リリースに含まれていたバージョンと互換性がありません。 の
デフォルトの perl バージョンは常に最新であり、一般的には古いバージョンが
XNUMX つの Solaris リリースに対してのみ保持されます。 また、デフォルトの perl はそうではないことに注意してください。
古いバージョンのモジュールを検索するように構成されています。
互換性/安定性の問題。 結果として、Solaris をアップグレードすると、次のようになります。
以前にインストールした追加の CPAN モジュールを再構築/再インストールします。
ソラリス版。 これを行う簡単な方法については、'autobundle' の下にある CPAN マンページを参照してください。

暫定的な措置として、#! を変更することもできます。 スクリプトの行を具体的に
古い perl バージョンを参照してください。たとえば、Solaris 9 では #!/usr/perl5/5.00503/bin/perl を使用して使用します
Solaris 8 のデフォルトであった perl バージョン、または多数の perl バージョンがある場合
古いバージョンの perl をデフォルトにする方が便利かもしれません。
システム。 /usr/perl5 の下の適切なシンボリック リンクを次のように変更することで、これを行うことができます。
(Solaris 9 の例):

# cd /usr/perl5
# rm ビンマンポッド
# ln -s ./5.00503/ビン
# ln -s ./5.00503/男
# ln -s ./5.00503/lib/pod
#rm / usr / bin / perl
# ln -s ../perl5/5.00503/bin/perl / usr / bin / perl

どちらの場合も、これは一時的な措置であると考えてください。
実行可能になり次第、新しいバージョンの perl にアップグレードしてください。

また、perl コマンドライン ユーティリティ (perldoc など) と、
インストールするモジュールは /usr/perl5/bin の下にあるため、そのディレクトリを追加する必要があります
あなたのパスに。

ソラリス 数字。
一般的な使用法との一貫性のために、perl の Configure スクリプトはいくつかのマイナーな処理を実行します。
uname によって報告されたオペレーティング システム名とバージョン番号の操作。
部分的な変換表は次のとおりです。

Sun: perl の構成:
uname uname -r 名前 osname osvers
SunOS 4.1.3 Solaris 1.1 sunos 4.1.3
SunOS 5.6 ソラリス 2.6 ソラリス 2.6
SunOS 5.8 ソラリス 8 ソラリス 2.8
SunOS 5.9 ソラリス 9 ソラリス 2.9
SunOS 5.10 ソラリス 10 ソラリス 2.10

完全な表は、Sun Managers' FAQ にあります。
<ftp://ftp.cs.toronto.edu/pub/jdd/sunmanagers/faq> 「9.1」の下で、どの Sun モデルがどのモデルを実行するか
SunOS のバージョン?".

資料


Solaris に関する情報源は非常にたくさんあります。 にとって重要なもののいくつか
プロフィール:

Solaris FAQ
Solaris の FAQ は、次の Web サイトで入手できます。http://www.science.uva.nl/pub/solaris/solaris2.html>.

Sun Managers' FAQ は、次の Web サイトで入手できます。
<ftp://ftp.cs.toronto.edu/pub/jdd/sunmanagers/faq>

プリコンパイルされたバイナリ
コンパイル済みのバイナリ、多くのサイトへのリンク、その他多くのものが次のサイトで入手できます。
<http://www.sunfreeware.com/>およびhttp://www.blastwave.org/>.

Solaris のドキュメント
Solaris のすべてのドキュメントは、次の Web サイトからオンラインで入手できます。http://docs.sun.com/>.

SETTING UP


File 抽出プロセス 問題 on Solaris。
Solaris (SunOS 4.x ではない) でコンパイルされた tar プログラムを使用して、
perl-5.xxtar.gz ファイル。 Solaris 上の SunOS4 用にコンパイルされた GNU tar を使用しないでください。 (GNU タール
Solaris 用にコンパイルされたものは問題ないはずです。) Solaris で SunOS4 バイナリを実行すると、次のように実行されます。
time システムは m#lib/locale# に一致するパス名を魔法のように変更するので、tar が
lib/locale.pm を作成すると、代わりに lib/oldlocale.pm という名前のファイルが作成されます。 見つけたら
このアドバイスは遅すぎて、とにかく SunOS4 でコンパイルされた tar を使用していたので、間違ったものを見つける必要があります。
ファイル名を変更し、lib/locale.pm に戻します。

コンパイラ 関連記事 ツール on Solaris。
perl をビルドするには、ANSI C コンパイラを使用する必要があります。 Perl は Sun の
アドオン C コンパイラまたは gcc を使用します。 SunOS4 に同梱されている C コンパイラでは対応できません。

含める /usr/ccs/bin/ in 道。

/usr/ccs/bin/ には、perl のビルドに必要ないくつかのツール (ar、as、ld、および make) があります。
/usr/ccs/bin/ が PATH にあることを確認してください。

Solaris のリリースされたすべてのバージョン (8、9、および 10) で、次のことを確認する必要があります。
パッケージがインストールされている (この情報は Solaris FAQ から抽出されたものです):

ツール用 (sccs、lex、yacc、make、nm、truss、ld、as): SUNWbtool、SUNWsprot、SUNWtoo

ライブラリとヘッダー用: SUNWhea、SUNWarc、SUNWlibm、SUNWlibms、SUNWdfbh、SUNWcg6h、
SUNWxwinc

さらに、Solaris 8 および 9 では以下も必要です。

64 ビット開発用: SUNWarcx、SUNWbtoox、SUNWdplx、SUNWscpux、SUNWsprox、SUNWtoox、
SUNWlmsx、SUNWlmx、SUNWlibCx

また、Solaris 8 でのみ、以下も必要です。

ライブラリとヘッダー用: SUNWolinc

不足しているファイルがどのパッケージに含まれているかわからない場合は、
そのファイルがあるインストール。 次に、

$ grep /my/missing/file /var/sadm/install/contents

これにより、次のような行が表示されます。

/usr/include/sys/errno.hf なし 0644 ルート ビン 7471 37605 956241356 SUNWhea

リストされている最後の項目 (この例では SUNWhea) は、必要なパッケージです。

避ける /usr/ucb/cc。

perl をビルドするために PATH に /usr/ucb/ を含める必要はありません。 /usr/ucb/ が必要な場合
とにかくあなたのPATH、/usr/ucb/がディレクトリの前にあなたのPATHにないことを確認してください
適切な C コンパイラが含まれています。

太陽の C コンパイラ

Sun の C コンパイラを使用している場合は、正しいディレクトリ (通常は /opt/SUNWspro/bin/) を確認してください。
PATH にあります (/usr/ucb/ の前)。

GCC

gcc を使用する場合は、インストールが最新で完全であることを確認してください。 以降の perl バージョン
5.6.0 は、Solaris >= 2.8.1 上の gcc > 2.6 で正常にビルドされます。

perl を設定する必要があります

$ sh 設定 -Dcc=gcc

そうしないと、奇妙なビルド エラーが発生する可能性があります。

Solaris のバージョンを更新した場合は、gcc も更新する必要がある場合があります。 ために
たとえば、Solaris 2.6 を実行していて、gcc が以下にインストールされている場合 / usr / localチェック
/usr/local/lib/gcc-lib に適切なディレクトリがあることを確認します。
sparc-sun-solaris2.6/ または i386-pc-solaris2.6/。 gcc のディレクトリが異なる場合
実行している Solaris のバージョンよりも大きい場合は、新しいバージョン用に gcc を再構築する必要があります。
ソラリスのバージョン。

gcc のコンパイル済みバージョンは、次の場所から入手できます。http://www.sunfreeware.com/>または
<http://www.blastwave.org/>。 ご使用の Solaris リリースのパッケージを選択してください。

Solaris に同梱されている perl で使用するアドオン モジュールを gcc を使用して構築する場合は、
CPAN から入手できる Solaris::PerlGcc モジュールを使用する必要があります。 出荷されたパール
Solaris では、Sun コンパイラを使用して構成およびビルドされます。
したがって、Config.pm に保存されている構成情報は、Sun にのみ関連します。
コンパイラ。 Solaris:PerlGcc モジュールには、正しい代替 Config.pm が含まれています。
gcc の場合 - 詳細はモジュールを参照してください。

GNU as GNU ld

次の情報は gcc バージョン 2 に適用されます。
gcc バージョン 3 に適切に対応していただければ幸いです。

Solaris で提供されるバージョンの as と ld は、perl のビルドに適しています。 がある
通常、perl をコンパイルするために GNU バージョンをインストールする必要はありません。

このアドバイスを無視して GNU バージョンを使用する場合は、次のことを確認してください。
それらは比較的最近のものです。 2.7 より新しいバージョンは明らかに新しいものです。 古い
バージョンでは、動的読み込みに問題がある可能性があります。

GNU ld を使用する場合は、-Wl,-E フラグを渡す必要があります。 の
Hints/solaris_2.sh ファイルは、次の構成を設定することにより、これを自動的に実行しようとします。
変数:

ccdlflags="$ccdlflags -Wl,-E"
lddlflags="$lddlflags -Wl,-E -G"

しかし、長年にわたる gcc、GNU ld、Solaris ld の変更により、
最終的に呼び出される ld を自動的に検出します。 手動で編集する必要がある場合があります
config.sh を実行して -Wl,-E フラグを自分で追加するか、Configure を対話的に実行して追加します
適切なプロンプトでのフラグ。

gcc が GNU as および ld を使用するように構成されているが、Solaris のものを使用したい場合
perl をビルドする代わりに、gcc コマンドラインに -B/usr/ccs/bin/ を追加する必要があります。
これを行う便利な方法の XNUMX つは、

$ sh Configure -Dcc='gcc -B/usr/ccs/bin/'

末尾のスラッシュが必要であることに注意してください。 これにより、次のような無害な警告が表示されます。
構成が実行されます:

gcc: ファイル パス プレフィックス `/usr/ccs/bin/' は使用されていません

これらのメッセージは無視しても問題ありません。 (SunOS4 システムでは、
-B/bin/ 代わりに。)

または、GCC_EXEC_PREFIX 環境変数を使用して、Sun の
as と ld が使用されます。 -B の詳細については、gcc のドキュメントを参照してください。
オプションと GCC_EXEC_PREFIX 変数。

GNU make

/usr/ccs/bin の下にある make は、perl のビルドに問題なく機能します。 Sun C をお持ちの場合
コンパイラの場合、並列バージョンの make (dmake) も使用できます。 これはうまくいきます
perl をビルドしますが、'make test' の実行時に問題が発生することがあります。
さまざまなテスト ハーネス ファイル間の依存関係が特定されていません。 同じ問題
一部のアドオンモジュールのビルドにも影響する可能性があるため、そのような場合は「-m」を指定します
serial' を dmake コマンド ラインで実行するか、代わりに /usr/ccs/bin/make を使用します。 ご利用をご希望の場合
GNU make では、set-group-id ビットが設定されていないことを確認してください。 そうであれば、PATHを調整します
/usr/ccs/bin/make が GNU make の前になるようにするか、システム管理者に無効にしてもらいます
GNU make の set-group-id ビット。

避ける libucb。

Solaris は、/usr/ucblib/libucb.a でいくつかの BSD 互換機能を提供します。 Perlはしません
-lucb にリンクされている場合、正しくビルドおよび実行されます。
標準の Solaris libc とは互換性がありません。 通常、これは問題ではありません。
solaris ヒント ファイルにより、Configure は /usr/ucblib でライブラリを検索することさえできなくなります。
-lucb も明示的に省略します。

環境 for コンパイル パール on ソラリス
パス

PATH にコンパイラが含まれていることを確認してください (/opt/SUNWspro/bin/ Sun の
コンパイラ) と /usr/ccs/bin/ を使用して、他の開発ツール (make、
ar、as、および ld)。 パスに /usr/ucb が含まれていないか、含まれていることを確認してください
コンパイラとコンパイラツール、およびその他の標準の Solaris ディレクトリの後に配置します。 あなた
/usr/ucb/cc は絶対に必要ありません。

LD_LIBRARY_PATH

LD_LIBRARY_PATH 環境変数が設定されている場合は、含まれていないことを確認してください。
/ lib または /usr/lib. サードパーティの共有を呼び出す拡張機能を構築する場合
ライブラリ (Berkeley DB など) を使用している場合は、LD_LIBRARY_PATH 環境変数が
そのライブラリを含むディレクトリが含まれます(例 / usr / local / lib).

エラーメッセージが表示された場合

dlopen: スタブの傍受に失敗しました

おそらく、LD_LIBRARY_PATH 環境変数にディレクトリが含まれているためです。
これはへのシンボリックリンクです / usr / lib (といった / lib)。 これが問題を引き起こす理由はかなり
微妙。 ファイル libdl.so.1.0 には、実際には「スタブ」を生成する関数のみが含まれています。
傍受に失敗しました' エラー! 実行時リンカーは、へのリンクをインターセプトします。
代わりに、「/usr/lib/libdl.so.1.0」とそれらの関数の内部実装へのリンク。
[この説明をしてくれた Tim Bunce に感謝します。]

RUN 構成、設定。


Configure に関する一般的な情報については、INSTALL ファイルを参照してください。 Solaris 固有のみ
問題はここで議論されます。 通常は、デフォルトのままで問題ありません。

64ビット パール on Solaris。
64 ビット コンパイルに関する一般的な情報については、INSTALL ファイルを参照してください。 一般に、
ほとんどの人にとっては、デフォルトで問題ないはずです。

デフォルトでは、perl-5.6.0 (またはそれ以降) は largefile と
ロングロングサポート。

32ビット 64ビット 問題。

Solaris 7 以降は、再起動することにより、SPARC CPU 上で 32 ビットまたは 64 ビット モードで実行されます。
64 ビット モードを実行しながら 32 ビット アプリをビルドすることも、その逆も可能です。 32 ビット アプリが実行されます
32 または 64 ビット モードで実行されている Solaris で。 64 ビット アプリケーションでは、Solaris が
64ビットモードで実行中。

既存の 32 ビット アプリは LP32 として正しく知られています。つまり、Long と Pointers は 32 ビットです。
64 ビット アプリは、より正確には LP64 として知られています。 LP64 ビット アプリの識別機能
64 ビットのアドレス空間を利用する能力です。 LP32を持つことは完全に可能です
64 ビット整数 (long long) と大きなファイル (> 2GB) の両方をサポートするビット アプリで、これは
perl-5.6.0 のデフォルト。

64 ビットの問題の詳細な説明については、「Solaris 64-bit Developer's
ガイド」でhttp://docs.sun.com/>

「isainfo -v」を使用して OS モードを検出できます。

$ isainfo -v # 30 ビット モードの Ultra 64
64 ビット sparcv9 アプリケーション
32 ビットの sparc アプリケーション

デフォルトでは、perl は 32 ビット アプリケーションとしてコンパイルされます。 割り当てたくない場合
perl 内に ~ 4GB 以上のメモリ、または 255 以上のオープン ファイルが必要でない限り
おそらく perl を 64 ビット アプリにする必要はありません。

L File サポート

Solaris 2.6 以降の場合、32 ビット アプリケーションで次の XNUMX つの方法があります。
大きなファイル (サイズが 2G バイトを超えるファイル) を操作します。 (64 ビット アプリケーション
デフォルトで、大きなファイルのサポートが自動的に組み込まれます。)

XNUMX つ目は、「移行コンパイル環境」で説明されています。 lfコンパイル64とします。
manページによると、

移行コンパイル環境は、すべての
明示的な 64 ビット関数 (xxx64()) と型に加えて
すべての通常の関数 (xxx()) と型。 xxx() と
xxx64() 関数は、プログラム ソースで使用できます。 あ
32 ビット アプリケーションは、順番に xxx64() 関数を使用する必要があります。
大きなファイルにアクセスする。 を参照してください LF64(5) のマニュアルページ
64 ビット移行インターフェイスの完全なリスト。

暫定的なコンパイル環境は、次のコンパイラと
リンカー フラグ:

getconf LFS64_CFLAGS -D_LARGEFILE64_SOURCE
getconf LFS64_LDFLAG # 特別なことは必要ありません
getconf LFS64_LIBS # 特別なことは必要ありません

XNUMX つ目は、「大きなファイルのコンパイル環境」です。 lfコンパイル(5)。 によると
マニュアルページに、

64 ビット エンティティにアクセスする必要がある xxx() という名前の各インターフェイス
大きなファイルにアクセスするには、
結果のバイナリ。 関連するすべてのデータ型は、次のように定義されています。
正しいサイズ (たとえば、off_t には typedef 定義があります)
64 ビット エンティティの場合)。

この環境でコンパイルされたアプリケーションは、
大小の両方にアクセスするための xxx() ソース インターフェイス
トランジショナルを明示的に利用するのではなく、ファイル
大きなファイルにアクセスするための xxx64() インターフェイス呼び出し。

XNUMX つの例外は次のとおりです。 fseek()ftell(). 32 ビット アプリケーションは使用する必要があります フシーコ(3C) および
フテロ(3C)。 これらは自動的にマップされます fseeko64()ftello64().

大きなファイルのコンパイル環境は、

getconf LFS_CFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
getconf LFS_LDFLAGS # 特別なことは必要ありません
getconf LFS_LIBS # 特別なことは必要ありません

デフォルトでは、perl は大きなファイルのコンパイル環境を使用し、Solaris に依存して実行します。
インターフェースの基礎となるマッピング。

建物 an LP64 パール

最新の Sun コンパイラを使用して UltraSparc で 64 ビット アプリケーションをコンパイルするには、次のことを行う必要があります。
フラグ「-xarch=v9」を使用してください。 getconf(1) これを教えてくれます。

$ getconf -a | grep v9
XBS5_LP64_OFF64_CFLAGS: -xarch=v9
XBS5_LP64_OFF64_LDFLAGS: -xarch=v9
XBS5_LP64_OFF64_LINTFLAGS: -xarch=v9
XBS5_LPBIG_OFFBIG_CFLAGS: -xarch=v9
XBS5_LPBIG_OFFBIG_LDFLAGS: -xarch=v9
XBS5_LPBIG_OFFBIG_LINTFLAGS: -xarch=v9
_XBS5_LP64_OFF64_CFLAGS: -xarch=v9
_XBS5_LP64_OFF64_LDFLAGS: -xarch=v9
_XBS5_LP64_OFF64_LINTFLAGS: -xarch=v9
_XBS5_LPBIG_OFFBIG_CFLAGS: -xarch=v9
_XBS5_LPBIG_OFFBIG_LDFLAGS: -xarch=v9
_XBS5_LPBIG_OFFBIG_LINTFLAGS: -xarch=v9

このフラグは、Sun WorkShop Compilers 5.0 以降でサポートされています (現在、
UltraSparc システムの Solaris 7 以降で使用する場合。

gcc を使用している場合は、代わりに -mcpu=v9 -m64 を使用する必要があります。 このオプションはまだありません
gcc 2.95.2 以降でサポートされています。 そのリリースの install/SPECIFIC から:

GCC バージョン 2.95 は、sparc64 のコードを正しくコンパイルできません。
ターゲット。 Linux カーネルのユーザーは、少なくとも sparc32 を使用できます。
次の環境で新しいシェル呼び出しを開始するプログラム
configure に (uname -a を介して) システムを sparc-*-* として認識させます。
を代わりにお使いください。

要求があれば、これらすべてがヒント ファイルによって自動的に処理されます。

長い ダブルス。

5.8.1 の時点で、Sun コンパイラを使用すると long double が機能します (追加の
libm に含まれていない数学ルーチン)。

スレッド in パール on Solaris。
Solaris 上でスレッド化されたバージョンの perl を構築することが可能です。 perl スレッド全体
ただし、実装はまだ実験的なので注意してください。

マロク 問題   パール on Solaris。
perl 5.7.1 以降、perl は Solaris の malloc を使用します。
2GB を超えるメモリを処理しており、Solaris の malloc も高速なようです。

何らかの理由 (バイナリの下位互換性など) で本当に perl の
malloc を使用すると、ソースから perl を再構築し、ビルドを次のように構成できます。

$ sh 構成 -Dusemymalloc

gcc でビルドしている場合は、perl の malloc を使用しないでください。 コアのレポートがあります
特に PDL モジュールでのダンプ。 -DDEBUGGING で問題が解決するように見えるので、
追跡するのは困難でした。 Sun のコンパイラは、あってもなくても大丈夫なようです
perl の malloc。 [XXX さらなる調査が必要です。]

MAKE 問題。


GNU as および GNU ld の動的ロードの問題
SunOS または Solaris で gcc を使用した動的ロードに問題があり、
GNU as および GNU ld を使用する場合は、上記の「GNU as および GNU ld」セクションを参照してください。

ld.so.1: ./perl: 致命的: 再配置エラー:
SunOS または Solaris でこのメッセージが表示され、gcc を使用している場合は、おそらく
前項「GNU as と GNU ld」の GNU as または GNU ld の問題。

dlopen: スタブの傍受に失敗しました
「dlopen: スタブ インターセプトに失敗しました」というメッセージの主な原因は、
LD_LIBRARY_PATH 環境変数には、へのシンボリックリンクであるディレクトリが含まれています
/ usr / lib (といった / lib)。 上記の「LD_LIBRARY_PATH」を参照してください。

#error "DATAMODEL_NATIVE が指定されていません"
これは、gcc を使用して Solaris 2.6 で perl をビルドしようとしたときによくあるエラーです。
Solaris 2.5 または 2.5.1 からのインストール。 Solaris ヘッダー ファイルが変更されたため、
gcc インストールを更新します。 gcc から fixincludes スクリプトを再実行できます。
または、この機会に gcc インストールを更新してください。

sh:ar:見つかりません
これは、コマンド「ar」が見つからなかったことを知らせるシェルからのメッセージです。
PATH 環境変数をチェックして、含まれていることを確認する必要があります。
'ar' コマンドでディレクトリに移動します。 これは、Solaris でよくある問題です。「ar」は
/usr/ccs/bin/ ディレクトリにあります。

MAKE テスト


op/stat.t test 4 in ソラリス
op/stat.t ある種の tmpfs を使用している場合、テスト 4 は失敗する可能性があります。 ビルイン / tmpに 時々
は、この動作を示しています。 テストスイートは、ビルドしているかどうかを検出します / tmpに、しかしそうではないかもしれません
すべての tmpfs 状況をキャッチできます。

nss_delete ダンプ from オプ/プウェント or オプ/グレント
perlhpux の「op/pwent または op/grent からの nss_delete コア ダンプ」を参照してください。

クロスコンパイル


ここではあまり珍しいことはありません。 クロスコンパイラが利用できる場合は、これを簡単に行うことができます。
Solaris x86 を対象とする場合の通常の Configure 呼び出しは、次のようになります。

sh ./Configure -des -Dusecrosscompile \
-Dcc=i386-pc-solaris2.11-gcc \
-Dsysroot=$SYSROOT \
-Alddlflags=" -Wl,-z,notext" \
-Dtargethost=... # 通常のクロスコンパイル オプション

lddlflags の追加は、唯一の異常なビットです。

ビルド済み バイナリ OF パー FOR ソラリス。


Solaris 用のビルド済みバイナリは、次の場所から入手できます。http://www.sunfreeware.com/>,
<http://www.blastwave.org>、アクティブステートhttp://www.activestate.com/>、および
<http://www.perl.com/> ページ上部の [バイナリ] リストの下。 おそらくあります
他のソースも。 これらのサイトは、その管理下にあることに注意してください。
perl 開発者ではなく、それぞれの所有者です。

ランタイム 問題 FOR パー ON ソラリス。


境界 on 数字 of Open on Solaris。
この 標準入出力(3C) マンページには、LP32 アプリケーションの場合、255 個のファイルしか開くことができないことが記載されています。
fopen()、およびファイル記述子 0 ~ 255 のみがストリームで使用できます。 パール以来
呼び出し 開いた() その後 fdopen(3C) 結果のファイル記述子で、perl は
255 の同時オープン ファイル sysopen() 使用されている。 これが
perl を LP64 アプリケーションとしてコンパイルできます。「LP64 のビルド」を参照してください。
perl" で詳細を確認してください。 また、開いているファイル記述子のデフォルトのリソース制限は
Solaris は 255 なので、ulimit または rctl を変更する必要があります (Solaris 9 以降)
適切に。

SOLARIS 固有 モジュール。


CPAN の Solaris:: および Sun::Solaris 名前空間の下にあるモジュールを参照してください。
<http://www.cpan.org/modules/by-module/Solaris/>および
<http://www.cpan.org/modules/by-module/Sun/>.

SOLARIS 固有 問題 WITH モジュール。


Proc :: ProcessTable on ソラリス
Proc::ProcessTable は、perl5.6.0 以降の Solaris ではコンパイルされません。
LARGEFILES が定義されています。 5.6.0 以降ではラージファイルのサポートがデフォルトであるため、
このモジュールを使用するための特別な手順を実行します。

問題は、procfs を介して表示されるさまざまな構造が off_t を使用することです。
largefile サポートにより、これらは 32 ビットから 64 ビットに変更されます。 したがって、あなたが返すもの
procfs は perl の構造と一致しないため、ガベージが発生します。 見る PROC(4)
さらなる議論のために。

Proc::ProcessTable の修正は、Makefile を編集してラージファイル フラグを明示的に削除することです。
MakeMaker が Config.pm から取得したものから。 これにより、Proc::ProcessTable が生成されます。
適切な環境下で構築されています。 その後、すべてがOKである必要があります
Proc::ProcessTable は、off_t を perl の残りの部分と共有しようとしません。
off64_t として明示的に指定する必要があります。

BSD::リソース on ソラリス
1.09 より前の BSD::Resource バージョンは、perl 5.6.0 を使用する Solaris ではコンパイルされません。
Proc::ProcessTable と同じ理由で、より高くなります。 BSD::Resource のバージョンから始まる
1.09 には、この問題の回避策があります。

ネット::SSLeay on ソラリス
Net::SSLeay は /dev/urandom が存在することを必要とします。 このデバイスは、Solaris 9 以降で使用できます
以降。 以前のバージョンの Solaris では、パッケージ SUNWski (パッケージ化された
の一部である Sun WebServer など、いくつかの Sun ソフトウェア製品と
Solaris Server Intranet Extension、または Sun Directory Services、Solaris for Solaris の一部
ISP) または から ANDIrand パッケージをダウンロードします。http://www.cosy.sbg.ac.at/~andi/>。 使用する場合
SUNWski、/dev/random を指すシンボリック リンク /dev/urandom を作成します。 詳細については、
「Solaris[TM] 内での /dev/random サポート要件の相違」というタイトルの文書 ID27606
オペレーティング環境」、で入手可能http://sunsolve.sun.com>。

Entropy Gathering Daemon (Perl で書かれています!) を使用することもできます。
<http://www.lothar.com/tech/crypto/>.

SunOSの 4.x


SunOS 4.x では、おそらく SunOS ld を使用したいと思うでしょう。 /usr/bin/ld、より多くの
GNU ld の最近のバージョン (2.13 など) は、Perl のビルドには機能しないようです。 いつ
拡張機能をリンクすると、GNU ld は非常に不満になり、このような多くのエラーを吐き出します

...収まるように切り捨てられた再配置: BASE13 ...

そして死ぬ。 したがって、SunOS 4.1 ヒント ファイルは、明示的に ld を次のように設定します。 /usr/bin/ld.

Perl 5.8.1 以降、ライブラリ (DynaLoader、XSLoader) の動的ロードも
SunOS 4.x では壊れています。 したがって、デフォルトでは Perl を静的にビルドします。

SunOS 4.1 でテスト スイートを実行するのは少しトリッキーです。 lib/Tie/ファイル/t/09_gen_rs
テストが何らかの理由でハングします (サブテスト #51、FWIW)。 テストを停止してそれを殺すだけです
特定の Perl プロセス。

他にもさまざまな障害があり、SunOS 4.1.4 および gcc 3.2.2 の時点では gcc によく似ています。
バグ。 失敗の多くはエンコード テストで発生します。たとえば、テストが
「0」を期待すると、「XNUMX」が得られます。これは、少し目を細めると非常に奇妙に見えるはずです。
別の例は、 t/run/fresh_perl コラボレー CHR(0xff) が期待されますが、テスト
結果が CHR(0xff)。 その通り。

これは、上記の組み合わせからの「make test」の結果です。

27 個のテスト スクリプトのうち 745 個のテスト スクリプトが失敗し、96.38% は問題ありません。

「ハーネス」を実行するのは、多くの失敗する Unicode 関連のテストが原因で苦痛を伴います。
メガバイトの失敗メッセージを出力しますが、辛抱強く待つと、次の結果が得られます。

失敗したテストの統計 Wstat 合計失敗 失敗リスト
-------------------------------------------------- ---------------------------
...
../ext/Encode/t/at-cn.t 4 1024 29 4 13.79% 14-17
../ext/Encode/t/at-tw.t 10 2560 17 10 58.82% 2 4 6 8 10 12
14-17
../ext/Encode/t/enc_data.t 29 7424 ?? ?? % ??
../ext/Encode/t/enc_eucjp.t 29 7424 ?? ?? % ??
../ext/Encode/t/enc_module.t 29 7424 ?? ?? % ??
../ext/Encode/t/encoding.t 29 7424 ?? ?? % ??
../ext/Encode/t/grow.t 12 3072 24 12 50.00% 2 4 6 8 10 12 14
16 18 20 22 24
失敗したテストの統計 Wstat 合計失敗 失敗リスト
-------------------------------------------------- ----------------------------
../ext/Encode/t/guess.t 255 65280 29 40 137.93% 10-29
../ext/Encode/t/jperl.t 29 7424 15 30 200.00% 1-15
../ext/Encode/t/mime-header.t 2 512 10 2 20.00% 2-3
../ext/Encode/t/perlio.t 22 5632 38 22 57.89% 1-4 9-16 19-20
23-24 27-32
../ext/List/Util/t/shuffle.t 0 139 ?? ?? % ??
../ext/PerlIO/t/encoding.t 14 1 7.14% 11
../ext/PerlIO/t/fallback.t 9 2 22.22% 3 5
../ext/Socket/t/socketpair.t 0 2 45 70 155.56% 11-45
../lib/CPAN/t/vcmp.t 30 1 3.33% 25
../lib/Tie/File/t/09_gen_rs.t 0 15 ?? ?? % ??
../lib/Unicode/Collat​​e/t/test.t 199 30 15.08% 7 26-27 71-75
81-88 95 101
103-104 106 108-
109 122 124 161
169-172
../lib/sort.t 0 139 119 26 21.85% 107-119
操作/アラーム.t 4 1 25.00% 4
op/utfhash.t 97 1 1.03% 31
run/fresh_perl.t 91 1 1.10% 32
uni/tr_7jis.t ?? ?? % ??
uni/tr_eucjp.t 29 7424 6 12 200.00% 1-6
uni/tr_sjis.t 29 7424 6 12 200.00% 1-6
56つのテストと467のサブテストがスキップされました。
27/811テストスクリプトに失敗しました。96.67%は問題ありません。 1383/75399サブテストは失敗し、98.17%は大丈夫です。

この 警報() テストの失敗の原因 システム() 明らかにブロックしている 警報()。 あれは
おそらく libc のバグであり、SunOS 4.x が何年も前に廃止されていることを考えると、保持しないでください。
修正のためのあなたの息。 それに加えて、特に Unicode-y を試してはいけません。
Encode を使用すると、SunOS 4.x で問題なく動作するはずです。

onworks.net サービスを使用して perlsolaris をオンラインで使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad