MacPorts,Fink和Homebrew的优缺点是什么?


154

我只是从Ubuntu Linux迁移到Mac,一切都是新的,并且我在重新学习很多东西。

在Linux上,我非常擅长管理软件包。我在Mac上搜索了一个替代产品,并找到了有关MacPorts,Fink和Homebrew的信息。

我将主要使用这台计算机来开发Ruby on Rails应用程序。

那么,它们之间有什么区别?有哪些优点和缺点?哪个维护得最好并且有更多软件包?


5
我修改了您的标题,使其与您的实际问题相符。在大多数Stack Exchange网站上,要求“最好”的问题都被拒绝。
卢瓦克沃尔夫

1
为什么您需要其中任何一种宝石都不足够?
标记

有关为什么重复并不总是很糟糕的更多信息,请访问:apple.stackexchange.com/questions/11461/…还有更多替代品
cregox 2014年

我自己从未使用过它,但是也许与pkgin进行比较也很有用。
丹尼斯

Answers:


118

绝对是自制的。我从Fink开始,然后切换到MacPorts(更快乐),然后切换到Homebrew(非常快乐)。这些是我使用每种工具的原因(如果您愿意,则使用专业人士列表):

芬克

  • 基于Apt的-如果您来自基于Debian的环境,则感觉宾至如归
  • 二进制软件包-软件包可作为二进制文件使用,因此无需长时间编译。实际上,尽管我发现预编译的二进制文件总是过时了,但无论如何我都不得不为我的系统编译东西
  • 体面的包装选择

MacPorts

  • 包/端口的最大选择
  • 通常非常最新
  • 不错的变体系统,可让您自定义构建
  • 简单直观的端口文件

家酿

  • 非常最新
  • 最大程度地利用OS X附带的功能。与Fink或MacPorts不同,它不需要您从头开始构建/安装ruby和库,仅安装一些基于Ruby的小型工具即可。
  • 这样安装/usr/local就不需要您在PATH任何地方进行修改
  • 一切都归用户所有,因此没有软件包需要具有潜在风险的root用户访问权限才能进行安装
  • 每个已安装的程序包都干净地放入自己的地窖中,因此您在系统中不会有任何杂散文件,而只是来自bin,man等的符号链接。
  • 创建您自己的公式文件(即程序包描述符)非常容易
  • 由于您来自红宝石背景,所以另一个好处是,所有内容都是用红宝石编写的,并且所有公式都是简单的红宝石脚本

pkgin

  • 非常最新
  • 由于预编译的二进制文件,安装速度更快
  • 一切都安装在/ opt / pkg /
  • 由pkgsrc社区和Joyent支持
  • 已知可在NetBSD,DragonFly BSD,Solaris,Debian,Mac OS X,Minix上工作

https://pkgsrc.joyent.com/install-on-osx/

http://pkgin.net/


33
需要注意的是为家庭酿造你可以争辩说,“安装到/ usr /本地”是问题和“什么自带OS X借力” -他们是我使用的另一种包装系统主要有两个原因
马克

5
鉴于/ usr / local / bin不在默认的Mac OS X路径中,因此您肯定必须修改PATH-您只需要做一次,因为brew放在那个地方,它链接到所有新路径。它安装的垃圾箱(“仅可放入垃圾箱”除外,但这是噪音)。
Terry N

4
@Mark您喜欢哪种包装系统?
David Moles

5
@ jedd.ahyoung我喜欢的MacPorts这使在/ opt /本地(芬克放入/ SW)
马克

5
我必须同意@ GDP2。我是Linux的新Mac用户。在开发BREW有态度十分恶劣。当我发布此评论时,您可以相信brew的github中只有13个问题吗?他们不想听用户。他们不想要任何问题。他们只是忽略您打开并立即关闭它们的任何问题。我从未在任何github项目中看到过这种态度。作为新用户,我已经使用了brew数月,今天我正在考虑改用另一个,发现了这个问题。迄今为止
Brew

57

MacPorts

它更独立于Mac OS X,这意味着MacPorts只会忽略Mac OS X中已经可用的许多系统库和软件,而是拉出自己的库和软件,如果您安装的实用程序需要一些大型的库,它们可能会变慢库和软件。

但是这种选择比较安全,因为您安装的软件包受Apple系统更新/升级过程的影响较小。


家酿

它更依赖于现有的Mac OS X安装的软件包,因此这将加快软件包的安装速度,并最大程度地减少冗余库。

但是存在安装风险,因为苹果的系统更新/升级,安装的软件包可能会损坏。

因此,这是两种不同的权衡。

