[Mac] Homebrew 與 Homebrew-Cask —— 更快速、簡潔、優雅地管理你的 Mac 軟體套件

相信許多人、特別是 Mac 使用者都聽過 Homebrew 的大名,它已經是個非常普遍化的非 App 官方工具。本文將簡單分享怎麼使用 Homebrew 來釀十八天啤酒……呃不是,是幫助在 Mac 管理上更輕鬆寫意,包含 Homebrew 的用途、安裝方法、常用指令等。

Homebrew 是什麼?為什麼要用它?

就如同 Homebrew 官網 上對自己下的標題:macOS 缺少的套件管理工具。簡單來說,Homebrew 是一套 Mac 的軟體套件管理工具,目的是簡化 Mac OS X 系統上的軟體安裝過程

什麼是套件管理工具(Package Management Software)?

使用過 Linux 系統的人對此一定不會陌生,就像 Ubuntu 的 apt-get 或 Fedora 的 yum,透過套件管理工具,可以對作業系統上的軟體應用程式做統一的控管,包含搜尋、下載、安裝、移除、更新等動作。

對 Windows 系統的使用者來說,有點類似「控制台」的「程式和功能」,我們能在這裡檢視和移除所有已安裝的應用程式。但 Windows 上安裝部分多半還是得靠自己搜尋下載安裝檔,然後各別進行。

為什麼說套件管理工具能讓我們更優雅、輕鬆地管理應用程式?

原本 Mac 使用者如果想安裝應用程式,有兩種做法:

  • 如果是 Mac App Store 上有的軟體,搜尋到了之後,點「取得」並進行安裝。
  • 如果是 Mac App Store 上沒有的軟體,就需要先搜尋軟體,然後下載某個軟體的 dmg、掛載、拖拉 app 到 Application 資料夾。

如果要安裝幾十個軟體,這樣的步驟就要手動不斷重複,對於時常需要重灌的人,或是習慣講究自動化大量部署的開發者來說,簡直就像安娜貝爾般是場惡夢。而且,也不容易控管非透過 App Store 安裝的應用程式,如果我要對軟體進行移除或更新,因應不同軟體,我可能需要用不同的操作來達成目的,甚至容易有移除不乾淨的問題。

此外,蘋果對於 Mac App Store 的經營似乎不如 iOS App Store 用心,來自開發者或使用者都有負面聲音,例如上架審核過慢造成軟體釋出延宕,或是流程處理過慢造成使用者體驗不佳。已有知名軟體放棄在 Mac App Store 上架軟體或釋出新版本,例如在 UI 設計師間知名的 Sketch。許多開發者更傾向直接服務使用者,Mac App Store 已經不是上架 App 的唯一選項,不一定能取得最新版本的套件。

透過 Homebrew,在 Mac 上可以對應用程式做統一控管,以及利用指令做到批量管理或安裝,減少繁複費時的手動操作,節省時間去做更有生命意義的事情,例如悠閒喝杯啤酒或咖啡。

Homebrew 是誰開發的?

這麼一套方便好用還不用錢的工具從哪來的呢?Homebrew 是一款自由及開放原始碼的軟體套件管理系統,採用 Ruby 撰寫,最初開發的作者名叫 Max Howell。關於 Homebrew 的作者,在 2015 年曾發生一件著名的逸事,引發網路上熱烈討論。Max Howell 去應徵 Google 的職位未果,在 twitter 上貼文:「Google:我們90%的工程師都在用你的軟體(Homebrew),但是你不會在白板上翻轉二元樹所以滾出去」。

在接觸 Homebrew 時,常會看到另一個名詞:formula (配方)。在 Homebrew 裡,將軟體套件稱為 formula (配方),Homebrew 的 formula 都是簡單的 Ruby 腳本。為什麼將軟體套件稱為 formula 呢?因為 Homebrew 翻譯起來就像是在家裡酒窖裡釀酒,所以每一個套件就相當等於是一個新的配方。

Homebrew Cask 又是什麼?

使用 Homebrew 來安裝軟體非常便利,但所安裝的軟體在 Launchpad 裡看不到,必須以命令列(Command Line)方式操作,對於一些圖形化介面的應用程式來說不夠親切,比如 Google Chrome、Dropbox,因此延伸出 Homebrew Cask。Cask 是 Homebrew 的子專案,用來安裝和管理圖形化介面類型的軟體,所安裝的軟體可以在 Launchpad 看到,就如同自己將 App 拖曳到 Application 資料夾底下手動安裝的效果一樣。

故事背景介紹完了,來實際動手吧!

使用 Homebrew 前的環境準備

系統必須事先安裝好以下環境:

  1. Ruby:Homebrew 以 Ruby 語言開發
  2. Xcode:OSX 上有的套件需要作編譯後才能使用

安裝 Homebrew 和 Homebrew-Cask

安裝 Homebrew 非常簡單,打開 Terminal,輸入以下指令即可:

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

再透過 Homebrew 去安裝 Homebrew-Cask:

$ brew install caskroom/cask/brew-cask

Homebrew 常用指令

管理套件

更新 homebrew 的軟體來源套件清單

會列出有異動的 formula,包含新出現的、有更新的、被刪除的。
$ brew update

查詢目前已安裝的套件

$ brew list

搜尋套件

$ brew search <套件名稱或關鍵字>

EX: $ brew search git

查詢指定套件的資訊

如果是還沒安裝的,會出現相關下載的資訊,例如相依的套件及URL
如果是已經安裝的,會連同安裝路徑與檔案大小等訊息也出現

$ brew info <套件名稱>

EX: $ brew info git

安裝套件

$ brew install <套件名稱>

EX: $ brew install git

移除套件

$ brew uninstall <套件名稱>

EX: $ brew uninstall git

更新套件

如果指令沒有指定套件,就是把所有已安裝的套件全部更新

$ brew upgrade
$ brew upgrade <套件名稱>

列出已安裝過、但過時的套件

提供是否要更新的依據
$ brew outdated

管理 Homebrew 本身

查看 homebrew 指令的幫助說明

$ brew help

查看 homebrew 版本

$ brew -v

查看 homebrew 安裝路徑

$ brew --prefix

診斷 homebrew 的狀況是否異常

$ brew doctor

清除 homebrew 在安裝套件過程遺留的垃圾,例如下載時的暫存檔

$ brew cleanup

Homebrew-Cask 常用指令

Homebrew-Cask 的指令和 Homebrew 基本上原理相同,差別大都只是指令前面分別是「brew」和「brew cask」,例如:

$ brew cask search google-chrome
$ brew cask install google-chrome
$ brew cask update google-chrome
$ brew cask uninstall google-chrome

個人心得

原則上對系統而言,使用 Homebrew 去管理套件,比起自己對每個套件各別手動安裝或移除,相對來說是較方便也較乾淨的作法,統一控管套件清單,並降低移除套件時移除不乾淨的機率。

不過並不代表 Homebrew 能保證在移除時將該套件的相關影響完全復原。

例如套件自行在系統層留下的資料,我想這是任何套件管理工具都無法保證的,所以在使用時還是需要留心。工具只是增加效率和方便,但絕對不是萬靈丹。

參考資料

發表留言