我应该选择 ActivePerl 还是 Strawberry Perl 用于 Windows?

121

我完全不了解Perl,但我想试试。我了解到Windows平台有两个竞争的发行版可用(我猜其他操作系统上只有Perl :)

维基百科Strawberry Perl配备了额外的开发工具,以编译CPAN模块,如果需要的话。对我来说这听起来很好。

它还说,ActivePerl有许多预打包模块,可以通过PPM更轻松地安装。这也听起来很不错!

这两者之间存在明显的权衡。我在想:我应该选择哪一个开始?如果我选了其中一个,要迁移到另一个有多难?


我试用了两个发行版几个星期。事实上,我都喜欢,这是件好事! 使用这两个都不会出错。 最终,我选择了ActivePerl,仅仅因为它带有离线文档(HTML格式)-对于那些经常外出或总是没有联网的人来说,这是一个巨大的生命救援!在我度假期间,我很容易就开始使用Perl语言,因为我并不总是联网。

Strawberry Perl至少和ActivePerl一样好,甚至更好。所以我完全可以推荐它。我必须说只要去学习Perl——这是一种非常美丽的语言。试试看吧!


4
据我所知,perldoc 自带草莓的文档,因此可以离线查阅所有文档。 - Stephane Chazelas
2021年更新:PPM已从ActivePerl 5.28中移除,并且将不再为之前版本的ActivePerl构建许多软件包。因此,所有因为方便的软件包管理器而选择ActivePerl的人将不得不寻找其他好的理由。如今,ActivePerl需要使用CLI State Tool进行安装,看起来有些繁琐。而且,您需要支付96美元/年才能获取旧版本的Perl。 - undefined
10个回答

51

Strawberry Perl使用CPAN,这意味着您的模块都是最新的。当有新的东西添加到CPAN时,您立即可以访问它们。Strawberry Perl还附带有MinGW,这意味着Strawberry Perl可以直接从CPAN使用相当多的XS模块而不需要任何修改。MinGW发行版附带了gccmakeld和其他工具,以帮助您构建模块。我认为Strawberry Perl还附带了一些允许您安装PPMs(Perl软件包管理器文件)的模块。

ActivePerl使用自己的格式称为PPM(Perl软件包管理器)来安装模块。正式的存储库由ActiveState托管。您可以找到大多数流行模块的PPM,所以除非您正在寻找一个晦涩或真正新的软件包(因为PPM通常滞后于CPAN),否则您不应该有任何问题。虽然比CPAN模块更容易安装,但PPM专门为Windows创建,因此某些CPAN模块将无法工作(因为它们执行Unix特定的操作)。

我以前都用过,对大多数情况似乎都可以工作。但是我更倾向于使用Strawberry Perl,因为它的环境更接近Unix,所以不会有太多兼容性问题。另一方面,ActivePerl是专门为Windows制作的,因此可以很好地在Windows上运行。

另一种选择是安装Cygwin和附带Cygwin的Perl。我以前做过这样的事情,效果还算不错。您还可以访问CPAN。

选择最适合您的选项。


43

稍微补充一下Vivin Paliath的有益回答:

ActivePerl / PPM 优点: 如果有您版本的PPM,它将简单易用。

ActivePerl / PPM 缺点: 并不总是会有PPM,或者至少没有最新的。

Strawberry Perl / CPAN 优点: 您的代码库是CPAN,而不是由第三方维护的一堆二进制文件。只要作者发布了新模块,您就可以使用,并且您使用的是作者预期的构建系统。

Strawberry Perl / CPAN 缺点: 并不能保证一切都能与Windows工具完美构建。

Strawberry Perl / CPAN 缓解因素: Strawberry开发人员非常努力地确保一切顺利进行,并尽可能为您提供尽可能多的CPAN内容。当模块被确定为麻烦点(难以在Windows上构建,但对其他流行模块/应用程序是必需的)时,他们要么与作者合作修复模块以使每个人都可以安装它,要么在特殊情况下应用自己的修复并将该模块捆绑到Strawberry Perl或Strawberry Perl Professional中。

我的首选是Strawberry Perl。我很欣赏ActivePerl尝试做的事情,但我认为它是开发过程中的瓶颈。在社区聚集并构建Strawberry Perl将Windows带入Perl生态系统的“第一世界”之前,它们是必要的,但现在不再必要。


37
经过多年的使用,我认为至少对我来说,ActivePerl是更方便的选择。ActivePerl中包含的PPM安装程序允许您添加其他PPM存储库,这将使您可以访问几乎所有有用的Perl模块,这些模块可在CPAN上获得,但已经为Windows系统准备和测试好了。对我来说,长期而言,这是一个更好(且更强大)的选择。即使是针对Apache HTTP服务器的Windows版本,也有一个预编译的mod_perl(2.0.4)ppm可用,它可以在与ActivePerl 5.12.1和Apache 2.2.15正常工作(对我而言)。
我想在尝试在Windows 7上安装DBI + DBD :: mysql后,我放弃了Strawberry Perl(在ActivePerl中这很简单;只需点击ppms并选择安装)。
但也许现在已经解决了这个问题。也许可以选择安装Strawberry Perl的目录(我做不到)。
顺便说一下:要编译自己的内联或XS文件,只需通过ppm安装MinGW编译器(我没有这样做,但看起来很有趣)。

