所有的Mac OS X 10.6安装版本都默认安装了Perl吗?

8
在一个Mac OS X应用程序中,将调用一个Perl脚本(Markdown.pl),我需要知道所有Mac OS X 10.6及更高版本的安装是否默认安装了Perl。否则,我们将不得不将其打包到应用程序中。
这个是否已经确认,我能否安全地假设它?

我认为更重要的问题是 Darwin 提供哪个版本的 Perl。答案有几个。此外,我总是安装自己的版本。因此,在我的 Mac 上,我运行了所有 perl1、perl5.8.9、perl5.10.0、perl5.12.3、perl5.14.0 和 perl6(rakudo)。在其他平台上,我拥有更多版本,并保留了一个包含所有已发布版本的完整 Perl 源代码树。 - tchrist
6个回答

18

是的。

Mac OS X已经安装了Perl。 打开终端应用程序(在应用程序文件夹的实用程序文件夹中),运行perl -v以查找版本信息。 http://www.perl.org/get.html

根据正式的Snow Leopard规格,它带有Perl,PHP,Ruby,Rails

这个Apple讨论提到Perl (5.8.1) 是预装在OS X 10.6.x中的。
(最后一个是错误的,详情请参见本答案的评论)


@WTP:我找到了Snow Leopard的官方规格,列出了PERL(尽管没有提到版本)。已更新答案。 - Regexident
是的 - Perl 自 10.0 版本及之前就已经可用了,尽管版本号会有所变化,并且通常有些滞后,因为苹果只会在主要的 10.x 更新中更新到较新的 Perl 版本。Mac OS X 10.6 的所有小修订版都包含了 5.10.0 和 5.8.9。(曾提到 5.8.1 的人可能弄混了猫头鹰(Panther)和 Mac OS X 版本号。) - Sherm Pendley
顺便提一下,“10.0及之前”的意思是指开发者预览版,而不是“经典”的MacOS。在那些日子里,MacPerl是一个单独的下载。 :-) - Sherm Pendley
链接到Snow Leopard规格已经失效。 - Ole Tange

4

考虑到一些软件包使用Perl脚本进行卸载/安装,并且从未使用过没有Perl的Mac电脑,我认为这是一个相当安全的赌注。

甚至Perl的网站也这样说:http://www.perl.org/get.html


3

是的,我相信Snow Leopard附带了多个版本的Perl。


3
是的,5.10.0和5.8.9都有发布,后者预计是为了兼容不支持5.10版本的脚本。苹果从Jaguar升级到Panther的困难转换中吸取了教训,在此过程中他们从5.6版本升级到5.8.1,这导致很多XS模块出现故障。 - Sherm Pendley

3
虽然Mac自带Perl,但很明显他们没有花费大量时间去考虑它。最新的XCode 破坏了CPAN。因此,在这个问题得到解决之前,您可能需要坚持使用纯Perl模块或标准分发版。即使那时,那些不升级的人也将被困在残缺不全的Perl中。

更多细节:http://deflatermouse.livejournal.com/149721.html


幸运的是,应用程序需要调用的脚本不需要 CPAN。 :) - user142019
请注意,这两篇文章建议简单地构建自己的Perl,并避免使用系统Perl。好建议!经过多年尝试编写CamelBones以跟上系统Perl的步伐,我终于从头开始重新编写它,包括自己的Perl。 - Sherm Pendley
1
@Sherm,肯定有解决办法,但是不能指望用户愿意或者会使用它们。 - Joel Berger

2

1
$ /usr/bin/perl -V
Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
  Platform:
    osname=darwin, osvers=10.0, archname=darwin-thread-multi-2level
    uname='darwin neige.apple.com 10.0 darwin kernel version 10.0.0d8: tue may 5 19:29:59 pdt 2009; root:xnu-1437.2~2release_i386 i386 '
    config_args='-ds -e -Dprefix=/usr -Dccflags=-g  -pipe  -Dldflags= -Dman3ext=3pm -Duseithreads -Duseshrplib -Dinc_version_list=none -Dcc=gcc-4.2'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=define, use64bitall=define, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='gcc-4.2', ccflags ='-arch x86_64 -arch i386 -arch ppc -g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing -I/usr/local/include',
    optimize='-Os',
    cppflags='-g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing -I/usr/local/include'
    ccversion='', gccversion='4.2.1 (Apple Inc. build 5646)', gccosandvers=''
    intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='gcc-4.2 -mmacosx-version-min=10.6', ldflags ='-arch x86_64 -arch i386 -arch ppc -L/usr/local/lib'
    libpth=/usr/local/lib /usr/lib
    libs=-ldbm -ldl -lm -lutil -lc
    perllibs=-ldl -lm -lutil -lc
    libc=/usr/lib/libc.dylib, so=dylib, useshrplib=true, libperl=libperl.dylib
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
    cccdlflags=' ', lddlflags='-arch x86_64 -arch i386 -arch ppc -bundle -undefined dynamic_lookup -L/usr/local/lib'


Characteristics of this binary (from libperl): 
  Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
                        PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP USE_64_BIT_ALL
                        USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES
                        USE_PERLIO USE_REENTRANT_API
  Locally applied patches:
    /Library/Perl/Updates/<version> comes before system perl directories
    installprivlib and installarchlib points to the Updates directory
  Built under darwin
  Compiled at Jun 24 2009 00:35:27
  @INC:
    /Library/Perl/Updates/5.10.0
    /System/Library/Perl/5.10.0/darwin-thread-multi-2level
    /System/Library/Perl/5.10.0
    /Library/Perl/5.10.0/darwin-thread-multi-2level
    /Library/Perl/5.10.0
    /Network/Library/Perl/5.10.0/darwin-thread-multi-2level
    /Network/Library/Perl/5.10.0
    /Network/Library/Perl
    /System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level
    /System/Library/Perl/Extras/5.10.0

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