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