2009-11-17 96 views
3

嘿,我是新来的MacPorts的东西,因为我最近改用Mac电脑。因为我正在考虑在我的Mac中开发一些应用程序,我想要所有常用的gnu和开源工具。但我有一个小混乱。我正在用macports安装git,并且我注意到它安装了很多像Perl这样的包,我已经在我的机器上了。所以我在想没有任何冲突,以及如何知道使用哪个版本。 macports一个还是苹果一个?MacPorts的混乱

回答

9

MacPorts将其所有端口安装到/opt/local(或者您配置的任何前缀,但默认为/opt/local)。它安装自己的Perl,Python等副本,以便MacPorts的安装是标准化的,并且为了避免冲突(苹果公司提供的一些程序,如Perl和Python,以及一些库的版本,往往远远落后于最新版本的那些工具)。

当您安装使用MacPorts,它自动会预先/opt/local/bin$PATH变量(您可以通过编辑你的shell配置文件改变这一点),因此,如果调用perl等等,你会得到的MacPorts版本。但是,Apple提供的版本仍然保持不变,并且依赖于这些版本的其他程序也不会受到影响。

+5

一个警告是:如果你在你的$ PATH首先将/ opt/local/bin目录,以便MacPorts的版本的优先级,要知道,有*可能*是MacPorts的版本和苹果提供的一个之间的差异。我过去一直被烧掉的一个具体和潜在的关键示例是'rsync',它被MacPorts'git-core'软件包依赖。不幸的是,MacPorts rsync -aE选项与Apple rsync -aE选项不同:扩展属性和资源分支默默无视,这可能会在以后尝试使用复制的文件时导致令人不快的意外。 – 2009-11-18 00:49:45

1

MacPorts在/opt/local树中安装它自己的依赖关系(您可以在生成MacPorts时更改此默认设置),因为它的打包程序具有已知数量的测试对象。在某些情况下,对于给定的依赖关系,有一个系统包可让您使用系统安装的版本,但这实际上非常罕见。根据PATH(对于可执行文件)或动态库的链接程序路径中首先选择的系统与MacPort版本进行选择。使用标准开发工具的选项来选择合适的库链接,你应该没问题。

3

不应该有任何冲突,因为安装MacPorts的所有方案中/opt/local/一个完全独立的目录层次结构下。

如果您安装了多个版本的软件(例如默认的OS X Perl和MacPorts的Perl),那么它取决于您的环境变量$PATH中的目录顺序。 MacPorts的通常把它自己与它的bin目录早些时候在你的路径,所以说perl在命令行中会调用的MacPorts的Perl,而不是OS X的Perl。