在我“自动化一切事物”的追求中,我一直在努力将我的 Mac 笔记本电脑作为其固有的代码进行管理。 我更喜欢使用软件包管理软件来安装、更新和删除不需要的软件,而不是通过点击来手动管理我的应用程序和实用程序。
这对 Mac 用户来说是一个挑战。 Mac 操作系统 macOS 一直落后于 Linux 的一个方面是软件包管理。 Mac 用户没有默认的软件包管理器,而 Linux 用户有多种选择——从熟悉的 yum
和 apt
到现代选择 Flatpak。 但是我们呢?
这就是 Homebrew 的用武之地。 Homebrew 填补了 macOS(以及 Linux 的另一种选择)的事实上的软件包管理器的空白。 它为任何熟悉命令行的人提供了非常流畅和直接的体验,如果您是新手,这也是学习命令行的好方法。
如果您使用的是 Mac 并且尚未安装 Homebrew,您可以使用以下命令安装它
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
此命令执行 Homebrew 团队提供的安装脚本。 如果您希望更加谨慎,可以先使用 curl
下载该文件,然后在查看后再手动运行它
$ curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh --output homebrew_installer.sh
$ more homebrew_installer.sh # review the script until you feel comfortable
$ bash homebrew_installer.sh
使用 brew 管理您的命令行实用工具
Homebrew 宣称它“安装了您需要的 Apple(或您的 Linux 系统)默认未安装的东西”。 安装是通过 brew
命令完成的,这使我们可以访问数千个命令行实用工具,但不能访问更复杂的应用程序。
对于我们这些技术人员来说,属于“您需要的东西”类别的实用工具包括显示目录结构的便捷 tree
命令和 pyenv
,我使用它来 管理 Python 的多个版本。
您可以使用 search
命令查看 Homebrew 提供的所有 “formulae”,我使用 wc
命令来显示有多少个 formulae。
# -l counts the number of lines
$ brew search | wc -l
5013
有超过 5,000 个 formulae,这是一个令人难以置信的软件数量。 因此,最好在搜索这个庞大的列表之前对您想要的东西有一个概念。 值得庆幸的是,浏览起来很容易。 Formulae 被编纂并集中到按操作系统划分的核心存储库中(Mac 在 Homebrew Core 中,Linux 在 Linux Core 中)。 它们也可以通过 Homebrew API 获得,并在 网站上列出。
口口相传是找到实用工具的另一种好方法。 考虑到这一点,如果您正在寻找灵感,这里有一些我最喜欢的工具
pyenv
、rbenv
和nodenv
分别用于管理 Python、Ruby 和 Node.js 版本imagemagick
用于可脚本化的图像编辑pandoc
用于可脚本化的文档转换(我经常在 .docx、.md 或 .html 之间切换)hub
为 GitHub 用户提供 更好的 Git 体验tldr
提供如何使用命令行实用工具的示例
例如,看看 tldr pages,它是滚动浏览应用程序手册页面的用户友好替代方案。 您可以通过再次运行 search
来确认它是否可用
$ brew search tldr
==> Formulae
tldr ✔
成功! 复选标记让您知道它可用。 现在您可以安装它了
$ brew install tldr
==> Downloading https://homebrew.bintray.com/bottles/tldr-1.3.0_2.catalina.bottle.tar.gz
Already downloaded: /Users/mbbroberg/Library/Caches/Homebrew/downloads/901bc14594a9283e9ab20aec942dc5a9a2befb7e96e1b0fcccb4e3257918813c--tldr-1.3.0_2.catalina.bottle.tar.gz
==> Installing tldr
==> Pouring tldr-1.3.0_2.catalina.bottle.tar.gz
? /usr/local/Cellar/tldr/1.3.0_2: 6 files, 35.5KB
值得庆幸的是,Homebrew 预先构建了二进制文件,因此您不必在本地计算机上从源代码构建。 这节省了大量时间和 CPU 风扇噪音。 我欣赏 Homebrew 的另一点是,即使您不完全理解它的含义,您也可以体会到此功能的优点。
但是,如果您对此感兴趣,那么查看其复杂性可能会很有趣。 在 tldr
上运行 info
,您可以看到所有依赖项管理、源代码,甚至公共分析
$ brew info tldr
tldr: stable 1.3.0 (bottled), HEAD
Simplified and community-driven man pages
https://tldr.sh/
Conflicts with:
tealdeer (because both install `tldr` binaries)
/usr/local/Cellar/tldr/1.3.0_2 (6 files, 35.5KB) *
Poured from bottle on 2020-05-20 at 15:12:12
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/tldr.rb
==> Dependencies
Build: pkg-config ✔
Required: libzip ✔
==> Options
--HEAD
Install HEAD version
==> Analytics
install: 2,811 (30 days), 7,875 (90 days), 27,105 (365 days)
install-on-request: 2,806 (30 days), 7,860 (90 days), 27,080 (365 days)
build-error: 0 (30 days)
最后,与任何好的软件包管理器一样,Homebrew 的 brew uninstall
可用于快速清理和删除未使用的实用工具。
使用 brew casks 管理您的应用程序
命令行实用工具很棒,但是完整的应用程序呢? Homebrew 使其标准命令保持简单,并且仅通过其默认的 brew
命令行界面安装单文件应用程序。 应用程序不符合该结构。 它们具有比单个二进制文件复杂得多的目录层次结构。
幸运的是,Mac 上的 Homebrew 包含一个名为“casks”的子命令,用于更复杂的多目录结构。 特别好的是,cask
使用与标准 brew
命令类似的命令结构,因此您可以使用类似的 search
、install
和 info
步骤
brew search --cask | wc -l
4772
哇,还有将近 5,000 个应用程序可以浏览,在 Homebrew 的网站 上浏览起来更容易。
我将通过我最喜欢的新应用程序之一 cask
向您介绍:Meld(我 在 Opensource.com 上阅读过)。 这是一个功能丰富的编辑器,可帮助管理合并冲突。 它的网站上有下载,我可以运行安装程序并将其拖放到我的“应用程序”文件夹中,但我不再那样做了。 我使用 Homebrew。
首先,我通过略有不同的语法确认它可用
$ brew search --casks meld
==> Casks
meld
然后我使用 cask
子命令来安装它
$ brew cask install meld
==> Downloading https://github.com/yousseb/meld/releases/download/osx-19/meldmerge.dmg
==> Downloading from https://github-production-release-asset-2e65be.s3.amazonaws.com/28624006/66cb25
######################################################################## 100.0%
==> Verifying SHA-256 checksum for Cask 'meld'.
==> Installing Cask meld
==> Moving App 'Meld.app' to '/Applications/Meld.app'.
==> Linking Binary 'meld.wrapper.sh' to '/usr/local/bin/meld'.
? meld was successfully installed!
Homebrew 不仅安装了应用程序,而且还使其在我的当前路径 /usr/local/bin/
下可用。 现在我可以从命令行运行 meld
或从“应用程序”文件夹启动该应用程序。
使用 brew upgrade 更新所有内容
我一直使用软件包管理器的主要原因是为了我可以持续升级我的软件,以避免已知的安全漏洞并确保我始终拥有最新的功能。 如果我手动安装所有内容,则必须密切关注每个工具和应用程序,以了解它是否具有自动更新程序,如果没有,则自行下载最新版本。
升级是出色的软件包管理发挥作用的地方。 由于我对版本没有特殊要求,因此我只需运行一个命令即可平稳地更新所有内容
$ brew upgrade
==> Upgrading 6 outdated packages:
helm 3.2.1 -> 3.2.2
python@3.8 3.8.2_4 -> 3.8.3
ipython 7.14.0 -> 7.15.0
go 1.14.2_1 -> 1.14.3
libzip 1.6.1 -> 1.6.1_1
sqlite 3.31.1 -> 3.32.1
如果您有更复杂的需求或希望在安装升级之前密切关注它们,则有许多功能标志可用。 例如,-n
提供了一个“试运行”,列出了可用的升级,而无需安装它们。 您还可以 “锁定” 应用程序版本以防止升级。
备份您的安装
当工具允许您像任何其他 版本控制中的点文件 一样备份您的安装时,命令行实用工具和应用程序管理跃升到一个全新的水平。 Homebrew 具有可以在 dump
子命令下使用的那种功能。 它生成一个 Brewfile
,这是一个可重用的当前安装的所有工具的列表。 要从您的安装生成一个,请转到您喜欢的文件夹并运行
$ cd ~/Development/dotfiles # This is my dotfile folder
$ brew bundle dump
当我更换机器并想使用 Homebrew 安装相同的应用程序时,我转到包含 Brewfile 的文件夹并运行
$ brew bundle
它将在我的新机器上安装所有列出的 formulae 和 casks。
使用 Homebrew 进行软件包管理
Homebrew 是我用于命令行实用工具和应用程序的首选管理器。 它使我保持井井有条和最新状态,并且其设计在易用性和功能深度之间取得了完美的平衡。 Homebrew 将软件包管理细节最小化到您需要知道的内容,大多数用户将从中受益。
如果您已经熟悉 Linux 软件包管理器,您可能会认为 Homebrew 太简单了,但不要将 Homebrew 的易用性误认为是缺少功能。 深入了解会发现许多超出我在此处向您展示的高级选项。 将 -h
添加到任何 brew
子命令都会显示可用于升级、删除、故障排除甚至使用模板贡献新 formula 的丰富功能。
总的来说,Homebrew 使成为命令行 Mac 用户成为一种乐趣。 此外,它是开源的,因此如果您愿意,可以 为代码做出贡献。 试一试,并在下面留下评论告诉我您的想法。
3 条评论