Homebrew :在 Mac 上無痛安裝軟體
在我追求「萬物自動化」的過程中,我一直堅持走在用代碼來管理我的 Mac 筆記本電腦的路上。與其用滑鼠或觸控板手動管理我的應用程序和實用程序,我更喜歡使用軟體包管理軟體來安裝、更新和刪除不需要的軟體。
這對 Mac 用戶來說是個挑戰。Mac 的操作系統 macOS 始終落後於 Linux 的一個地方就是在包管理方面。Mac 用戶沒有默認的軟體包管理器,而 Linux 用戶則有很多選擇 —— 從熟悉的 yum
和 apt
到現代的 Flatpak。但 Mac 呢?
這就是 Homebrew 的作用。Homebrew(自釀)填補了 MacOS 事實上的軟體包管理器的空白(它也是 Linux 上的又一個可選的包管理器)。它為任何熟悉命令行的人提供了令人難以置信的流暢而直接的體驗,如果你是新手,它是學習命令行的好方法。
(LCTT 譯註:Homebrew 系統中採用了大量針對自釀啤酒相關的比喻,大家在使用過程中會發現這些有趣的形容。)
如果你在 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 # 審核該腳本,直到你覺得沒問題了
$ bash homebrew_installer.sh
使用「釀造」來管理你的命令行實用程序
Homebrew 號稱它「可以安裝蘋果(或你的 Linux 系統)默認沒有安裝的必需之物」。安裝是通過 brew
(釀造)命令進行的,它使我們能夠訪問成千上萬的命令行實用程序,但不是更複雜的應用程序。
對於我們這些搞技術的人來說,符合「必需之物」類別的實用工具包括顯示目錄結構的方便的 tree
命令和我用來 管理多個 Python 版本 的 pyenv
。
你可以用 search
子命令看到 Homebrew 中所有的「 秘方 」,我用 wc
命令顯示有多少個「秘方」。
# -l 統計行數
$ brew search | wc -l
5013
有 5000 多個「秘方」,這是一個不可思議的軟體數量。所以,在搜索那個龐大的清單之前,最好先對自己想要的東西有個概念。值得慶幸的是,瀏覽起來很方便。「秘方」被編入並集中存儲到核心庫中,核心庫按操作系統劃分(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 頁面,這是一個用戶友好的替代方式,可以滾動瀏覽應用程序的手冊頁。你可以通過再次運行 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
子命令可用於快速清理和刪除未使用的實用程序。
用「酒桶」管理你的應用程序
命令行實用程序是一匹孤狼,但完整的應用程序呢?Homebrew 保持了其標準命令的簡單性,只通過其默認的 brew
命令行界面安裝單文件應用。而應用程序不符合這種結構。它們的目錄層次比較複雜,比單一的二進位要複雜得多。
幸運的是,Mac 上的 Homebrew 包含了一個名為 cask
(酒桶)的子命令,用於處理更複雜的多目錄結構。特別好的是,cask
使用了與標準 brew
命令類似的命令結構,所以你可以使用類似的 search
、install
和 info
子命令:
brew search --cask | wc -l
4772
哇,有近 5000 個應用程序,在 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
==> 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 # 這是我的點文件的文件夾
$ brew bundle dump
當我換了機器,想用 Homebrew 安裝相同的應用程序時,我就會進入裝有 Brewfile
的文件夾並運行。
$ brew bundle
它將在我的新機器上安裝所有列出的「秘方」和「酒桶」。
用 Homebrew 進行軟體包管理
Homebrew 是我常用的命令行工具和應用程序的管理器。它可以讓我保持有條理和及時更新,它的設計在易用性和功能深度之間取得了美麗的平衡。Homebrew 將軟體包管理的細節最小化到只需要你知道的程度,大多數用戶都會從中受益。
如果你對 Linux 軟體包管理器已經駕輕就熟,你可能會認為 Homebrew 太簡單了,但不要誤以為 Homebrew 的易用性是功能的缺乏。稍微深入一點看,就會發現很多高級選項,遠遠超出了我在這裡向你展示的範圍。將 -h
添加到任何 brew
子命令中,會顯示可用來升級、刪除、故障排除,甚至使用模板貢獻新 「秘方」 的豐富功能。
總的來說,Homebrew 可以讓一個重度命令行的 Mac 用戶變得很開心。此外,它是開源的,所以如果你願意,你可以貢獻代碼。嘗試一下它,讓我知道你的想法,在下面留下評論。
via: https://opensource.com/article/20/6/homebrew-mac
作者:Matthew Broberg 選題:lujun9972 譯者:wxy 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive