自制软件,macports或其他软件包安装工具有什么区别/用法?

ROB*_*WNS 236 homebrew apt macports

我刚刚从Ubuntu切换到Mac.我很失望mac sudo apt-get在Ubuntu中不方便.我听说我应该使用自制软件但是我不确定自制软件或macports有什么作用?

nou*_*oun 142

MacPorts是可行的方式.

  1. 就像@ user475443指出的那样,MacPorts有很多包.使用brew,你很快就会陷入困境,因为你需要的配方不存在.

  2. MacPorts是一个本机应用程序:C + TCL.你根本不需要Ruby.要在Mac OS X上安装Ruby,您可能需要使用MacPorts,因此只需使用MacPorts就可以了.

  3. MacPorts非常稳定,8年来我从来没有遇到任何问题,而我的整个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
    
    Run Code Online (Sandbox Code Playgroud)

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

  6. Rubists喜欢在Ruby中重写所有东西,因为他们唯一放心的就是Ruby本身.

  • 无法支持这一点.它过于狡猾,而且贪婪破坏了信息. (85认同)
  • 您不需要MacPorts来安装Ruby - Ruby包含在OS X中,而brew使用系统Ruby. (36认同)
  • Upvoting反击省略的"反snarky"upvotes.从人类收到的任何信息都将始终具有自然偏见(在这种情况下为"snarkiness").我很欣赏这个用户的观点,也许是特别*因为*答案不像维基百科条目. (33认同)
  • Rubists喜欢重写 - 呵呵,看看NodeJS的人在JS中实现MySQL的二进制协议!:) (26认同)
  • @Michael Ekstrand OS X不包含最新版本的Ruby. (5认同)
  • MacPorts可能有更多的软件包,但问题是软件包已经过时,因此实际上没用.仅作为一个例子,考虑一下Tomcat,其中MacPorts仍在使用版本6(后面有两个主要版本),并且有一张超过*6岁的票*要求升级:https://trac.macports.org/ticket/28938 .HomeBrew拥有一个更加活跃的社区.MacPorts可能有更多的软件包,但仅仅因为它的使用时间更长.HomeBrew是未来,它达到临界质量只是时间问题. (2认同)

Bur*_*lid 107

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

通常这些是与开发相关的库,这些工具的最常见用途是针对在osx上工作的开发人员.

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

xcode可以从mac app store安装,免费下载但需要一段时间,因为它大约5GB(如果我没记错的话).

macports是BSD端口实用程序的osx版本(因为osx源自BSD,这是一个自然的选择).对于任何熟悉任何BSD发行版的人来说,macports都会感到宾至如归.

自制软件和macports之间的一个主要区别; 我更喜欢自制软件的原因是它不会覆盖应该在osx中​​"本机"安装的东西.这意味着如果有可用的本机包,则自制软件将通知您,而不是覆盖它并导致问题进一步发生.它还在用户空间中安装库(因此,您不需要使用"sudo"来安装).这有助于摆脱库,因为一切都在您可以访问的路径中.

homebrew也享有更活跃的用户社区,其包(称为公式)经常更新.


macports不会覆盖原生OSX软件包 - 它提供自己的版本 - 这是我更喜欢macports而不是home-brew的主要原因,你需要确定你正在使用什么以及Apple在不同时间对端口的更改并且已经知道在一些项目中更新数年

你能给出一个参考,显示macports会覆盖原生OS X包吗?据我所知,所有的macports安装都在 /opt/local

也许我应该澄清一下 - 我在答案中没有说macports会覆盖OSX原生包.他们都分别安装项目.

当你应该"本地"安装东西时(使用库/工具的首选安装程序),Homebrew会警告你,以获得更好的兼容性.这就是我的意思.它还将使用OS X中可用的许多本地库.来自wiki:

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

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

