MacPorts vs. Fink vs. Homebrew [重复]


39

这个问题已经在这里有了答案:

我一直使用MacPorts来安装和维护我的GCC编译器和其他程序。现在,我已经听说过芬克和自制啤酒。似乎这两个实用程序在Mac社区中正在普及,但我不了解它们之间的区别。

MacPorts,Fink和Homebrew之间的主要区别是什么?在质量或性能上有什么区别吗?


3
还有Rudix
lhf 2012年

4
请问这个年长问题满足您的需求?
bmike

Answers:


30

至少自2001年芬克芬克已经和周围的MacPorts是想成为“垂直”的制度,即包管理器,它们安装自己的版本pythonperl,库,编译器等,在自己的树(/ SW为Fink,对于MacPorts是/ opt / local)。这样做的原因是他们无法控制Apple使用其软件的功能,并且有时在Apple更新自己的产品时会破坏事情。

据我了解,Homebrew希望与系统进行更多的“集成”,使用Apple提供的库,并将其内容安装在/usr/local/bin其他标准文件夹中。我想这意味着Homebrew的软件选择更加有限,我无法想象有人可以在其中安装KDE,但是我还没有尝试过。

Fink与MacPorts的一点:几年前,Fink项目提供了二进制程序包。也就是说,您可以下载并安装软件包,而无需自己编译。它的程序包管理器仍然具有这种能力,只是很长时间没有二进制文件了。我不知道在此期间情况是否有所改变。

简而言之:没有二进制文件,Fink和MacPorts非常相似。与Homebrew相比,它们应具有更多可用的软件包,而出于上述原因,Homebrew应该占用较少的磁盘空间。关于质量:我从未安装过Homebrew,在Fink和MacPorts之间,我通常更喜欢我目前不使用的产品。

因此,如果您对MacPorts感到满意,那就坚持下去。

PS我从未尝试过Homebrew的原因是我使用了一些预编译的软件包。这些通常还会将自己安装到/ usr / local / bin等中,这只会引起麻烦。


我以为您对KDE一定是错的,但可以肯定的是,这是真的。它曾经有用于它的软件包,但是显然KDE的构建方式与Homebrew的层次结构不兼容。希望这一天能解决。
echristopherson 2012年

1
@echristopherson所以曾经有过KDE?给我一个惊喜 但是KDE似乎很脆弱,我曾经用Fink安装它,在下一次更新时,整个安装混乱了。因此,您可能希望Homebrew更加脆弱。但是,如果有一天他们做对了,我会收回我所说的一切。
Percival Ulysses 2012年

4
在/ usr / local中安装Homebrew的原因与我也不使用它的原因相同。坚持传统的unix哲学,只有应该将内容放在/ usr / local中。程序包管理器应管理其他一些前缀。
杰森

我个人使用MacPorts,但是最后我检查了一下(前一段时间),Fink有大量可用的软件包。
HairOfTheDog 2012年

1
@Jason对于单用户计算机也是如此吗?我刚刚安装了Homebrew,希望我不会后悔。但是我不太清楚Apple如何处理具有管理员特权的root和用户。我是系统上的唯一用户。
haziz 2012年

8

我要说的主要区别是:
天意,结果和分配方法。

