【效率】好用到爆!GitHub 星標(biāo) 32.5k+的命令行軟件管理神器,功能真心強(qiáng)大!
前言(廢話)
本來打算在公司偷偷摸摸給星球的用戶寫一篇編程喵整合 MongoDB 的文章,結(jié)果在通過 brew 安裝 MongoDB 的時(shí)候竟然報(bào)錯(cuò)了。原因很簡(jiǎn)單,公司這臺(tái) Mac 上的 homebrew 環(huán)境沒有配置好。剛好 Java 程序員進(jìn)階之路上缺少這樣一篇內(nèi)容。

所以我就想,不如趁機(jī)水一篇吧,啊,不不不,趁機(jī)給小伙伴們普及一下 Homebrew 吧!瞧我這該死的大公無私的心(手動(dòng)狗頭)。
不會(huì)吧?不會(huì)還有人用 macOS 沒有安裝/配置 Homebrew 吧?
Homebrew 能干什么
Homebrew 的 Slogan :The missing package manager for macOS (or Linux)
Homebrew 這款命令行軟件管理神器在 GitHub 上已經(jīng)有 32.5k+ 的 star 了,功能也真心強(qiáng)大,幾乎 macOS 上的軟件包它都包了。Homebrew 本身沒有問題,問題在于。。。。。不說了,你懂的。

Homebrew 除了是 macOS 的包管理器也可以裝在 Linux 上成為 Linux 的包管理器,僅需要執(zhí)行相應(yīng)的命令,就能下載安裝需要的軟件包,省去了下載、解壓、拖拽等繁瑣的步驟。
用 Homebrew 官方的話來總結(jié)就是:安裝 Apple(或 Linux 系統(tǒng))沒有預(yù)裝但你需要的軟件。比如說安裝 MongoDB,只需要執(zhí)行以下命令就可以安裝,前提條件是環(huán)境一定要配置好。
brew install mongodb
簡(jiǎn)單一條命令,就可以實(shí)現(xiàn)包管理,還不用擔(dān)心依賴/文件路徑等問題。
Homebrew 主要由四個(gè)部分組成: brew、homebrew-core 、homebrew-cask、homebrew-bottles。
brew:Homebrew 的源代碼倉庫 homebrew-core:Homebrew 的核心源 homebrew-cask:提供 macOS 應(yīng)用和大型二進(jìn)制文件的安裝 homebrew-bottles:預(yù)編譯二進(jìn)制軟件包
再來了解一下 Homebrew 的接個(gè)核心概念,后續(xù)會(huì)經(jīng)常用到。
formula(e),安裝包的描述文件,帶 e 為復(fù)數(shù) cellar,包安裝好后所在的目錄 bottle,預(yù)先編譯好的包,不需要再下載源碼編譯,速度會(huì)快很多,官方庫中的包大多數(shù)是通過 bottle 方式安裝的 tap,下載源 cask(s),安裝 macOS native 應(yīng)用的擴(kuò)展,可以理解為有圖形化界面的應(yīng)用,帶 s 為復(fù)數(shù) bundle,描述 Homebrew 依賴的擴(kuò)展
安裝配置 Homebrew
世上無難事,只要找到 Homebrew 的正確安裝方式。
按理說,Homebrew 的安裝方式非常簡(jiǎn)單,只需要執(zhí)行官方的一句命令就可以完成安裝了。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
但國(guó)內(nèi)開發(fā)者命苦就苦在,經(jīng)常會(huì)因?yàn)榫W(wǎng)絡(luò)的原因安裝失敗。原因我只能說這是 https://raw.githubusercontent.com 網(wǎng)站的鍋,誰讓它訪問不穩(wěn)定呢?
怎么辦呢?
必須換一種高效且科學(xué)的安裝方式,那就是使用鏡像安裝。Gitee 上有開源作者提供了一鍵安裝包,只需要執(zhí)行以下命令就可以了。
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
安裝腳本里提供了中科大、清華大學(xué)、北京外國(guó)語大學(xué)、騰訊、阿里巴巴等下載源。

但過來人告訴你,別選其他鏡像源,就選中科大,速度杠杠的,40-50M/s,這速度比其他鏡像源快多了,對(duì)比起來,其他就是蝸牛??。

這個(gè)安裝腳本非常的智能,幾乎可以一件幫我們搞定所有問題。

再次感謝 Gitee 上這位大牛,已經(jīng) 3k star 了,我把地址貼出來:
https://gitee.com/cunkai/HomebrewCN

brew 本體安裝成功后,會(huì)提示我們配置國(guó)內(nèi)鏡像源。

nice,安裝完成了。執(zhí)行下面這幾個(gè)命令體驗(yàn)下。

brew ls查看本地命令;brew search mongodb查找軟件;brew -v查看版本;brew update更新版本;brew install --cask firefox安裝圖形化界面軟件brew config查看配置。

