介紹
包管理工具幾乎已經成為現代操作系統或者開發平台不可或缺的工具軟件,無論做開發,或是管理服務器,都免不了用到一些第三方依賴包。包管理工具的基本功能就是提供一個集中的平台,可以在這里找到大部分流行的組件,而不用費力的到每個軟件自己的主頁去下載安裝。只需要輸入簡單的命令,就可以直接安裝,並且包管理工具還會幫助用戶管理所有這些包的版本,以及它們之間的依賴關系。包管理工具可以讓安裝和更新程序變得更方便,目前在 MacOS 系統中受歡迎的包管理工具是 Homebrew
Homebrew(可直譯為家釀啤酒) 是一款 MacOS 平台下的軟件包管理工具,是一個開源的 Ruby 腳本,最早的創建者是馬克斯·霍威爾(max howell)。該工具擁有安裝、卸載、更新、查看、搜索等很多實用的功能。簡單的一條指令,就可以實現包管理,而不用關心各種依賴和文件路徑的情況,十分方便快捷
優勢
1、通過 Homebrew 下載安裝的軟件全部來自對應的軟件官網,無需擔心下載源的安全問題
2、依存於系統既有的庫,減少了空間占用和冗余
3、使用 Git 進行管理和更新
4、易於定制
5、安裝軟件、軟件包、軟件都在一個目錄/usr/local/Cellar
下(cellar 是酒窖的意思),方便管理
安裝
【xcode】
如果沒有安裝 Xcode.app,可能需要先下載並安裝 Xcode。但實際上並不需要,只需要安裝完成 Xcode 命令行工具(Xcode Command Line Tools )即可
xcode-select —install
然后,執行下面代碼就可以安裝 Homebrew 了,這是一個 ruby 腳本,執行這個安裝腳本就可以完成 Homebrew 所有安裝操作
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
將 /usr/local/bin 添加至 $PATH
環境變量中,要注意的是,.bash_profile中的內容會和其他shell共享,.bashrc中的內容僅僅bash會加載
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bash_profile
運行以下命令,確保 Homebrew 運行正常
brew doctor
使用
brew install <package_name> # 安裝包
brew uninstall <package_name> # 卸載包
brew upgrade <package_name> # 更新包
brew search <package_name> # 搜索包
brew update # 更新所有安裝過的包(包括homebrew)
brew list --versions # 列出所有安裝過的包(包括版本號)
cask
Homebrew 是下載源碼解壓,然后 ./configure && make install ,同時會包含相關依賴庫,並自動配置好各種環境變量
Homebrew Cask 是在 Homebrew 基礎上的一個增強工具,用來安裝 Mac 上的 GUI 程序應用包(.dmg/.pkg)。它是下載程序包解壓到統一的目錄中(/opt/homebrew-cask/Caskroom),省掉了自己去下載、解壓、拖拽(安裝)等步驟,然后再軟鏈到~/Applications/目錄下, 非常方便,而且還包含很多在 AppStore 里沒有的常用軟件
所以,Homebrew 一般管理第三方庫和命令行工具,而 Homebrew Cask 可以看作是 APP Store 的補充
使用 brew search 命令搜索 google-chrome 時
$ brew search google-chrome
==> Casks
google-chrome
homebrew/cask-versions/google-chrome-beta
homebrew/cask-versions/google-chrome-canary
homebrew/cask-versions/google-chrome-dev
表示 google-chrome 只能用 brew cask 命令來安裝
cask 的常用命令如下,cask 只能更新所有包,而不能更新單個包
brew cask install <package_name> # 安裝程序包
brew cask uninstall <package_name> # 卸載程序包
brew cask list # 列出安裝過的程序包
brew cask upgrade # 更新所有安裝過的包(包括homebrew)
兩件逸事
一、算法面試失敗
Homebrew 的創始人 Max Howell,在 2015 年初曾去 Google 面試,因為 “白板” 寫算法題「翻轉二叉樹」失敗,憤而發 twitter 諷刺
Google: 90% of our engineers use the software you wrote (Homebrew), but you can't invert a binary tree on a whiteboard so fuck off.
二、移除 MongoDB
MongoDB 在 2018 年 10 月宣布將開源 License 從 GNU AGPLv3 切換到 Server Side Public License(SSPL),以此回應 AWS 等雲廠商將 MongoDB 以服務的形式提供給用戶而沒有回饋社區的行為。SSPL 明確要求托管 MongoDB 實例的雲廠商要么獲取商業許可證要么向社區開放其服務源碼。
但是開源社區對此似乎有不少反對聲音,許多人認為 SSPL 是具有針對性的,對特定類別的用戶具有嚴重歧視性,這違反了開源的真諦,所以 Fedora 認定 SSPL 不是一個自由軟件許可,紅帽和 Debian 也宣布從發行版中刪除 MongoDB
Homebrew core 列表目前已經將 MongoDB 移除,不再為其提供支持
所以,使用 brew doctor 命令時,會有一個如下的 warning
Warning: Some installed formulae are not readable:
mongodb: unknown version :mountain_lion