4

これはおそらく複数の部分からなる質問です。背景:アプリケーションの一部であるネイティブ(c ++)ライブラリがあり、SWIGを使用してこのライブラリのperlラッパーを生成することができました。このperlモジュールをアプリケーションの一部として配布したいと思います。

私の最初の質問-このモジュールをどのように配布すればよいですか?ビルド済みのperlモジュールをパッケージ化する標準的な方法はありますか?ActiveStateディストリビューションにppmがあることは知っていますが、これをLinuxシステムにも配布する必要があります。配布に必要なファイルすらわかりませんが、少なくとも午後のファイルだと思います。

次の質問-サポートしたいperlのバージョンごとにモジュールプロジェクトをビルドする必要があるようです。どのperlバージョンをビルドする必要があるかをどのように知ることができますか?標準的なガイドラインはありますか...それ以上に、perlの複数のバージョンで動作するパッケージを構築する方法はありますか?

私の質問が意味をなさない場合は申し訳ありません-私はperlのコンパイルされたモジュールの側面にかなり慣れていません。

明確化:基盤となるコンパイル済みソースはプロプライエタリ(クローズドソース)であるため、パッケージのソースコードと適切なmakeアーティファクトを出荷することはできません。できればいいのですが、この場合は起こりません。したがって、モジュール用にビルド済みのバイナリファイルをパッケージ化するための適切なスキームが必要です。

4

2 に答える 2

2

DBI (Perl Database Interface) で動作する Perl Database Driver モジュールの 1 つである DBD::Informix の世話をしています。IBM Informix Dynamic Server (IDS) への接続に使用される基礎となるライブラリは独自のものですが、DBD::Informix コード自体はそうではありません。他の Perl モジュールと同じように、そのコードを CPAN で配布しています。人々はそのソースをダウンロードでき、(マシンに Informix ClientSDK がインストールされていて、Perl と DBI などがインストールされている場合)、DBD::Informix をビルドしてインストール済みの Perl で動作させることができます。

Perl インターフェイスのコードがソース形式で利用できるように手配することを強くお勧めします。それがインターフェイスするライブラリはプロプライエタリです。これにより、所有している任意のバージョンの Perl でコードをインストールすることができます - 不整合に対処する必要はありません。

それでもバイナリ サポートを提供したい場合は、サポートしたいプラットフォームを決定し、そのようなプラットフォームごとに標準バージョンの Perl でモジュールをビルドする必要があります。これはぐちゃぐちゃになります。各マシンのインスタンスにアクセスする必要があります。確かに、仮想マシンはこれを容易にしますが、それでも手間がかかり、プラットフォームとバージョンの数は増えるばかりです。しかし、自分のマシンで標準バージョンの Perl を使用していない人をサポートする必要があります。そのため、Perl ラッパー インターフェイスをソース形式で提供する必要があります。

于 2010-03-21T06:45:54.830 に答える
1

免責事項: 簡単にインストールできるバイナリパッケージを作成した経験はほとんどありません。したがって、他の人がアドバイスを追加しやすくするために、この投稿をCWにしています。

システムの詳細に応じて調整された各システムでコンパイルできるように、ディストリビューションをソース形式で利用できるようにする必要があります。私はその目的のためにModule::Buildが本当に好きです。

WindowsのActiveStateユーザーの場合、サポートするかどうかに基づいて、おそらく4つまたは6つのPPMが必要になります5.6。、、およびのそれぞれについて5.6、32ビットバージョンと64ビットバージョンの両方をパッケージ化します。バイナリ互換性を維持するためにモジュールをコンパイルするために使用してインストールできるバージョンを使用してください。5.85.10mingwppm

もう1つのオプションは、PAR :: Packerを使用して、アプリケーションをPARアーカイブに配布することです。その文脈では、私は試していませんが、PAR::WebStartが役立つかもしれません。しかし、私は過去にPARアーカイブで成功を収めてきました。

于 2010-03-05T18:14:08.660 に答える