新雪豹用户的Perl策略?

新雪豹用户的Perl策略?,perl,osx-snow-leopard,macports,fink,Perl,Osx Snow Leopard,Macports,Fink,我要买一台新的iMac。这是我的第一台英特尔mac电脑,大概会和雪豹一起出现。其他用户会推荐什么作为在这台机器上安装和使用perl的正确策略 我知道我已经读到一些关于Leopard附带的Perl版本(或者是CPAN版本?)的抱怨,尽管快速的google并没有提供太多 我假设一个好的策略是不使用系统perl,而是安装我自己的系统,但是您会使用什么呢?Fink,Macports,也许是Mac的XAMPP 对于以前没有在Intel Mac上使用Perl的人,有什么特别的窍门吗 我并不是一个真正的高级开

我要买一台新的iMac。这是我的第一台英特尔mac电脑,大概会和雪豹一起出现。其他用户会推荐什么作为在这台机器上安装和使用perl的正确策略

我知道我已经读到一些关于Leopard附带的Perl版本(或者是CPAN版本?)的抱怨,尽管快速的google并没有提供太多

我假设一个好的策略是不使用系统perl,而是安装我自己的系统,但是您会使用什么呢?Fink,Macports,也许是Mac的XAMPP

对于以前没有在Intel Mac上使用Perl的人,有什么特别的窍门吗


我并不是一个真正的高级开发人员,但我有很多实用程序脚本和MySQL数据库应用程序,它们运行在我想保留的旧机器上,我的主要工作是web开发

IMHO,最好不要在任何操作系统上使用系统perl,而是自己安装。在MacOS X上,我一直很幸运,只是下载了源代码并编译了它。(这需要安装MacOS X开发者工具才能获得gcc和其他东西;默认情况下没有安装。)

如果你像我一样,你无论如何都要安装(我用它来安装mutt、colordiff、fetchmail+ssl等),这意味着你将在/opt/local/bin/perl中安装第二个perl,这也将导致大量cpan模块被添加到/opt/local/lib。这些将与系统perl(安装到/system/Library中)完全分离。由于macports默认只安装perl 5.8.9(至少,这是我在安装了大量macports发行版后通过依赖项得到的结果),而且Apple仍在将perl5.10.0与10.6.2捆绑在一起,因此您可能希望在其他地方安装第三个perl(版本5.10.1)。现在事情开始变得复杂了

看看这个问题,特别是brian d foy的答案。他讨论了安装多个PERL和管理其模块的策略

对我来说,除了5.8.9和5.10.1之外,我看不到其他版本的需要,所以我只是从源代码直接下载/安装了5.10.1到/usr/local/lib和/usr/local/bin(即
/Configure-de-Dprefix=/usr/local
),其中我的路径使用顺序/usr/local/bin:/opt/local/bin:/usr/bin。我不会对系统进行任何修改:苹果将根据内部系统的需要更新组件。此外,我不会对macports perl进行任何(手动)修改:在安装新工具时,将通过依赖项下载和安装新模块。我的路径顺序将确保“cpan”命令不会影响这些安装(除非我先更改一些其他配置变量)。我将只使用/usr/local中的版本进行自己的开发,并通过CPAN直接管理其模块

(我还没有在我的新系统上安装fink,但是如果我安装了,我将以与macports perl相同的方式对其进行管理:将其保留在/usr/local/bin之后的路径中,并且它将仅通过安装依赖项进行更新。)

关于默认系统,请参阅


在使用Mac OS X和perl多年后,我提出了一个简单的三部分计划:

  • 从源代码编译
  • 安装在
    /usr/local
  • 切勿触摸系统
学习它。我知道。活下去

哦,好吧,我试着解释一下。触摸系统perl是个坏主意,我希望有明显的原因。苹果的应用程序、第三方应用程序和操作系统本身都希望系统perl的行为与系统perl类似,有时甚至与系统perl完全相同。举一个例子,iTunes安装程序曾经包含一个perl脚本,其中包含如下代码:

if ($foo EQ $bar) {
    ....
}
是,
EQ
而不是
EQ
。信不信由你,这在许多旧版本的perl中都有效,但在我年轻时安装在系统版本之上的新版本perl中却不起作用。结果是我双击iTunes安装程序,实际上什么都不会发生。(嘿,可能是的。)

我们可以谈论苹果当时编写perl代码的猴子(现在质量是否更好),但底线是
/System
是苹果的领域。(多么热门。)

另一方面,苹果长期以来一直承诺不会在
/usr/local
中放置任何东西,同样重要的是,在系统更新过程中不会触摸任何东西。这是你的安全区。在那里安装perl,在那里安装CPAN模块所需的库,等等

最后,为什么要从源代码构建?为什么不使用包管理器呢?这似乎只是一个脾气暴躁的老人的推理,但我更愿意把它看作来之不易的智慧。MacOSX没有一个主要的软件包管理系统,更不用说正式的/内置的了。所有的第三方软件包管理器和我使用过的每一个软件包管理器都有相同的问题:有时你想要的软件没有打包,有时它没有按照你想要的方式打包,有时它只是简单地损坏了,除从源代码构建一些软件外,还试图安装软件包,这将导致灾难

唯一可行的“统一”方法是从源代码构建所有内容。如今,几乎所有常用的Unix软件都是在Mac OS X上构建的,而无需任何特别的努力。(许多Unix开发人员现在使用MacOSX作为他们的个人系统,这很有帮助。)通常只需卸载、配置、制作、安装。您甚至很少需要指定
/usr/local
作为目的地;这是大多数软件的默认设置


这样就有了:从源代码编译。安装在
/usr/local
中。切勿触摸系统。您不会后悔的。

雪豹附带的默认Perl非常好。我