OS X附带的东西或RubyGems,CPAN或PyPi提供的库不应该被欺骗.这有很好的理由:

  • 重复的库会定期破坏构建
  • 重复的库会出现细微的错误,并且在较小的程度上会出现重复的工具
  • 我们希望您更加努力地使您的配方与OS X一起使用

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

  • macports不会覆盖本机OSX软件包 - 它提供自己的版本 - 这是主要的rason我更喜欢macports而不是home-brew,你需要确定你正在使用什么以及Apple在不同时间对端口的更改并且已经知道在一些项目的更新背后是他们的 (77认同)
  • 你至少非常强烈地暗示MacPorts会覆盖本机OS X软件包.而不是"澄清",而仍然假装你没有说你写了什么,你应该编辑有问题的句子. (26认同)
  • 这句话,"自制软件和macports之间的一个主要区别;以及我更喜欢自制软件的原因是它不会覆盖应该在osx中​​"原生"安装的东西." 应该改为"自制软件和macports之间的一个主要区别;我更喜欢自制软件的原因是自制软件不会自动安装已经由Apple提供的工具和库的并行副本." (13认同)
  • 你能给出一个参考,显示macports会覆盖原生OS X包吗?据我所知,所有的macports安装都发生在`/ opt/local`中 (12认同)
  • MacPorts不会覆盖本机应用程序,它"将移植的软件限制为私有"沙箱",以防止它与您的操作系统及其供应商提供的软件混合,以防止它们被破坏." - MacPorts指南,第1章 (6认同)

use*_*443 24

目前,由于其成熟度,Macports拥有比Homebrew公式(~3.1K)更多的包(~18.6 K).Homebrew正在慢慢追赶.

Macport套餐往往由一个人维护.

Macports可以保留多个版本的软件包,您可以启用或禁用它们来测试.有时候这个列表可能会被破坏,你必须手动编辑它才能恢复原状,尽管这并不难.

包管理员都会要求定期更新.这可能需要一些时间.

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

此外,如果您正在处理python或ruby包,请尽可能使用虚拟环境.

  • {{{有时此列表可能会损坏,您必须手动编辑它才能恢复正常,尽管这并不太难。我从未见过这种情况发生,但这并不是说这是不可能的。当时的情况如何?您是否提交了错误 (http://trac.macports.org)? (2认同)

小智 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可能是更好的方法!

  • @Keith该网站不正确.或者至少,它遗漏了一个重要的前提.它说"Apple已经为我们留下了这个目录.这意味着默认情况下没有/ usr/local目录,所以不必担心搞乱现有的工具." Apple没有将`/ usr/local`留给Homebrew.Apple已经将`/ usr/local`留给了"基本操作系统不包含的可执行文件,库等".这意味着在使用Homebrew之前安装的工具可能创建了`/ usr/local`,这样在没有`sudo`的情况下就无法修改它.他们不在维基上讨论这个问题. (16认同)
  • @Articuno我想我现在找到了你.这只是`homebrew`可以安装没有'sudo`的东西的声明,因为当它自己设置时,它使用**`sudo`来取消目录上的权限,这样它就可以在`/里面做任何事情usr/local`没有触发密码.这是否意味着"无密码安装"部分是错误的?我不这么认为!它仍然是'homebrew`**将能够获得没有密码的东西. (5认同)
  • 你是说自制软件在不需要sudo的情况下将东西安装到`/ usr/local`中吗? (4认同)
  • @NgocPham我的观点是,我不相信Homebrew在没有root许可的情况下不能使用`/ usr / local`。全新OS X安装上`/ usr`的默认权限是root所有者,其他任何人都没有写权限。为了甚至* create *`/ usr / local`,Homebrew将需要root访问。(我不是要捍卫任何东西) (2认同)
  • 我真的相信改变核心目录的权限是一个非常糟糕的设计决定。不明白为什么 homebrew 不使用 /usr/local/homebrew 或 /opt/homebrew。我猜是因为 /usr/local/bin 默认在 $PATH 中。通常在 *nix 系统上,如果您不想使用 root 权限执行操作,只需在用户空间中执行。Homebrew 当然可以配置为使用健全的目录。我只是觉得 Macports 是更 UNIX 的做事方式,来自 BSD 等等。 (2认同)