最重要的细节将让您检查选择的系统是否包含所需软件的软件包。包裹数大约为:19k Macports,22k Fink,3k Homebrew,10k pkgsrc。

  • Macports,以前是Darwin ports,似乎是BSD风格的ports系统,例如pkgsrc,它可以获取源代码,对其进行修补,构建和安装。如果非常类似于pkgsrc,它将使用shell脚本执行此操作。它曾经依靠Xcode提供的工具,但是开始引起问题,所以现在它也可以引导gcc。此外,那里还有一些二进制软件包,但是您可能每次都找不到系统的最新版本。它来自达尔文,它是基于OS X内核的Apple开源BSD,已停止发行。它安装的软件包/opt/local可能不会被其他安装程序软件包或系统升级所影响。
  • 芬克(Fink)是查尔斯·达尔文(Charles Darwin)研究的主题,是一个基于Debian软件包管理器的软件包系统,这意味着它具有使用方便,dpkg并且apt-get主要的优点是可以可靠地找到二进制软件包。包含您当前OS版本的二进制文件的存储库。它也来自达尔文用户群,但是可能更受那些来自Debian Linux(用于Mac或PPC)的人的青睐,他们希望获得更稳定的硬件支持……持续下去。/sw出于不会覆盖或覆盖其他安装程序可能安装的内容的原因,它将软件包安装到其中。还有一些关于编译器搜索路径和默认PATH包含的内容/usr/local/bin
  • Homebrew在概念上是一种端口系统,但是用ruby编写。它不是来自独立的OS世界,而是供Mac OS X用户使用的(其他用户已被完全使用和测试)。截至2014年中,它尝试构建基本的每个程序包(它们称为公式),尽管有一些二进制形式(称为Bottles)可用,如果您倾向于使用半容器,则可以建立一个瓶子存储库以在您的社交团体中共享。 -标准化您和您朋友的工具链(其他系统的同上)。从好的方面来说,它使用的存储库可能与苹果提供的库数量一样多。我认为您不需要Xcode即可在大多数情况下运行,但是它“支持并推荐”了它。您可以将每个项目安装在其自己的前缀中,/usr/local我认为这是启动的,比其他的要新。我个人发现我最常使用此软件包,因为我很少需要相互依赖的软件包,而且我不清楚mac homebrew如何支持它。Homebrew的目的是迫使您对来自紧密耦合的管理器(例如cpan,gems等)的软件使用更合适的软件包管理器。
  • pkgsrc将可用于Mac OS X,具有二进制软件包,并且来自NetBSD,后者维护该软件包,然后基于FreeBSD的端口系统对其进行维护。NetBSD非常关注跨体系结构的可移植性,因此它可能也是开始支持其他平台的最佳候选端口系统。我的描述与Macport类似,但是我没有使用过(在NetBSD上除外),我认为它可以安装在中,/但可以在中构建和维护软件包/pkg。可能有很多软件包(例如12k),大约有20%的软件包可能无法构建,或者源的最新版本可能没有使用最新维护的补丁进行补丁。这就是为什么在这类系统中我偏爱二进制软件包的原因。

我还使用了perlbrew,它是perlrew的一种自制软件perl,内置于perl和一些依赖项中。这主要是维护多个版本的perl的好方法,并且方便地取消了对其他更通用的软件包系统的需求(出于其目的)。但是当然还有cpancpanminus

您可能会为自己的迷你环境找到类似的经理(例如vund代表vim,gem代表ruby,npm代表node.js,pypmpip代表python,go内置go install...等等?)


该包计数误导,因为自制故意不包括包装的某些类别-多见于apple.stackexchange.com/questions/32724/...
达恩·达斯卡莱斯卡

5

Fink和MacPorts是直接竞争对手,因为它们安装了正交系统。几年前,芬克在MacPorts上失去了相当大的基础。我不完全确定为什么会这样,但是MacPorts几乎可以处理所有问题。

现在,由于Mac OS X少了疯狂的裤子,我们没有理由进行正交安装。Brew是为了与Mac OS X更好地集成而创建的,从而使其更轻巧,正交性更小,并且还因为Rubyist重写了所有内容。

实际上,MacPorts有点复杂,但是MacPorts几乎总是可以工作,而Brew则更简单,但更有可能碰到砖墙。

问问自己这些问题:

  • 您是否使用许多Linux生态系统工具?
  • 您需要多个版本吗?
  • 您是否在尝试新工具?
  • 您使用数学/科学工具/图书馆还是其他非常规工具?

是的,建议您选择MacPorts。如果您安装相对较少的通用软件包,Brew的开销会更少,但是Brew不会处理复杂性。酿造污染/usr/local您可能也需要手动安装。实际上,MacPorts更详细的参数,但是如果您回答“否”,它们可能也不适用。

相反,如果您回答是,但是您的主计算机运行Linux,而Mac仅是运行最少Linux软件的玩具,那么实际上,使用Brew可能会做得更好。


2

但是,请注意,与Apple OS X相关的任何事情都不会将其自身安装到/ usr / local / bin中。他们在后台使用/ usr / lib,/ usr / bin,框架被打包到/ Library / Frameworks,而您通过常规Unix安装自己的东西./configure、make、make install将使用/ usr / local / bin等,以及MacPorts之类的实用程序将使用/ opt /,还可能将框架打包到您的个人〜/ Library / Frameworks /中。

我的建议是,如果您习惯使用MacPorts,请继续使用。基本上,主要的区别是MacPorts使用的系统与FreeBSD的端口更类似于真正的Unix / BSD端口树实现,而Fink使用从Linux Debian档案文件移植的应用程序,并使用与Linux Debian相同的软件包管理器系统。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.