自制软件,macports或其他软件包安装工具的区别/用途是什么?[关闭]


238

我最近刚从Ubuntu切换到Mac。我对Mac sudo apt-get在Ubuntu 中没有便利感到失望。我听说我应该使用自制软件,但我不确定是要使用自制软件还是macports?



8
几年前,自制软件的前门有一个这样的说法:“自制软件更好,因为它是用Ruby编写的”。我没有反对Ruby的想法,一点也不介意。我喜欢oop,ruby是一种很好的oop语言。我遇到的问题是,任何软件开发人员都认为一种语言比所有其他语言都要好。仅出于这个原因,我对自制酒毫无兴趣。另外,macports多年来一直对我有效。
Mike Makuch 2015年

Answers:


145

MacPorts是必经之路。

  1. 就像@ user475443指出的那样,MacPorts还有许多其他软件包。使用brew,您很快就会陷入困境,因为所需的配方不存在。

  2. MacPorts是本机应用程序:C + TCL。您根本不需要Ruby。要在Mac OS X上安装Ruby,您可能需要MacPorts,因此只要使用MacPorts,您就会很高兴。

  3. MacPorts确实很稳定,八年来我从来没有遇到过问题,我的整个Unix生态系统都以此为基础。

  4. 如果您是PHP开发人员,则可以安装最新版本的Apache(Mac OS X使用2.2),PHP和所需的所有扩展,然后使用一个命令升级所有版本。忘记对Homebrew做同样的事情。

  5. MacPorts支持小组。

    foo@macpro:~/ port select --summary
    
    Name        Selected      Options
    ====        ========      =======
    db          none          db46 none
    gcc         none          gcc42 llvm-gcc42 mp-gcc48 none
    llvm        none          mp-llvm-3.3 none
    mysql       mysql56       mysql56 none
    php         php55         php55 php56 none
    postgresql  postgresql94  postgresql93 postgresql94 none
    python      none          python24 python25-apple python26-apple python27 python27-apple none
    

    如果同时安装了PHP55和PHP56(具有许多不同的扩展名),则只需一个命令即可在它们之间进行交换。所有相对扩展都是该组的一部分,它们将在所选组中被激活:php55或php56。我不确定Homebrew是否具有此功能。

  6. 摩擦论者喜欢用Ruby重写所有内容,因为唯一可以放心的是Ruby本身。


26
摩擦论者喜欢重写-呵呵,看看NodeJS家伙在JS中为MySQL实现二进制协议!:)
kolypto

37
您不需要MacPorts即可安装Ruby-OS X包含Ruby,并且brew使用系统Ruby。
Michael Ekstrand

5
@Michael Ekstrand OS X不包含Ruby的最新版本。
名词

89
无法对此表示赞同。太狡猾了,贪睡破坏了信息。
OldPeculier 2015年

34
投票反对被省略的“反偷偷摸摸的”投票。从人类接收到的任何信息将始终具有自然偏见(在这种情况下为“狡猾”)。我欣赏此用户的观点,也许特别是因为答案并不像Wikipedia条目那样读。
rinogo 2015年

109

Homebrew和macports都解决了相同的问题-即未与osx捆绑在一起的公共库和实用程序的安装。

通常,这些是与开发相关的库,这些工具最常见的用途是供使用osx的开发人员使用。

