我应该如何分发预先构建的perl模块,以及我构建的perl版本是什么?

时间:2010-03-05 17:55:16

标签: perl swig perl-module

这可能是一个多部分的问题。背景:我们有一个本机(c ++)库,它是我们应用程序的一部分,我们已经设法使用SWIG为这个库生成一个perl包装器。我们现在想要将这个perl模块作为我们应用程序的一部分进行分发。

我的第一个问题 - 我该如何分发这个模块?是否有标准方法来打包预先构建的perl模块?我知道ActiveState发行版有ppm,但我还需要为linux系统分发这个。我甚至不确定需要分发哪些文件,但我猜它至少是pm等文件。

我的下一个问题 - 看起来我可能需要为每个我想支持的perl版本构建我的模块项目。我如何知道我应该为哪些perl版本构建?是否有任何标准指南......或更好的方法,构建一个可以与多个perl版本一起使用的软件包?

很抱歉,如果我的问题毫无意义 - 我对perl的编译模块方面还不熟悉。

澄清:底层编译源是专有(封闭源代码),所以我不能只为包提供源代码和相应的make工件。希望我能,但在这种情况下不会发生。因此,我需要一个合理的方案来为我的模块打包预先构建的二进制文件。

2 个答案:

答案 0 :(得分:2)

我负责DBD :: Informix,这是一个与DBI(Perl数据库接口)配合使用的Perl数据库驱动程序模块。用于连接到IBM Informix Dynamic Server(IDS)的底层库是专有的,但DBD :: Informix代码本身不是。我在CPAN上分发该代码,与任何其他Perl模块一样。人们可以下载该源代码,并且(如果他们在他们的机器上安装了Informix ClientSDK - 以及Perl和DBI等),他们可以构建DBD :: Informix来使用他们安装的Perl。

我强烈建议您安排您的Perl接口代码以源代码形式提供,即使它所连接的库是专有的。这允许人们使用他们拥有的任何Perl版本安装代码 - 无需您处理不一致。

如果您仍想提供二进制支持,则必须确定要支持的平台,并在每个此类平台上使用标准版本的Perl构建模块。这变得混乱。您需要访问每台计算机的实例。当然,虚拟机使这更容易,但它仍然繁琐,平台和版本的数量只会增加。但是你仍然需要支持那些不在他们的机器上使用标准版Perl的人 - 这就是为什么需要以源代码形式提供Perl包装器接口。

答案 1 :(得分:1)

免责声明: 我几乎没有创建可以轻松安装的二进制包的经验。因此,我正在发布CW这篇文章,以便其他人更容易添加他们的建议。

您应该以源代码形式提供分发,以便可以根据系统的具体情况在每个系统上进行编译。为此,我真的很喜欢Module::Build

对于Windows上的ActiveState用户,根据您是否要支持5.6,您可能希望拥有四个或六个PPM。为5.65.85.10中的每一个打包32位和64位版本。使用可以使用mingw安装的ppm版本来编译模块以保持二进制兼容性。

另一个选择是使用PAR::Packer并将您的应用程序分发到PAR存档中。在这种情况下,PAR::WebStart可能有用,尽管我没有尝试过。不过,我过去在PAR档案方面取得了成功。