另外,默认情况下,Homebrew接管/ usr / local有些人对此不满意,因为它与Unix传统有某种冲突,如果您已经在其中安装了任何东西(MySQL等),可能会引起问题。


除了这些区别之外,考虑到这两个可以提供的软件包,您可以使用以下两个命令检查是否已经安装了MacPorts / Homebrew,该软件包向您显示了它们当前提供的软件包:

port list | wc -l
brew search | wc -l

您会发现MacPorts的软件包比Homebrew多得多。

(19399 vs 3583在2016年5月13日)


17
关于不同数量的软件包的说明:Homebrew绝对不包括具有自己的打包系统(rubygems / pip / cpan ...)的编程语言的软件包,或不存在可以说是更合适的OS X安装程序的软件(MacTeX) 。同样,重复和较旧的版本不在默认存储库中,而是包含在备用录存储库中。将此与macports进行比较,macports例如包含所有包含的Python版本的IPython端口。这是一种不同的原理,自然会增加macport中的软件包数量。
Debilski


@YaOz,您当然可以更改自制软件,以使用其他东西/usr/local
Pacerier's

41

只是补充一些我自己的想法,至少在2014年底左右才是真实的想法。

几年前,国产啤酒在思想分享方面绝对占了上风。您会发现很多博客都在谈论人们对Homebrew的满意程度-通常是因为整个“ MacPorts拉动了整个世界”与“ Homebrew利用您已经拥有的东西”之类的东西。

但是,海事组织,MacPorts与几年前相比已经是另一回事了。当我第一次切换到OS X并使用MacPorts时,MP理念确实令人沮丧,因为几乎所有内容都是从源代码构建的。新安装特别麻烦/缓慢。但是在过去的一年左右的时间里,纯粹基于我自己的印象,似乎90%的MP软件包都是二进制文件,因此现在安装确实非常快。从我收集到的信息来看,自制软件也在朝着“瓶”的方向发展,但我给人的印象是,此时您通过HB安装的大多数东西都是从源代码编译的。

因此,如果仅是提供反驳的意见,这些天MacPorts似乎实际上是“更快”的选择。但是,大多数人对MP的看法似乎是基于大约2011-12左右的经验,并没有真正考虑到这一点。尽管我不是经常使用HB的人,但还是要加些盐(并排使用它们会很痛苦)。

我确实认为HB具有优势,但这意味着从长远来看它可能会“赢得战争”

  • HB都是Ruby,而MacPorts及其软件包公式是用TCL编写的,而TCL并不是完全流行的脚本语言。那就是说创建自己的portfile非常简单。
  • HB基于GitHub,因此对新的贡献者似乎更受欢迎,而MacPorts在我认为的某个地方托管了自己的SVN存储库-基本上反映了我所设想的两个项目的不同年代。
  • 如前所述,人们普遍认为MacPorts已被HB&取代,无论对与错,都吸引了更多的人加入。

否则YaOZl和kLy很好地涵盖了sudo,依赖项等方面的主要区别。我个人确实发现MacPorts有时会引起一些麻烦,例如其他程序不希望包含任何内容/opt/local,以root权限安装的东西等,并且有些东西通常最好不要与MacPorts一起安装(例如,可以通过以下方式安装Rails: MacPorts,但您会疯狂地不通过Ruby的常规Gem管理来安装它。除此之外,尽管我非常支持MacPorts建立自己的小世界并且不依赖于某些预打包的OS X库的哲学-当它工作时,并且大多数情况下,一切都变得非常简单。您真正想要的是包管理器。正如我所提到的,在这一点上,它很快就可以完成大多数事情。

希望其中一些有用。


“如前所述,人们普遍认为MacPorts已被HB&所取代,无论对与错,这都会吸引更多的人加入。” ……这听起来像是一个肤浅的表述……受欢迎与提供质量并不相同,绝不意味着第二个被第一个“取代”。
Dmitri Zaitsev

3

Brew对于我来说使用起来非常顺畅,所以我无法告知它的缺点。MacPorts的一些缺点:

关于前两点,有几个非常受欢迎的问题。


这是我在10.6上安装ImageMagick的经验;brew非常简单,但不包括JP2委托。imagemagick.org/script/binary-releases.php
Nemo

2
brew和macports仅需要Xcode命令行工具,因此此处相同。
2015年

@Mark我不确定您的意思,但是brew在没有Xcode的情况下对我来说效果很好。
Nemo

2
您需要一个brew MacPorts 编译器,可以通过Xcode命令行工具安装。您将不需要Xcode 应用程序
nohillside

1
我忘记了在防火墙后面同步该东西是多么的丑陋。
rogerdpack
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.