brew upgrade <formula>
或 brew install <formula>
也會升級許多其他東西?.app
找不到 Homebrew 工具程式!/opt/homebrew
?/home/linuxbrew/.linuxbrew
?brew upgrade
時,某些應用程式不會包含在升級中?brew upgrade
時,我的 cask 應用程式會失去 Dock 位置/Launchpad 位置/權限設定?公式食譜書中有一份 Homebrew 術語 清單。
首先更新所有套件定義 (公式) 和 Homebrew 本身
brew update
現在,您可以使用下列指令列出已安裝套件 (keg) 中哪些已過時
brew outdated
使用下列指令升級所有內容
brew upgrade
或使用下列指令升級特定公式
brew upgrade <formula>
若要停止更新/升級某個項目
brew pin <formula>
若要允許該公式再次更新
brew unpin <formula>
請注意,其他公式所依賴的已釘選、過時公式需要在需要時升級,因為我們不允許公式針對過時版本建置。如果您不希望這樣,您可以改用 brew extract
來 在 tap 中維護您自己的公式副本。
若要解除安裝 Homebrew,請執行 Homebrew/install 儲存庫中的解除安裝腳本。
Homebrew 會自動解除安裝使用 brew upgrade
升級的每個套件公式的舊版本,並定期在每 30 天執行其他清理。
若要停用自動 brew cleanup
export HOMEBREW_NO_INSTALL_CLEANUP=1
若僅針對套件公式 foo
和 bar
停用自動 brew cleanup
export HOMEBREW_NO_CLEANUP_FORMULAE=foo,bar
當自動 brew cleanup
停用時,如果您解除安裝套件公式,它只會移除您已安裝的最新版本。它不會移除您過去可能已安裝的所有套件公式版本。當您執行 brew upgrade
時,Homebrew 將繼續嘗試安裝它所知道的最新版本。這可能會令人感到意外。
在這種情況下,若要完全移除套件公式,您可以執行 brew uninstall --force <formula>
。請小心,因為這是一個破壞性操作。
brew upgrade <formula>
或 brew install <formula>
也會升級許多其他東西?Homebrew 不支援任意混合和搭配套件公式版本,因此套件公式所依賴的一切,以及依賴於它的所有內容都需要升級到最新版本,因為那是我們測試的唯一套件公式組合。因此,任何給定的 upgrade
或 install
命令都可以升級許多其他(看似不相關的)套件公式,特別是如果像 python
或 openssl
等重要項目也需要升級。
brew --cache
通常是: ~/Library/Caches/Homebrew
.app
找不到 Homebrew 工具程式!預設情況下,macOS 上的 GUI 應用程式在其 PATH
中沒有 Homebrew 的前置詞。如果您使用 Mountain Lion 或更新版本,您可以透過執行 sudo launchctl config user path "$(brew --prefix)/bin:${PATH}"
然後重新開機來修復此問題,如 man launchctl
中所述。請注意,這會設定 所有使用者 的 launchctl
PATH
。對於較早版本的 macOS,請參閱 此頁面。
閱讀我們的 貢獻指南。
Homebrew 為許多套件公式提供預先建置的二進制套件。這些套件稱為 Bottles,可在 https://github.com/Homebrew/homebrew-core/packages 取得。
如果可用,預設情況下將使用已封裝的二進制檔案,但下列情況除外
--build-from-source
選項。brew install <formula>
會嘗試尋找瓶裝二進位檔,但 brew install --with-foo <formula>
會觸發原始碼建置。我們的目標是瓶裝所有內容。
Homebrew 的許多公式預先建置的二進位套件 (稱為 瓶子) 僅在您安裝在預設安裝前置詞時才能使用,否則它們必須從原始碼建置。從原始碼建置需要很長時間,容易失敗,且不受支援。預設前置詞為
/usr/local
,/opt/homebrew
,以及/home/linuxbrew/.linuxbrew
。請善待自己,並安裝到預設前置詞,以便您可以使用我們的預先建置二進位套件。請自行承擔選擇其他前置詞的風險!
/opt/homebrew
?選擇前置詞 /opt/homebrew
是為了允許在 /opt/homebrew
中安裝 Apple Silicon 和 /usr/local
中安裝 Rosetta 2,並共存並使用瓶子。
/home/linuxbrew/.linuxbrew
?選擇前置詞 /home/linuxbrew/.linuxbrew
是為了讓沒有管理員存取權限的使用者仍能透過 linuxbrew
角色帳戶受益於預先編譯的二進位檔。如果您自己沒有管理員權限,請考慮要求您的管理員人員為您建立一個 linuxbrew
角色帳戶,其主目錄為 /home/linuxbrew
。
tl;dr Sudo 很危險,而且您無論如何都已在沒有 sudo 的情況下安裝 TextMate.app。
Homebrew 拒絕使用 sudo 工作。
您應該只對您信任的工具使用 sudo。當然,您可以信任 Homebrew 😉 — 但您是否信任 Homebrew 執行的數百萬位元組 Makefile?開發人員通常比他們了解 make
語法更了解 C++。對此類檔案使用 sudo 的風險太高。它可能會修改 (或上傳) 您系統上的任何檔案。事實上,我們已經看到一些建置指令碼嘗試修改 /usr
,即使前置詞被指定為其他內容。
我們使用 macOS 沙盒來阻止此行為,但當以 root
使用者身分執行時,此行為不會運作 (該使用者身分也幾乎可以讀取和寫入系統上的所有內容)。
您是否 chown root /Applications/TextMate.app
?可能沒有。那麼 chown root wget
有那麼重要嗎?
如果您需要在多使用者環境中執行 Homebrew,請考慮建立一個專門用於 Homebrew 的獨立使用者帳戶。
如果不在 man brew
中,它可能是 外部命令,其文件可以使用 --help
取得。
如果已解決所有維護者回饋,且所有測試都通過,請加上「bump」註解來升級。有時我們會錯過要求,而且有許多要求。在此同時,請重新設定您的 pull request,以便更輕鬆地合併。
是的!很簡單!如果 brew tap
沒有顯示 homebrew/core
,請設定自己編輯本機副本
HOMEBREW_NO_INSTALL_FROM_API=1
,brew tap homebrew/core
並等待複製完成,然後brew edit <formula>
在 EDITOR
中開啟公式。您不必將修改提交回 homebrew/core
,只要將公式編輯成您個人需要的樣子,然後 brew install <formula>
。作為額外好處,brew update
會將您的變更與上游合併,因此您仍然可以讓公式保持最新,並包含您的個人修改!
請注意,如果您正在編輯核心公式或 cask,您必須在使用 brew install
或 brew update
之前設定 HOMEBREW_NO_INSTALL_FROM_API=1
,否則它們會忽略您的本機變更並預設使用 API。
若要復原您對 Homebrew 任何儲存庫所做的所有變更,請執行 brew update-reset
。它會將所有 Homebrew 的儲存庫還原為上游狀態。
是的!這很簡單!如果您已經有 homebrew/core
的本機副本(請參閱上方),請使用 brew create
命令。Homebrew 隨後會在 EDITOR
中開啟公式,以便您可以編輯它,但它可能已經安裝;請嘗試: brew install <formula>
。如果您遇到任何問題,請使用 --debug
參數執行命令,如下所示: brew install --debug <formula>
,這會讓您進入偵錯殼層。
如果您希望您的新公式成為 homebrew/core
的一部分,或想進一步瞭解如何撰寫公式,請閱讀 公式食譜。
確保您有 homebrew/core
的本機副本,然後
brew update
brew install hub
cd "$(brew --repository homebrew/core)"
hub fetch github_username
hub pr checkout pull_request_number
使用 brew log <formula>
來找出!可能是因為它有 未解決的問題 和/或 我們的分析 指出它沒有被廣泛使用。
對於已停用和已棄用的公式,執行 brew info <formula>
也會提供說明。
Homebrew 的創建者 @mxcl 對啤酒主題不太感興趣,也沒有考慮到這個專案實際上可能會很受歡迎。等 Max 意識到它很受歡迎時,已經太遲了。然而,今天,Google 搜尋「homebrew」的第一個結果與啤酒無關 😉
這表示該公式只安裝在 Cellar 中,而沒有連結到預設前置詞。這表示大多數工具都找不到它。您可以透過執行 brew info <formula>
來查看公式為何只安裝為 keg-only,以及將其包含在 PATH
中的說明。
您可以 修改工具的建置設定 來尋找 keg-only 相依性。或者,如果您需要的話,可以使用 brew link <formula>
連結公式,不過如果您正在覆蓋 macOS 軟體,這可能會導致意外行為。
brew edit <formula>
並直接編輯公式。目前沒有其他方法可以做到這一點。
某些應用程式可能會顯示類似這樣的彈出訊息
這是 Apple 的安全功能。最重要的資訊是你可以允許個別應用程式豁免此功能。這允許應用程式在系統其他部分仍受保護時執行。
務必保持系統範圍的保護功能啟用,並僅在需要時為特定應用程式停用。
如果你確定信任該應用程式,你可以右鍵按一下其圖示並選擇開啟來為其停用保護功能。
在產生的對話方塊中,按一下開啟按鈕讓 macOS 永久允許應用程式在此 Mac 上執行。除非你確定信任該應用程式,否則請勿執行此操作。
或者,你可以在安裝時提供 --no-quarantine
切換,以不將此功能新增至特定應用程式。
brew upgrade
時,某些應用程式不會包含在升級中?在執行 brew upgrade
後,你可能會注意到某些你認為應該升級的 cask 沒有升級。
正如你可能知道的,許多 macOS 軟體可以自行升級
這可能會在與 Homebrew Cask 的 upgrade
機制搭配使用時造成衝突。
當軟體使用其內建機制自行升級時,會在 Homebrew Cask 不知情的情況下發生,導致兩個版本不同步。如果你在我們記錄的軟體版本較低時透過 Homebrew Cask 升級,你會降級。
有幾個想法可以解決這個問題
url
值(這對可維護性來說絕對是有利的)。這個解決方案也不是通用的,因為許多軟體開發人員在其版本控制方案中並不一致(而且應用程式組合預計會有兩個版本字串),而且它並不適用於我們支援的所有軟體類型。因此我們讓軟體保持原狀。使用 Homebrew Cask 安裝的任何內容都應該與手動安裝時一樣。但由於我們也想要支援不會自行升級的軟體,我們會將 auto_updates true
加入到會自動更新的軟體的 cask 中,將它們排除在 brew upgrade
之外。
使用 version :latest
的 Cask 也會被排除,因為我們無法追蹤它們的已安裝版本。詢問此類軟體的開發人員提供版本化版本(即在下載 url
的路徑中包含版本)會有幫助。
如果你仍想要強制透過 Homebrew Cask 升級軟體,可以在 upgrade
指令中特別參照它
brew upgrade <cask>
或使用 --greedy
參數
brew upgrade --greedy
請參閱 brew
手冊頁面 的 upgrade
部分,以取得更多詳細資訊。
brew upgrade
時,我的 cask 應用程式會失去 Dock 位置/Launchpad 位置/權限設定?Homebrew 有兩種可能的策略來更新 cask 應用程式:解除安裝舊版本並重新安裝新版本,或用新內容取代應用程式的內容。使用解除安裝/重新安裝策略時,macOS 會認為應用程式正在刪除,而沒有重新安裝的意圖,因此它會移除舊應用程式的部分內部元資料,包括它在 Dock 和 Launchpad 中出現的位置,以及它已被授予哪些權限。內容替換策略會將升級視為就地升級,以此來解決這個問題。但是,從 macOS Ventura 開始,只有當更新應用程式(在本例中為執行 Homebrew 的終端機)已 授予某些權限 時,才允許進行這些就地升級。只要「應用程式管理」或「完整磁碟存取」權限就足夠了。
Homebrew 在擁有必要權限時會預設採用原位升級。否則,它將使用解除安裝/重新安裝策略。