今天,我想宣布 Homebrew 2.0.0。自 1.9.0 以来最重大的变化是正式支持 Linux 和 Windows 10(带 Windows Subsystem for Linux),brew cleanup
自动运行,Homebrew/homebrew-core 中不再有选项,并且不再支持 OS X Mountain Lion (10.8) 及更低版本。
自 1.9.0 以来,重大更改和弃用
- Homebrew 正式支持 Linux 和带 Windows Subsystem for Linux (WSL) 的 Windows 10。Linux 上的 Homebrew 以前称为“Linuxbrew”。你可以在你的主目录中安装它,因此它不需要
sudo
,并使用它来安装主机发行版的包管理器未提供的软件。Linux 上的 Homebrew 使用自己的公式存储库:Homebrew/linuxbrew-core。 brew cleanup
定期运行(每 30 天)并触发重新安装、安装或升级时的单个公式清理。你可以通过设置HOMEBREW_NO_INSTALL_CLEANUP
变量来选择退出此行为。这解决了长期存在的抱怨,即如果用户没有运行brew cleanup
,他们会惊讶于 Homebrew 使用了多少磁盘空间。- Homebrew 不在 OS X Mountain Lion (10.8) 及更低版本上运行。有关 10.4 - 10.6 支持,请参阅 Tigerbrew。这使我们能够移除大量旧代码。
- Homebrew 不会从 Homebrew/legacy-homebrew(以前为 Homebrew/homebrew 存储库)迁移旧的 1.0.0 之前的安装。这使我们能够删除处理旧版本迁移的旧代码。
- Homebrew 在 Homebrew/homebrew-core 中没有任何带有选项的公式。第三方 tap 仍将支持和鼓励使用选项。此更改使我们能够更好地专注于提供二进制包,而不是选项。带有选项的公式必须从源代码构建,无法在我们的 CI 系统上进行测试,并且给我们的志愿维护人员带来了不成比例的支持负担。
我想强调自 1.9.0 以来其他更改如下
- Homebrew 使用适当的选项解析器来生成
man brew
和--help
。此外,Homebrew 不再静默忽略公式或命令的无效选项。。此更改将为用户提供更好的反馈,并使我们的参数处理变得更简单、更健壮。 - Homebrew 的便携式 Ruby 现已基于 OS X Mavericks (10.9) 构建,以提升性能。
brew install
不会尝试link
已安装同名 cask 的公式。此更改避免了这些情况下的链接错误。- 分析数据现已在 formulae.brew.sh 上提供,用于 Cask 安装.
此外,如果您自 1.0.0 以来一直未关注,以下是自那时以来的主要更改
- 支持 RuboCop 的编辑器(例如 VS Code、Atom)可以在 tap 中编辑公式时获取内联
brew audit
信息。这改善了贡献体验。 - 可使用
brew tap-new
命令,使用README
创建新 tap 和预先配置的 Azure Pipelines 配置(在撰写本文时,它似乎为 OSS 提供了最可靠、性能最佳的 macOS CI)。这简化了 tap(第三方存储库)的创建。 brew update-reset
将所有存储库和 tap 重置为其上游版本。在调试git
问题时,这很有用。brew link
状态在brew install
和brew upgrade
之后得以保留(包括仅限 keg 的公式),但不幸的是,由于缺少状态,brew unlink
状态 无法保留。这应该允许将许多仅限 keg 的公式用作普通公式。- Homebrew 过滤所有用户环境变量。当公式从源代码构建时,这减少了错误,并允许移除针对利基问题而设计的许多解决方法。
brew postgresql-upgrade-database
在主要版本之间升级 PostgreSQL 数据库数据。这简化了 PostgreSQL 版本之间的升级,而以前需要半手动流程,并保留旧版本的 PostgreSQL。- 将
python
公式升级到 Python 3.x,并添加python@2
公式以安装 Python 2.7。我们最初没有遵守 PEP 394,这是一个错误。我们使brew install python
和brew install python@2
符合 PEP 394,并且在 PEP 394 更改之前不会再次更改此项。这使我们能够将更多的生态系统迁移到 Python 3。 - 我们弃用了所有 Homebrew 组织 tap,并将其存档,并在 Homebrew/homebrew-core 中创建了新的版本化公式。我们鼓励在 Homebrew 组织外部的 tap 中支持更多利基公式和公式选项。这使我们能够专注于提供始终如一地发挥作用的高质量公式,而不是一大堆已损坏、不受支持、被忽略的公式。
- Homebrew Formulae 是一个提供配方数据、匿名聚合分析数据和查询这些数据的 JSON API 的网站。这使你能够快速查询 Homebrew 信息,而无需访问 macOS 或 Homebrew。
- 2018 年 7 月,一位安全研究员发现 Homebrew 的 Jenkins 中存在 GitHub 个人访问令牌泄漏。在数小时内,这些凭证已被吊销并已清理。由于此事件,没有软件包受到损害,并且用户无需采取任何措施。我们目前正尝试从 Jenkins 迁移到合适的托管 CI 提供商。
- 当你的 macOS 版本没有可用的瓶子时,我们将使用旧版本中的瓶子。这将在我们的装瓶完成之前(或当配方无法构建时),在新的 macOS 版本上使生活变得更加愉快。
brew upgrade
自动重新安装或升级具有损坏链接的配方。这避免了在从源代码构建或在升级后使用可选行为时出现损坏的配方。brew info
显示分析数据。这是 Homebrew 维护人员查询分析数据的方式,因此我们使用与社区相同的数据。这有望缓解我们对分析数据收集的担忧。- Homebrew Cask 的下载已隔离。这在手动下载这些工具时提供了相同级别的安全性。
- Homebrew/homebrew-core 要求所有配方都是 OSI 定义的开源软件。这使你可以确信从 Homebrew/homebrew-core 进行的任何
brew install
(虽然不是brew cask install
)都是开源软件。 brew link --force
不会链接 macOS 已提供的软件,而是输出有关如何执行此操作的说明。这避免了奇怪的编译错误,并鼓励用户使用系统机制来调整其PATH
。
最后
- 许多 Homebrew 维护人员将参加 FOSDEM 2019(打个招呼!)并在 2 月 4 日之后会面,以讨论 Homebrew 的未来治理。
- Homebrew 仍通过 Patreon 接受捐赠。如果你负担得起,请考虑捐赠。如果你不想使用 Patreon(我们首选的捐赠方式),请查看我们的自述文件中其他捐赠方式。
感谢所有勤奋的维护者、贡献者、赞助商和支持者,让我们走到今天。尽情使用 Homebrew 吧!