[1]介紹 [2]優勢 [3]安裝 [4]使用 [5]cask [6]逸事 ...
介紹
包管理工具幾乎已經成為現代操作系統或者開發平臺不可或缺的工具軟體,無論做開發,或是管理伺服器,都免不了用到一些第三方依賴包。包管理工具的基本功能就是提供一個集中的平臺,可以在這裡找到大部分流行的組件,而不用費力的到每個軟體自己的主頁去下載安裝。只需要輸入簡單的命令,就可以直接安裝,並且包管理工具還會幫助用戶管理所有這些包的版本,以及它們之間的依賴關係。包管理工具可以讓安裝和更新程式變得更方便,目前在 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