Answers:
它们不会很好地共存。Apple gcc在/ usr / local中查找某些内容。这意味着macports编译器可以找到搬运工不期望的内容。有关在/ usr / local中发现的问题的示例,请参见macports邮件列表和错误。
我对类似的问题给出了另一个答案:
如果自制软件安装在/ usr / local下,则从源代码构建软件时会引起问题。这是默认设置,这是一个错误的选择,因为此路径位于编译器和其他工具的默认搜索路径中。因此,使用Homebrew的版本而不是其自身版本,从其他打包软件进行的构建可能会选择错误的依赖项。
多年前,在项目的开始,甚至MacPorts都使用/ usr / local。但是事实证明,不像其常见问题解答中所述与其他工具合作。不幸的是,自制软件开发人员不想听到以前的经历,而忽略了这些事实……
通常,最好只使用一种工具以避免所有问题。MacPorts会尽力修补所有已编码的路径,例如Fink使用的/ sw。因此通常它可以工作,但是在/ usr / local中安装任何东西肯定会引起问题。
[…]
~/.homebrew
。如果安装在MacPorts上,它仍然会干扰MacPorts吗?
我曾经认为,对Gnu构建工具的功能感到担心的/usr/local
是偏执狂。构建工具期望那里有很多东西:在包管理器(我开玩笑)之前的美好时光里,我们编译了任何东西/usr/local
。但是,尽管Autoconf通常会解决问题,但许多开源项目的纯粹构建复杂性确实会引起问题,并且当您遇到困难时,这些问题可能很难消除。
但是/usr/local
需要平衡一下Autoconf遇到麻烦的风险,因为在维护麻烦上有两个,三个或四个不同的Perl,Tcl和Ruby不同的副本,每个副本都覆盖了不同的包库,这需要平衡。不愉快。
由于我在MacPorts和Fink方面的经验通常是由于这一原因而激怒,并且有时切换到编译老式的方式/usr/local
,所以我很高兴看到Homebrew对此并没有感到困惑。我尝试将MacPorts配置为安装到/usr/local
,但MacPorts竭尽全力使其变得困难。我了解,这样做的动机是在与他们的邮件列表和错误跟踪器联系时,为他们自己的生活提供便利:但是请注意,尽管我们应该尊重志愿者打包人员的工作并将他们的时间视为宝贵,作为用户,调试便利并不是唯一会影响您的简单性。
至少在这方面,自制软件以过去的方式进行操作,而MacPorts则尽量不进行干预。如果您愿意使用Homebrew记录所需的软件包,并在遇到困难时擦拭/ usr / local并重新安装,那么万一出现严重错误,您可以随时退出。并且,一旦您意识到/ usr / local中的问题通常不会带来对计算机造成永久性损坏的风险,那么您可能会更乐于承担风险。
我只想指出OSX上的包装要比FreeBSD差得多:Apple似乎并不真正在乎其BSD子系统的可用性,因为这是他们可以解决的问题。
/usr/local
无穷无尽。体系结构,版本,已配置的功能和标志,部分安装,过时的安装以及安全问题,并且和会引起问题。当然,如果您知道自己在做什么,请继续,但不要提出有关此问题的错误。经验表明,人们仍然会提交错误,这恰恰是-t
存在跟踪模式(,请参见下文)的原因以及为什么避免/usr/local
作为默认建议的原因。
请注意,从2.3.0开始,MacPorts可以从端口的构建系统中自动隐藏/ usr / local(以及端口不依赖的所有其他文件)。此功能称为跟踪模式,通过向端口提供-t标志来激活该功能,例如
sudo port -t install <portname>
这很重要,因为根据Homebrew安装页面:
Homebrew相对于竞争对手而言才有效的原因之一是因为我们建议安装到/ usr / local。在危险中再选择一个前缀!
因此,以很少的个人经验,我得出的理论是,对于MacPort安装始终使用-t标志应该可以避免MacPorts和Homebrew在同一系统上共存的大多数问题。要解决您的最后一个问题:卸载MacPorts不会引起任何问题,我看不出任何原因。
webappzero的sudo port -t ...
解决方案应该有所帮助。坦白说,我同时使用Fink,MacPorts和Homebrew,并始终遵循MacPorts(现在无论如何),并且仅使用其他两个中的任何一个来安装我无法从MacPorts获得的东西。即使在学习port -t
技巧之前,我也很少遇到这种困难。但是,如果您尝试使用多个程序包管理器来维护复杂的开发和服务器环境,则可能至少会感到不舒服。选择一个,并避免其他,但对于您迫切需要的东西,将主要的放在前面。
如果我听到的关于苹果公司的事情是对的,那么除了苹果公司自己的东西之外,苹果公司将禁止将其安装到/ usr /中(或者也许他们已经在El Crapitan中这样做了,我避免将它升级到更高版本)问题得到解决),我想这将在Homebrew默认使用其他方法后缓解该问题-无论我们是否同意Apple的笨拙方法。
最后,我喜欢将Apple自己的端口限制在其自己的树中的想法,我只是希望它不是/ usr /。我希望他们使用/ System / bin /等来隔离自己的东西,因此我可以更轻松地使用社区维护的最新软件绕过它。