我发布this question为Perl寻找类似于Buildout的内容。我认为Shipwright是我正在寻找的,但我不太确定。我玩过它,我创建了一个项目,导入了我的所有源代码和依赖项,然后我将所有内容导出到一个容器中,然后文档类型就停止了。我如何处理造船厂的船只?我是否在船上进行实际的开发工作,还是在船厂进行开发?我假设这艘船仅用于部署,但我如何实际将船只部署到网络服务器上(比如我正在使用linux,apache和直接运行cgi)。
Shipwright对我正在努力完成的事情是正确的吗还是还有其他更合适的东西?理想情况下,我可以使用Shipwright,类似于我如何使用Buildout。我使用Buildout为我的开发创建一个漂亮的隔离环境,并且在部署到实时服务器时使用Buildout来管理我的所有应用程序的依赖项。
编辑:以下是我希望能够在Perl中使用Buildout做些什么的亮点。
使用Buildout,我的代码库中有一个列出依赖项的文件(Perl可以是CPAN模块或其他源代码库)。我可以运行一个引导脚本,它将获取所有这些依赖项并将它们放入我项目中的目录中,并且不在系统级别安装它们。 Buildout还创建了可以执行任何操作的实用程序脚本(运行测试,其他命令行工具,任何实际操作),并且这些脚本显式地将依赖项添加到路径中,以便在我的脚本运行时可以导入所有依赖项。
这真正做得非常好,它允许我管理我的依赖项,而无需在系统级别安装任何东西。这使得从一个版本更改为另一个版本非常容易。此外,它允许我使用同一模块的不同版本在同一系统上运行多个Buildout项目。最后,一个巨大的好处是,使用Buildout的目录结构,我可以将依赖项提交到源代码控制并部署到新机器,我只需要执行检出,并且所有依赖项都已满足,而无需触及安装在系统级别。
答案 0 :(得分:3)
我认为你不会发现任何与Perl中的Buildout完全相同的内容,但是你可以将一些可以解决这个问题的东西放在一起。
您可以使用Module::Build的标准Build.PL脚本来管理依赖项并拥有运行测试的命令等。
然后,您可以使用cpanminus将这些依赖项安装到本地(非系统)目录中。
然后,您可以使用Shipwright使用这些现在本地的依赖项来捆绑和部署项目。