簡明 homebrew

homebrew

介紹

包管理工具幾乎已經成爲現代操做系統或者開發平臺不可或缺的工具軟件,不管作開發,或是管理服務器,都免不了用到一些第三方依賴包。包管理工具的基本功能就是提供一個集中的平臺,能夠在這裏找到大部分流行的組件,而不用費力的到每一個軟件本身的主頁去下載安裝。只須要輸入簡單的命令,就能夠直接安裝,而且包管理工具還會幫助用戶管理全部這些包的版本,以及它們之間的依賴關係。包管理工具可讓安裝和更新程序變得更方便,目前在 MacOS 系統中受歡迎的包管理工具是 Homebrewgit

Homebrew(可直譯爲家釀啤酒) 是一款 MacOS 平臺下的軟件包管理工具,是一個開源的 Ruby 腳本,最先的建立者是馬克斯·霍威爾(max howell)。該工具擁有安裝、卸載、更新、查看、搜索等不少實用的功能。簡單的一條指令,就能夠實現包管理,而不用關心各類依賴和文件路徑的狀況,十分方便快捷github

優點

一、經過 Homebrew 下載安裝的軟件所有來自對應的軟件官網,無需擔憂下載源的安全問題面試

二、依存於系統既有的庫,減小了空間佔用和冗餘算法

三、使用 Git 進行管理和更新mongodb

四、易於定製chrome

五、安裝軟件、軟件包、軟件都在一個目錄/usr/local/Cellar下(cellar 是酒窖的意思),方便管理shell

安裝

【xcode】xcode

若是沒有安裝 Xcode.app,可能須要先下載並安裝 Xcode。但實際上並不須要,只須要安裝完成 Xcode 命令行工具(Xcode Command Line Tools )便可安全

xcode-select —install

而後,執行下面代碼就能夠安裝 Homebrew 了,這是一個 ruby 腳本,執行這個安裝腳本就能夠完成 Homebrew 全部安裝操做ruby

/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)

兩件逸事

1、算法面試失敗

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.

2、移除 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
相關文章
相關標籤/搜索