brew 和 brew cask 的區(qū)別
這里順帶說一下 brew 和 brew cask 的區(qū)別,這也是一開始我使用 brew 時(shí)困惑的一個(gè)點(diǎn)。
以前的版本中,是可以直接 brew cask list 這樣執(zhí)行命令的,現(xiàn)在改成了 brew list --cask。

brew 是從下載源碼開始,然后編譯(不一定,有些有現(xiàn)成的 bottle)解壓,通過 ./configure && make install 進(jìn)行安裝,同時(shí)會(huì)包含相關(guān)的依賴庫。環(huán)境變量也是自動(dòng)配置的。

brew cask 是下載解壓已經(jīng)編譯好了的軟件包(.dmg/.pkg),放在統(tǒng)一的目錄中,省去了手動(dòng)去下載、解壓、拖拽等蛋疼步驟。

通過 brew search google 我們也可以看得出兩者之間的區(qū)別。

「Formulae」一般是那些命令行工具、開發(fā)庫、字體、插件等不含 GUI 界面的軟件。 「Cask」就會(huì)包含一些 GUI 圖形化界面的軟件,如 Google Chrome、FireFox 、Atom 等
使用 Homebrew
Homebrew安裝配置完成后,我們來實(shí)操體驗(yàn)兩把。
這里是 homebrew 常用命令的一個(gè)清單,可供參考。
| 命令 | 描述 |
|---|---|
| brew update | 更新 Homebrew |
| brew search package | 搜索軟件包 |
| brew install package | 安裝軟件包 |
| brew uninstall package | 卸載軟件包 |
| brew upgrade | 升級(jí)所有軟件包 |
| brew upgrade package | 升級(jí)指定軟件包 |
| brew list | 列出已安裝的軟件包列表 |
| brew services command package | 管理 brew 安裝軟件包 |
| brew services list | 列出 brew 管理運(yùn)行的服務(wù) |
| brew info package | 查看軟件包信息 |
| brew deps package | 列出軟件包的依賴關(guān)系 |
| brew help | 查看幫助 |
| brew cleanup | 清除過時(shí)軟件包 |
| brew link package | 創(chuàng)建軟件包符號(hào)鏈接 |
| brew unlink package | 取消軟件包符號(hào)鏈接 |
| brew doctor | 檢查系統(tǒng)是否存在問題 |
| brew tap [user/repo] | 將開源倉庫添加到源 |
第一把,使用 Homebrew 安裝 JDK
作為一名 Java 后端程序員,JDK 是必須要安裝的,對(duì)吧?
1)執(zhí)行 brew search jdk 查找有哪些可供安裝的 JDK
2)執(zhí)行 brew install openjdk@17 安裝 JDK。

3)但我們?cè)?macOS 上安裝了多個(gè)版本的 JDK 后,怎么管理它們呢?可以安裝一下 jEnv,一個(gè)幫助我們管理 JAVA_HOME 的命令行工具,在 GitHub 上已經(jīng)收獲 4.3k 的 star。
GitHub 地址:https://github.com/jenv/jenv

官方文檔也非常的簡(jiǎn)潔大方:
https://www.jenv.be/

安裝:
brew install jenv
配置:
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc
添加:
jenv add /usr/local/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home/

JDK 的安裝路徑可以通過下圖的位置查找。

管理:
jenv versions
jenv global 17.0.3

是不是賊方便?再也不用整這 echo 'export PATH="/usr/local/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc 玩意了!爽,實(shí)在是爽!
第二把,使用 Homebrew 安裝 MongoDB
先看 MongoDB 的官方文檔(當(dāng)前 release 版本是 5.0,我這里就先用上一個(gè)穩(wěn)定版 4.4):
https://www.mongodb.com/docs/v4.4/tutorial/install-mongodb-on-os-x/
1)拉取 MongoDB 的源
brew tap mongodb/brew

2)更新 brew
brew update
3)安裝 MongoDB
brew install [email protected]
OK,安裝成功。

小結(jié)
通過 Homebrew 下載的軟件基本上來自于官網(wǎng),所以大可以放心。而且而且它盡可能地利用了系統(tǒng)自帶的各種庫,使得軟件包的編譯時(shí)間大大縮短,基本上不會(huì)造成冗余。
這里順帶給大家提一則小故事,教別人學(xué)算法的大佬可以拿走了:homebrew 的作者去面 Google,被考算法題: 反轉(zhuǎn)二叉樹,結(jié)果沒通過被拒了,??

好了好了,今天這篇文章就先水到這吧,我們下期見~
往期精彩回顧
適合初學(xué)者入門人工智能的路線及資料下載 (圖文+視頻)機(jī)器學(xué)習(xí)入門系列下載 中國(guó)大學(xué)慕課《機(jī)器學(xué)習(xí)》(黃海廣主講) 機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印 《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 機(jī)器學(xué)習(xí)交流qq群955171419,加入微信群請(qǐng)掃碼
