Homebrew 是 macOS 上最常用的套件管理工具,能以一行指令快速安裝、更新與移除各種軟體,不必再手動下載 dmg 或繁瑣設定。它也能管理系統服務,讓應用程式在開機後自動啟動。搭配 ChatGPT、Gemini 等大語言模型輸出的指令範例,Homebrew 讓 iMac、Mac mini、MacBook 等設備的軟體管理更簡單、更高效。

安裝 Homebrew

Homebrew使用指令安裝,開啟 Mac 的終端機輸入以下內容即可自動安裝。也可以上 Homebrew 官網 https://brew.sh 複製 Install Homebrew 指令。

# 安裝 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安裝後可使用 brew --version 看到版本訊息代表安裝成功。

Homebrew 基本操作

安裝套件 (Formulae)

Homebrew 主要用來安裝「命令列工具」或「函式庫」。例如安裝 OpenJDK 可以這樣輸入。

# 安裝最新版 Java
brew install openjdk

# 安裝 Java 17
brew install openjdk@17

# 安裝 Java 21
brew install openjdk@21

# 重新安裝
brew reinstall openjdk

# 一次安裝多個
brew install openjdk gradle

安裝成功後會顯示相關的使用說明,如果想要重看一次這個訊息,可以使用 brew info 指令,例如 brew info openjdk

軟體與套件安裝後就可以直接使用,有些要自己另外加入 PATH。以 openjdk@17 為例,安裝後他會出現以下訊息:

echo 'export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc

這是因為 openjdk@17 被標註 keg-only,通常是因為同一個軟體有很多版本,Homebrew 會幫使用者安裝與更新,但如果希望輸入 java 就啟動它,需要自己加入 PATH 中。否則就是使用他的完整名稱去啟動它。

使用 link 指令綁定版本

前面提到有些軟體與套件被標注 keg-only,安裝後不能直接在終端機使用名稱來使用它。這時候可以用 brew link 指令,以 MySQL Client 為例:

# 安裝 MySQL Client 端
brew install mysql-client

安裝成功後使用 mysql 會出現 zsh: command not found: mysql,必須使用它的完整路徑
/opt/homebrew/opt/mysql-client/bin/mysql
才能啟動。

除了把路徑加入 PATH,也可以使用 brew link 指令自動連結到 PATH。

# 一般連結,但是對 keg-only 的會失效
brew link mysql-client

# 強制連結,確認過系統中沒有其他 mysql 就可以強制綁定
brew link --force mysql-client

# 連結後就可以直接在終端機使用 mysql-client 了
mysql -h example.com -u root -p

# 解除綁定
brew unlink mysql-client

也可以用這種 link 方式去指定 openjdk@17、openjdk@21 等各種版本,變成終端機輸入 java 時候的預設版本。

安裝圖形化軟體 (Casks)

Cask 則是 Homebrew 的擴充功能,專門用來安裝 macOS GUI 應用程式(例如 Chrome、Visual Studio Code、Slack)。它會自動幫你下載 .dmg / .pkg 檔,並安裝到 /Applications。可以看以下範例。

# 安裝 Chrome
brew install --cask google-chrome

# 安裝 Visual Studio Code
brew install --cask visual-studio-code

這些軟體安裝後就會出現在 Mac 的啟動台,以及 Finder 的應用程式裡面,可以直接啟動。

搜尋套件

我們可以直接在終端機使用指令搜尋想要的套件,例如搜尋 docker。

# 搜尋 docker
brew search docker

會出現 Formulae 與 Casks 搜尋結果。
也能開啟瀏覽器在 https://brew.sh 直接搜尋。或是直接在 Google 搜尋,例如搜尋 brew chrome 第一個搜尋結果通常就是 https://formulae.brew.sh/cask/google-chrome

管理已安裝套件

更新套件

除了安裝與刪除之外,Homebrew 也可以更新。

# 更新 Homebrew 本身,並且檢查有什麼軟體更新了
brew update

# 查詢哪些軟體與套件有更新了
brew outdated

# 全部都更新
brew upgrade

# 更新指定軟體,例如 Java 17 雖然不是最新的 Java,但本身還是會有安全更新
brew upgrade openjdk@17

# 也可以一次指定多個需要更新的
brew upgrade openjdk gradle

已安裝清單與解除安裝

可以查看透過 Homebrew 安裝的套件,如果需要解除安裝只要使用 brew uninstall 指令即可。

# 列出已安裝的 Formulae 與 Casks
brew list

# 解除安裝
brew uninstall <套件名稱>

# 解除安裝範例
brew uninstall openjdk
brew uninstall mysql-client
brew uninstall google-chrome

健康檢查

Homebrew 提供 brew doctor 指令,可以幫系統做一次健康檢查,確認 Homebrew 的安裝環境是否正常,會告知有哪些潛在問題需要修正。例如在安裝套件失敗、或是升級 macOS 之後,就可以檢查是否有 PATH 沒設定好、舊套件殘留或權限錯誤。

# 健康檢查
brew doctor

清除舊資料

安裝新版本時,舊版本並不會立刻刪除,而是保留在 Cellar。這樣做的好處是如果新版本有問題,可以隨時切回舊版本。還有安裝套件時,brew 會先下載壓縮檔(tarball),存放在 ~/Library/Caches/Homebrew/

# 清除所有套件的舊版本和快取
brew cleanup

# 只清除指定套件的舊版本
brew cleanup <套件名稱>

# 模擬清除(只顯示會刪哪些檔,不實際刪)
brew cleanup -n

# 檢查還有多少空間可以清掉
brew cleanup -s

有時候會出現類似以下訊息:
Warning: Skipping ffmpeg: most recent version 8.0_1 not installed

這是因為我的 ffmpeg 還沒更新到最新版,所以舊版不能刪除,使用 brew outdated 就會看到我的 ffmpeg 版本跟目前的最新版分別是什麼:
ffmpeg (7.1.1_3) < 8.0_1

使用 brew upgrade 或是 brew upgrade ffmpeg 更新後不會出現警告訊息了。順帶一提,像是 ffmpeg 這種套件還需要很多相關的套件,安裝與更新的時候,Homebrew 會一併幫我們把相關的套件都一起安裝、更新,非常方便。但是刪除 ffmpeg 的時候依賴套件不會主動被刪除,需要使用 brew autoremove 讓 Homebrew 刪除不再被依賴的套件。

系統服務

Homebrew 可以將安裝的套件變成系統服務,這樣每次 macOS 啟動後就會自動啟用他。就像是 Windows 中的服務,或是 Linux 中的 Systemd。

以常見的 Ollama 為例(用來執行大語言模型)安裝完成後,預設需要在終端機手動輸入 ollama serve 才能啟動後台。但如果將它註冊為系統服務,就可以讓它在開機時自動啟動,免去手動操作。

# 安裝 ollama
brew install ollama

# 啟動 ollama
ollama serve

# 啟動服務
brew services start ollama

# 停止服務
brew services stop ollama

# 重啟服務
brew services restart ollama

# 查看目前服務狀態
brew services list

發佈留言