ビルド済みの Perl モジュールを配布するにはどうすればよいですか? また、どのバージョンの Perl に合わせてビルドすればよいですか?
-
24-09-2019 - |
質問
これはおそらく複数の部分からなる質問です。背景:アプリケーションの一部であるネイティブ (C++) ライブラリがあり、SWIG を使用してこのライブラリの Perl ラッパーを生成することができました。この Perl モジュールをアプリケーションの一部として配布したいと思います。
最初の質問は、このモジュールをどのように配布すればよいでしょうか?事前に構築された Perl モジュールをパッケージ化する標準的な方法はありますか?ActiveState ディストリビューション用の ppm があることは知っていますが、これを Linux システム用に配布する必要もあります。配布にどのようなファイルが必要なのかさえわかりませんが、少なくとも pm などのファイルではないかと思います。
次の質問は、サポートしたい Perl のバージョンごとにモジュール プロジェクトを構築する必要があるようです。どの Perl バージョンに合わせてビルドすべきかを知るにはどうすればよいですか?標準的なガイドラインはありますか...それとも、複数のバージョンの Perl で動作するパッケージを構築する方法があるでしょうか?
私の質問が意味をなさない場合は申し訳ありません。私は Perl のコンパイルされたモジュールの側面についてはかなり初心者です。
説明:基礎となるコンパイルされたソースは 独自の (クローズド ソース) なので、ソース コードとパッケージの適切な Make アーティファクトだけを出荷することはできません。そうできればいいのですが、この場合はそうはいきません。したがって、モジュール用に事前に構築されたバイナリ ファイルをパッケージ化するための適切なスキームが必要です。
解決
私はDBD :: Informixの、DBI(Perlのデータベースインターフェイス)で動作するPerlのデータベースドライバモジュールの一つの世話します。 IBMは、Informix Dynamic Server(IDS)への接続に使用しているライブラリは、独自のですが、DBD :: Informixのコード自体ではありません。私は他のPerlモジュールとちょうど同じ、CPANにそのコードを配布します。人々はそのソースをダウンロードし、(彼らはInformixのClientSDKが自分のマシンにインストールされていることを提供する - とPerlとDBIなど)をすることができます。、彼らは彼らのインストールPerlでの作業にDBD :: Informixのを構築することができます。
私はあなたのPerlインタフェースコードは、それがとインターフェースすることをライブラリが独自であっても、ソース形式で利用可能にすることを手配することを強く助言だろう。これは、人々は、彼らが持っているのPerlのいずれかのバージョンのコードをインストールすることができます - 。矛盾に対処するためにあなたを必要とせずに、
それでもバイナリサポートを提供したい場合は、、あなたがサポートしたいプラットフォームうまく、このような各プラットフォーム上のPerlの標準バージョンでモジュールをビルドする必要があるとしています。これは厄介な取得します。あなたは、各マシンのインスタンスにアクセスする必要があります。確かに、仮想マシンは、これが容易になりますが、それは骨の折れるまだあるとプラットフォームとバージョンの数だけ成長します。しかし、あなたはまだ自分のマシン上でのPerlの標準バージョンを使用していないサポート人々に必要 - 。ソース形式で提供することが、なぜPerlのラッパーインタフェースのニーズです。
他のヒント
免責事項: 私には、簡単にインストールできるバイナリ パッケージを作成した経験がほとんどありません。したがって、他の人がアドバイスを追加しやすいように、この投稿を CW にしています。
ディストリビューションをソース形式で利用できるようにして、各システムでそのシステムの仕様に合わせてコンパイルできるようにする必要があります。本当に好きです モジュール::ビルド その目的のために。
Windows 上の ActiveState ユーザーの場合、サポートするかどうかに応じて、おそらく 4 つまたは 6 つの PPM が必要になるでしょう。 5.6
. 。それぞれについて 32 ビット バージョンと 64 ビット バージョンの両方をパッケージ化する 5.6
, 5.8
そして 5.10
. 。のバージョンを使用してください mingw
を使用してインストールできます ppm
バイナリ互換性を維持するためにモジュールをコンパイルします。
別のオプションを使用することもできます PAR::パッカー アプリケーションを PAR アーカイブで配布します。その文脈では、 PAR::WebStart 試したことはありませんが、役立つかもしれません。ただし、私は過去に PAR アーカイブで成功しました。