补充: 在阅读下面的评论后,我再次检查了草莓版Perl,并且现在可以更改安装目录,这是5.12.0版本的一个标志性功能(也是实际版本)。这将解决草莓版Perl(与ActivePerl相比)的一个重要(依我看)劣势。


6
ppm也适用于草莓版本,并且DBD::mysql已包含在草莓安装程序中。此外,您可以将Strawberry 5.12.x安装到任何目录中。 - Alexandr Ciornii
1
是的,Strawberry安装目录可以放在任何地方,除非它包含空格或非ASCII字符。 - CDuv
8
去年的某个时候,ActivePerl将许多方便获取的PPM仅限于通过购买Business或Enterprise版本的软件包管理器来获取。对于那些需要免费解决方案的人来说,重新考虑使用Strawberry可能是值得的。 - k-den
5
谢谢你提供的信息。自从Perl 5.16以后,我就放弃了使用AP,也没有回头看过它。但是它在过去几年里得到了显著发展和成熟。 - rubber boots

21

草莓Perl在其方法上更接近Unix,我一直很喜欢使用它。

然而,由于其自定义包管理系统,ActivePerl在我使用时一直是一个巨大的痛点。这在企业环境中很重要。

对于仅仅是随意尝试,我个人认为草莓Perl更好。/主观


16

这两者都很好,且功能相同。Strawberry Perl以能够构建XS模块而闻名,但如果你只需安装Visual Studio SDK (或免费的Express版本),也可以在ActivePerl上完成。

说到这一点,如果您有访问Visual Studio的权限,最好的做法是从源代码构建Perl(如果您阅读了README,这很容易),并使用相同的编译器持续构建您的模块。这实际上比混合使用编译器/模块更好。

如果使用ActiveState,您必须考虑一件事情:如果将其安装在面向互联网的服务器上,则需要购买Business许可证(根据Ron Warshawsky的说明,每台服务器每年1000美元)。这并不意味着它不会工作;这只是EULA中的要求。许多人并不知道这一点,并在未购买相应许可证的情况下将其安装在面向互联网的服务器上。


4
警告ActiveState不是免费的(与普遍观念相反)。+1 - Heinzi

4
如果你正确地设计你的应用程序,那么你选择哪个不应该成为问题。
一个重要的点可能是每个模块可以提供或不提供的各种版本。PPM包可能会落后于CPAN发布,但如果你不小心,最新的CPAN发布可能会破坏向后兼容性。此外,有时会有PPM包无法在Strawberry Perl下正确构建的情况(尽管这通常意味着模块设计得很差)。
只要注意使用任何模块的版本,你就应该没问题,无论你选择哪个。

4
在一个完美的世界里,我会选择debian-interixpkgsrc-interix Perl(不是Interix/SFU/SUA附带的古老Perl),因为它提供了最符合POSIX / UNIX标准的系统(包括真正的写时复制fork,而不是来自Cygwin的Windows fork仿真)。
过去我曾经使用过(并且在这里的Windows机器上安装了它),但并非每个人都能/愿意仅为Perl安装SFU/SUA。在这些情况下,我建议使用ActivePerl,主要是因为接口对于Windows用户来说更加熟悉(PPM图形化Shell与CPAN相比),以及它与Perl Dev Kit(PerlExe、PerlNET、PerlSvc和朋友们)的集成。
此外,与其他人回答的相反,如果需要,您可以使用CPAN(和CPAN shell)与ActivePerl一起使用(尽管这确实需要通过PPM先安装必要的开发工具)。

不幸的是,Interix(SUA)在Windows8中已被弃用:http://brianreiter.org/2011/09/15/sua-deprecated-in-windows-8/ - koppor

4

ActivePerl社区版排除了大量模块,并且在Windows下构建它们是一件真正的痛苦。

此外,他们只会让您免费下载和使用最新版本。其他所有内容,例如访问5.8.8或早期版本的模块,都需要购买商业版(每年1000美元/服务器)或企业版(按报价计算)。


3
如果Larry Wall使用草莓Perl,那么你也应该使用。 ;)

2
如果您正在使用box.com客户端同步文件,那么您可能希望(至少目前)选择Strawberry Perl。ppm可执行文件与Box.com DLL文件之一发生冲突。GUI将根本无法启动(导致Windows消息显示“perl...解释器已停止工作”)。当安装Box.com客户端时,我还遇到过使用命令行版本ppm的间歇性问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接