在 Linux 中,使用 MacPorts 保持最新状态给我的印象最像 Gentoo(可以说是主要 Linux 发行版候选名单中最不像 Mac 的)。但经过进一步体验后,我发现它似乎并不完全像 Gentoo:使用 Gentoo 时,经常会出现问题,但您通常可以通过谷歌搜索错误消息的突出部分来找到解决方案,而且与一般的计算机情况不同,如果出现问题,在 24 或 48 小时后重试是相当合理的。在这方面,MacPorts 似乎只像 Gentoo,因为您可能会因为尝试按预期保持系统最新而导致出现问题。
之前的故障让我困惑于如何安装 Django;现在我已经安装了 Django,但是在升级 glib1 时出现故障;最后一次实质性的更改是针对该错误(http://trac.macports.org/ticket/21413)大约是一年前。
MacPorts 真的“像 Gentoo 一样出现故障,但你无法像 Gentoo 那样修复它“,还是说“32 位?遗留!啊!”或者其他什么?我想知道什么是理智的基本观点,以及我应该和不应该对 MacPorts 有什么期望。(或者我是否已经在上面所说的内容中回答了我自己的问题。)
答案1
情况同样糟糕。它没有比你想象的更糟糕的唯一原因是 Homebrew (关联) 已经使它过时了,除非你有某种受虐狂的欲望,想让你的包裹一次又一次地被搞砸。
Homebrew 可能没有 MacPorts 那样丰富的软件包,但它会达到那个水平,而且它足够简单,如果你愿意的话,可以很容易地修改它,以至于为新软件包添加“公式”是轻而易举的事。
答案2
我个人的看法是:MacPorts(作为一个项目)承担了太多超出其能力范围的事情。MacPorts 似乎试图将 Linux 世界中的所有内容都包含在内,但不幸的是,它最终得到了无数无人照管的软件包,以确保它们确实可以正常工作。有些东西坏了,而且一直坏着,有时是永久性的。
现在,当我想在 Mac 上运行开源软件时,我会考虑以下三个选项,而不是在 MacPorts 或 Fink 上浪费时间:
- 如果有特定于 Mac 的安装程序,我会使用它。
- 如果没有安装程序,但已知项目可以在 Mac OS X 上运行,我会从源代码构建它。(如果您安装了 Xcode,这和在真正的 Linux 系统上一样简单。)
- 如果已知它不能在 Mac 上运行,或者存在太多奇怪的依赖关系,我会在 Mac 上的真实 Linux 虚拟机中运行它。
答案3
MacPorts 开发人员会尽最大努力在各种系统上进行测试,并支持多种配置。通常支持最新的两个版本的 Mac OS X,目前是 10.5 Leopard 和 10.6 Snow Leopard。它甚至仍可在 10.4 Tiger 这个旧平台上运行,但不会为此付出额外的努力来支持新功能。
为此,至关重要的是不要依赖系统版本,而是将依赖项安装到 MacPorts 前缀中。这可能会导致依赖项列表变大,但这是保持兼容性的最佳方法。此外,您获得的版本比 Apple 可能随其系统提供的版本要新,而 Apple 的系统并不经常更新。
作为用户,你应该始终搜索并报告在问题跟踪器中记录您的构建问题,否则维护者可能不知道这些问题的存在。或者您可以提交补丁,这会使集成过程更快,甚至可以亲自接管一些端口的维护工作。MacPorts 团队始终需要新的维护者来贡献端口更新或新端口。作为比较,Gentoo 上的开发人员数量非常庞大,而 MacPorts 上只有少数人在积极地开发基础和端口。因此,隔离和修复问题需要更长的时间。请记住,所有维护者都在免费为项目贡献时间。
对于您的问题,您是否按照您链接的票证的评论中的建议检查了 macports.conf 中的 build_arch 设置? Snow Leopard 上的默认 build_arch 是 x86_64。 可以运行纯 32 位 MacPorts 安装,但不支持。 建议遵循迁移说明详细地讲解。
某些软件绝对无法编译为 64 位(例如 wine),但 MacPorts 会自动使用 +universal 变体重建依赖项。此变体意味着单个二进制文件或库将支持多种架构。