4

私は「Senora」と呼ばれるオープン ソース プロジェクトを実行しています。これは perl で記述され、Oracle データベースの処理を行います。最近まで、オラクルに付属している perl ディストリビューションではそのまま使用できました。

しかし最近、さらに機能を追加しようとしたため、LibXML が必要になりました。個人的に私は仕事で Strawberry perl を実行しており、LibXML を追加しても問題はありません。ただし、私のユーザーは個人的な perl を持っておらず、マシン上で見つけたものと一緒に暮らす必要があります (oracle perl は常にそこにあります)。

私はすでに lib ディレクトリを Senora ツリーに追加し、そこに oracle perl が提供しないいくつかの単純な perl モジュールを配置しました。これは機能します。

しかし、コンパイルされたコードはどうすればよいのでしょうか? Strawberry ツリーから dll をコピーするだけの誘惑に駆られましたが、これはハッカーのように感じます。結局、このコードは oracle perl に対してコンパイルされませんでした。

また、ユーザーに完全な Strawberry ツリーを提供したいという誘惑にも駆られました。これは醜いです。

では、Senora ディストリビューションに「不足しているものだけ」を追加して、oracle perl で実行するには、他にどのようなオプションが必要ですか?

4

2 に答える 2

2

TL;DR: CPAN を介して Perl モジュールを配布するのは、誰もが完全に perl をインストールしていれば、楽しく簡単です。他のユースケースでは、これは最悪です。

  • Perl プログラムは通常、依存関係の自動インストールを提供する CPAN 経由で配布されます。ただし、一部のモジュールのインストールには、動作する C ツールチェーンが必要です。多くのユーザーは、この機能なしで不自由な perl を実行しています。ここでの唯一の解決策は、プリコンパイル済みファイルをパッケージ化することですが、これは各 OS および各 perl 構成に対して個別に行う必要があります。これは、一部の OS ベンダー (Debian や RedHat など) や一部の Perl ベンダー (ActiveState など) が行っていることです。

    これらの各ベンダーは、Perl モジュールから独自のパッケージを構築するための手順を提供しています。これは、それぞれのパッケージ マネージャーでインストールできます。

  • ターゲット システムに C ツールチェーンがある場合、cpanインストールに使用しても問題ありませんが、問題local::libのモジュールを CPAN にアップロードしていない場合は調査する必要があります。

    GNOMElibxml2は CPAN 経由で配布されないことに注意してください。他の方法で入手する必要があります。モジュールのビルドにXML::LibXMLは、対応するヘッダー ファイルも必要です。

  • などのパッケージング ツールを使用することもできますPAR。これにより、perl インタープリター、ソース ファイル、および依存関係を含む実行可能なアーカイブが作成されます。これらのアーカイブは、全体が含まれているためサイズが大きくperlなります。perl のバージョンを指定すると、残りの変数はホスト オペレーティング システムだけになります。これはホストからの perl インストールを再利用しないことに注意してください。

于 2013-10-17T15:18:52.033 に答える
0

しかし、コンパイルされたコードはどうすればよいのでしょうか?

$arch 固有のディレクトリにインストールされたコードは、同じバージョンまたは同じバージョンのそれ以降のメンテナンス リリースでのみ動作します (たとえば、5.14.1 でインストールされた arch 固有のモジュールは 5.14.2 では動作しますが、5.14.0 または 5.16 では動作しません)。 . これらは、同じ構成の Perl でのみ機能します。彼らのマシンで Perl を制御しない限り、これはうまくいかないでしょう。

彼らはマシン上で見つけたものと一緒に生活しなければなりません

それでも、あなたは自分のマシンに追加する方法を尋ねています。どちらですか?

于 2013-10-17T13:29:33.413 に答える