讓 macOS 上也有和 Linux 一樣的套件管理工具:Homebrew

by 3月 27, 2017 0 意見        


macOS 雖然也是 Unix Like 家族的成員,卻不像 CentOS 有 YUM,也不像 Raspbian 有 APT,居然沒有半支套件管理程式?!

身為一個九流部落客,想要多多提升 SEO 效果也是很正常的,可是一直卡在網頁載入的速度太慢,而這個問題的關鍵是圖片大小過大,雖然已經用了 ImageOptim 來壓縮,可惜效果還是不夠好。

說巧不巧,剛好看到 Google 釋出了 Guetzli,號稱 可以把 JPG 格式的圖片在同樣的品質再減少 1/3 的大小,當然一定要試試看囉。

等等~~~
那是 放在 GitHub 上的開源原始碼,我是要怎麼裝啊?難不成又要自己編譯了嗎?

還好,前輩都幫我們這些小嫩嫩都鋪好路了,我們有下面這三種可以選擇。

Fink

套件都已經事先編譯好了,我們只要直接下載安裝就能用。
好處是安裝過程超快,幾乎不用等。
壞處
是沒辦法自己升級,得等人家編譯好才行,只能眼巴巴的看著新版本流口水。

MacPorts

套件需要編譯,儘量不去相依於系統內建的函數庫,全部自己來,而且自成一格,活在自己的世界,預設安裝目錄在 /opt/local。
好處是不會因為系統升級而造成套件相依性 (package dependencies) 的問題。
壞處則是等價交換原則,用儲存空間與 CPU 時間來交換。

Homebrew

套件同樣需要編譯,但是儘可能利用現有的函數庫,能不額外安裝就不裝,預設安裝目錄在 /usr/local。
好處是節省儲存空間,安裝過程相對快了些。
壞處當然就是可能會被系統升級而連累到,造成原先能用的套件,更新完就突然掛掉。

而 Google 提供了 Homebrew 跟 MacPorts 這兩種方式,在參考 對岸大牛的意見 之後,最後我選擇了 Homebrew,一來因為我的 MBPR 只有 128GB 的空間,實在放不了多少東西,二來因為我在本機 shell 工作的機會並不多,所以也不想大費周章。


安裝、更新及移除 Homebrew


官網第一段就大喇喇的告訴我們怎麼安裝,因為要調整目錄權限,所以要輸入目前登入帳號的密碼。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

過程會自動安裝 Command Line Tools for Xcode。

接著才會下載主程式。

因為檔案並不大,所以稍等一下下就安裝完成了。

安裝完畢之後,執行一下更新,確保所有的檔案都是最新的版本。
brew update

確認一下版號跟設定值。
brew config

如果用不到了,打算移除掉,也同樣用一行指令就搞定。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

系統提醒我們在這些目錄可能還有沒刪除乾淨的檔案,必須手動處理。
/usr/local/bin
/usr/local/etc
/usr/local/remotedesktop
/usr/local/share
/usr/local/var

千萬小心,可別砍錯了 ...... >_<


Homebrew 的指令怎麼下


其實就像 YUM 跟 APT 一樣,常用的參數大同小異。
brew help

不確定參數怎麼用,來看一下詳細的說明。
brew help info

Homebrew 把套件的安裝程序檔稱為腳本 (formula),這整個機制與腳本是用 Ruby 語言寫的,目前已經有 3092 個了,也可以到 Braumeister 上去搜尋。

真的有這麼多的腳本可以裝。
brew search

我直接輸入關鍵字去搜尋,也可以用 正規表示法 來找。
brew search guetzli

可是這個腳本到底是幹嘛用的呢?原來是個感知型的 JPEG 格式編碼程式 (Perceptual JPEG encoder)。
brew info guetzli

連到官網看一下它的相關資料。
brew home guetzli

怎麼用 Homebrew 安裝、移除、更新套件


這個套件太棒了,怎麼可以不把它安裝起來呢!
brew install guetzli

確認一下,已經成功裝到系統裡了。
brew list
brew list guetzli

別忘了,要定期檢查一下有沒有新版本能升級。
brew outdated
brew outdated guetzli

如果有的話,那就看狀況決定要不要升級,老話一句:「沒壞的東西不要修」。
brew upgrade
brew upgrade guetzli

等到我哪天用不到了,再來砍掉它吧。
brew uninstall guetzli


Homebrew 怪怪的怎麼辦


人有失足,馬有亂蹄,鳥兒偶爾也會落翅,所以 Homebrew 會出槌也是很正常的。
brew doctor

有病當然要看醫生嘛,要不然要看護士嗎 ......  (正解)。

既然真的生病了......@@,那就來治病吧。
我們的第一個症狀是說 Homebrew 程式檔路徑沒有在全域環境變數裡,那就聽醫囑照辦吧。
echo 'export PATH="/usr/local/sbin:SPATH"' >> ~/.bash_profile

第二個症狀是說發現了一些無效的捷徑 (symlinks),這是因為我之前曾經安裝過 Docker for Mac beta 版的關係,那就把它砍了吧。
brew prune

順便清一下空間,把那些舊版的套件檔案刪除掉。
brew cleanup

再請醫生檢查一次,這下子總算藥到命除了 ...... (誤)。

咦?!
我們是不是忘了什麼 ......
對啦,Guetzli,這篇文章的圖片全部都用它來處理過,效果的確像官方所宣傳的,大概少了近 3 成左右。

不過,
一來只能在終端機裡下指令,二來要一個一個檔案慢慢跑,三來要花時間計算,一張原始大小 3.3MB 的 JPG 圖片,就跑了約 3 分鐘左右 ... @@

我們還是等神人寫出 GUI 介面的程式再來用吧 ...... XDDD


參考資料

圖片來源
  • https://visualhunt.com
  • https://www.pakutaso.com

更新紀錄
  • 2017/03/27 發文。

Heracles Jam,江湖人稱「海公公」

IT 技術家 - 創站部落客

一個常用 Windows、慣用 macOS、愛用 Linux 的 3C 阿宅
現職 MIS / 業界講師 / 資訊顧問 / 部落客

0 意見 :

張貼留言