他们俩都需要安装xcode命令行工具(可以从https://developer.apple.com/单独下载),对于某些特定的软件包,您将需要安装整个xcode IDE。

可以从Mac应用商店中安装xcode,可以免费下载xcode,但由于它的大小约为5GB,因此需要一段时间(如果我没记错的话)。

macports是BSD的port实用程序的osx版本(因为osx是从BSD派生的,所以这是很自然的选择)。对于熟悉任何BSD发行版的任何人,macports都会给您家的感觉。

自制软件和Macports之间的一大区别;我之所以喜欢自制软件,是因为它不会覆盖应该在osx中​​“本机”安装的内容。这意味着,如果有可用的本机软件包,homebrew将通知您而不是覆盖它,并进一步导致问题。它还在用户空间中安装库(因此,您无需使用“ sudo”来安装东西)。由于所有内容都在您可以访问的路径中,因此在删除库时也有帮助。

自制软件还拥有更活跃的用户社区,并且其软件包(称为公式)经常更新。


macports不会覆盖本机OSX软件包-它提供了自己的版本-这是我喜欢macports而非自制软件的主要原因,您需要确定所使用的内容以及Apple在不同时间对端口的更改,并且已经知道在某些项目中要比更新晚几年

您能否提供参考说明macports覆盖本机OS X软件包?据我所知,所有macports安装都在 /opt/local

也许我应该澄清-我的回答中没有说Macports会覆盖OSX本机软件包。他们都分别安装项目。

当您应该“本机”安装(使用库/工具的首选安装程序)进行更好的兼容性时,Homebrew会警告您。这就是我的意思。它也将使用尽可能多的是在OS X从现有的本地库维基

我们真的不喜欢Homebrew / homebrew中的骗子

但是,我们确实喜欢自来水!

OS X附带的东西或RubyGems,CPAN或PyPi提供的库都不应该被复制。这样做有充分的理由:

  • 重复的库会定期破坏构建
  • 重复库和较小程度的重复工具会出现细微的错误
  • 我们希望您尽力使您的公式与OS X附带的功能一起使用

您可以选择用自制软件覆盖macosx提供的实用程序版本。


78
macports不会覆盖本机OSX软件包-它提供了自己的版本-这是我更喜欢macports而非自制的主要原因,您需要确定所使用的内容以及苹果在不同时间对端口所做的更改,并且已经知道在某些项目中落后于更新
mmmmmm

13
您能否提供参考说明macports覆盖本机OS X软件包?据我所知,所有macports安装都发生在/opt/local

27
您至少确实非常强烈地暗示MacPorts会覆盖本机OS X软件包。与其假装您没有说写的内容,不如“澄清”,您应该编辑有问题的句子。
2015年

13
这句话是:“自制软件和Macports之间的一个主要区别;我之所以喜欢自制软件,是因为它不会覆盖应该在osx中​​“本机”安装的内容。” 应该更改为“ homebrew和macports之间的一个主要区别;我更喜欢homebrew的原因是homebrew不会自动安装Apple已经提供的工具和库的并行副本。”
bgupta 2015年

7
MacPorts不会覆盖本地应用程序,而是将软件移植到私有的“沙盒”中,以防止其与您的操作系统及其供应商提供的软件混合在一起,以防止它们被破坏。
-MacPorts

23

目前,由于成熟,Macports的软件包(〜18.6 K)比Homebrew公式(〜3.1K)多。自制软件正在慢慢追赶。

Macport软件包通常由一个人维护。

Macports可以保留多个版本的软件包,您可以启用或禁用它们来测试软件包。有时,此列表可能会损坏,您必须手动对其进行编辑才能使内容恢复正常,尽管这并不难。

两位软件包管理员都将要求定期更新。这可能需要一些时间。

注意:您可以在系统上同时拥有两个程序包管理器!它不是一个。Brew可能会抱怨,但Macports不会。

另外,如果要处理python或ruby软件包,请尽可能使用虚拟环境。


1
{{{有时,此列表可能会损坏,您必须手动对其进行编辑才能恢复正常,尽管这并不难。}}}我从未见过这种情况,但这并不是说不可能。什么情况 您是否提交了错误(trac.macports.org)?
LSpice

{{{两位软件包管理员都将要求定期更新。这可能需要一些时间。}}}这似乎是一个奇怪的声明。在使用了几年之后,我只记得几次升级MacPorts本身,并且更新非常快。您是说端口本身必须经常更新吗?好吧,它们可以做到,但这是一件好事,而不是缺点,我想!另外,可能值得注意的是MacPorts不会要求做任何事情,也就是说,没有na。你要问谈出来的过期包。
LSpice

18

默认情况下,Homebrew将软件包安装到您的/ usr / local。Macport命令需要sudo来安装和升级(类似于Ubuntu中的apt-get)。

有关更多详细信息:

该网站建议使用Hombrew:http://deephill.com/macports-vs-homebrew/

而此站点列出了使用Macports的优点:http ://arstechnica.com/civis/viewtopic.php ? f=19&t=1207907

我最近也从Ubuntu切换了,我喜欢使用自制软件(它简单易用!),但是如果您对使用sudo感兴趣,那么Macports可能是更好的选择!


4
您是说自制软件/usr/local无需sudo即可安装东西吗?

1
@NgocPham您是否有参考资料?

16
@Keith该站点不正确。至少,它没有保留主要前提。它说:“ Apple已将目录留给我们。这意味着默认情况下没有/ usr / local目录,因此无需担心会弄乱现有工具。” 苹果没有离开/usr/local家酿。苹果公司留下/usr/local了“基本操作系统不包括的可执行文件,库等”。这意味着在使用Homebrew之前安装的工具可能已经创建/usr/local,因此如果没有则无法修改sudo。他们不在Wiki上讨论。

2
@NgocPham我的观点是,我不相信/usr/local没有根权限就不能使用Homebrew 。/usr全新OS X安装的默认权限是root owner,其他任何人都没有写权限。为了甚至创建 /usr/local,Homebrew将需要root访问。(我不是想捍卫任何东西)

5
@Articuno我想我现在知道了。这只是该声明homebrew可以安装的东西,而sudo因为当它本身成立,它用来 sudo做对目录宽松的权限,以便它能够做任何事情里面/usr/local,而不会触发密码。这是否意味着“无密码安装”部分是错误的?我不这么认为!它仍然是真的,homebrew 能够得到的东西,而密码。
Ngoc Pham 2014年
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.