1

我正在为我当前的项目集成一些现有的“遗留”Perl 代码。我正在通过 CPAN 下载一些库以在 Perl 脚本中使用,但我想避免让所有其他开发人员/用户手动安装这些库。从我的 Ruby/Rails 背景中获取一个页面,我认为可以将依赖项“解包”到受版本控制的本地目录,然后从那里加载库。优点是(1)没有人必须手动安装特定的包,(2)你知道每个人都有相同的版本,并且可以轻松地更新那个版本。

我尝试了简单的方法,只是将安装文件移动到./vendor/Perl/Pod/./vendor/Perl/DBD/./vendor/Perl/Win32/等并进行了@INC相应的调整。这对某些图书馆来说很好,但对其他图书馆则不然。我猜编译的库会导致问题以及依赖关系。

是否已经有解决方案可以为我解决这个问题?它的核心是我不想手动管理开发人员或用户之间的依赖关系(我们现在必须这样做)。

我对 Perl 不是很熟悉,所以我提前为我的无知道歉。

4

2 回答 2

4

我会为此使用local::lib。它为您设置环境变量,然后您可以正常安装 CPAN 模块并将它们安装在本地目录中。

然后只需与其他开发人员共享环境变量。

编辑

您评论说不同的用户使用不同的操作系统。编译后的模块需要为每个系统重新编译。

我仍然建议使用 local::lib。将它与您的项目的生成文件结合起来,该文件将安装您需要的依赖项。(假设 Windows 用户使用 Strawberry Perl)

于 2010-02-17T16:19:06.827 回答
2

当前目录是模块搜索路径的一部分。因此,您可以将模块直接放入项目的树中。问题是.要搜索的目录列表中的最后一个。因此,如果系统上安装了某个模块的另一个版本,您将获得意外的升级/降级。这显然是不可取的。

幸运的是,有很多方法可以解决这个问题。你可以:

于 2010-02-17T16:20:18.900 回答