Amb*_*pel 4 perl macports fink osx-snow-leopard
我即将推出新的iMac.这是我的第一台英特尔Mac,可能会配备Snow Leopard.其他用户推荐什么作为在这台机器上安装和使用perl的正确策略?
我知道我已经阅读了一些关于Perl的版本(或者它是CPAN的版本?)的一些投诉,尽管快速谷歌没有提供太多.
我假设一个好的策略是单独留下系统perl并安装我自己的,但你会用什么?Fink,Macports,也许XAMPP for Mac?
以前没有在Intel Mac上使用Perl的人有什么特别的陷阱吗?
我不是一个强大的开发人员,但我有很多实用程序脚本和MySQL数据库应用程序,它们在我想要保留的旧机器上运行,我的主要工作是Web开发.
在使用Mac OS X和perl多年后,我提出了一个简单的三部分计划:
/usr/local学习它.知道.住它.
...
哦,好吧,我会试着解释一下.触摸系统perl根本不是一个坏主意,我希望是明显的原因.Apple的应用程序,第三方应用程序和操作系统本身都希望系统perl的行为与系统perl 类似- 有时与系统perl 完全相同.举一个例子,iTunes安装程序一度包含一个perl脚本,其中包含如下代码:
if ($foo EQ $bar) {
....
}
Run Code Online (Sandbox Code Playgroud)
是的,EQ而不是eq.信不信由你,这实际上适用于许多旧版本的perl - 但是在新版本的perl中我并没有在我年轻的天真中安装在系统版本之上.结果是我双击iTunes安装程序,几乎没有任何事情发生.(嘿,它可能会更糟糕.)
我们可以谈谈苹果公司当时编写perl代码的猴子种类(现在质量好了)但最重要的/System是Apple的领域. 试图没有降落在那里.(多么热门.)
另一方面,Apple长期以来承诺不会放任何东西/usr/local,同样重要的是,不要触摸系统更新期间的任何内容.这是你的安全区.在那里安装你的perl,CPAN模块所需的库等等.
最后,为什么要从源代码构建?为什么不使用包管理器?这可能看起来像是脾气暴躁的老人推理,但我更愿意将其视为难得的智慧.对于Mac OS X,没有一个主流软件包管理系统,更不用说官方/内置软件包管理系统了.所有各种第三方软件包管理器的配备为每包管理器,我用了同样的问题:有时你想要的软件是不是打包,有时不是打包你希望它是这样,有时它只是普通的破除了从源代码构建一些软件之外,尝试安装软件包也是一种灾难.
唯一可行的"统一"方法是从源头构建一切.目前,几乎所有常用的Unix软件都是在Mac OS X上构建的,没有任何特别的努力.(现在有很多Unix开发人员使用Mac OS X作为他们的个人系统,这很有帮助.)它通常只是解压缩,配置,制作,安装.你甚至不需要指定/usr/local目的地; 这是大多数软件的默认设置.
所以你有它:从源代码编译.安装进来/usr/local.切勿触摸系统perl.你不会后悔的.
如果你像我一样,你将会安装macports(我用它来做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模块?.他讨论了安装多个perls和管理其模块的策略.
对我来说,我看不出需要5.8.9和5.10.1以外的版本,所以我只是将源码中的5.10.1直接下载/安装到/ usr/local/lib和/ usr/local/bin(即./Configure -de -Dprefix=/usr/local),我的PATH使用命令/ usr/local/bin:/ opt/local/bin:/ usr/bin.我不会对系统perl做任何修改:Apple将根据内部系统的需要更新组件.此外,我不会对macports perl进行任何(手动)修改:在安装新工具时,将通过依赖项下载和安装新模块.我的PATH的顺序将确保'cpan'命令不会触及这些安装(除非我先更改其他一些配置变量).我只会使用/ usr/local中的版本进行自己的开发,并直接通过CPAN管理其模块.
(我还没有在我的新系统上安装fink,但是如果我这样做,我会将它与macports perl相同地管理:稍后将它保存在我的PATH中,而不是/ usr/local/bin,它只会通过安装进行更新依赖关系.)
关于默认系统Perl破坏事物,请参阅