好用到爆!GitHub 星標 32.5k+的命令行軟件管理神器,功能真心強大!

前言(廢話)

本來打算在公司偷偷摸摸給星球的用戶寫一篇編程喵整合 MongoDB 的文章,結果在通過 brew 安裝 MongoDB 的時候竟然報錯了。原因很簡單,公司這臺 Mac 上的 homebrew 環境沒有配置好。剛好 Java 程序員進階之路上缺少這樣一篇內容。

所以我就想,不如趁機水一篇吧,啊,不不不,趁機給小夥伴們普及一下 Homebrew 吧!瞧我這該死的大公無私的心(手動狗頭)。

不會吧?不會還有人用 macOS 沒有安裝/配置 Homebrew 吧?

Homebrew 能幹什麼

Homebrew 的 Slogan :The missing package manager for macOS (or Linux)

Homebrew 這款命令行軟件管理神器在 GitHub 上已經有 32.5k+ 的 star 了,功能也真心強大,幾乎 macOS 上的軟件包它都包了。Homebrew 本身沒有問題,問題在於。。。。。不說了,你懂的。

Homebrew 除了是 macOS 的包管理器也可以裝在 Linux 上成爲 Linux 的包管理器,僅需要執行相應的命令,就能下載安裝需要的軟件包,省去了下載、解壓、拖拽等繁瑣的步驟。

用 Homebrew 官方的話來總結就是:安裝 Apple(或 Linux 系統)沒有預裝但你需要的軟件。比如說安裝 MongoDB,只需要執行以下命令就可以安裝,前提條件是環境一定要配置好。

brew install mongodb

簡單一條命令,就可以實現包管理,還不用擔心依賴/文件路徑等問題。

Homebrew 主要由四個部分組成: brew、homebrew-core 、homebrew-cask、homebrew-bottles。

  • brew:Homebrew 的源代碼倉庫
  • homebrew-core:Homebrew 的核心源
  • homebrew-cask:提供 macOS 應用和大型二進制文件的安裝
  • homebrew-bottles:預編譯二進制軟件包

再來了解一下 Homebrew 的接個核心概念,後續會經常用到。

  • formula(e),安裝包的描述文件,帶 e 爲複數
  • cellar,包安裝好後所在的目錄
  • bottle,預先編譯好的包,不需要再下載源碼編譯,速度會快很多,官方庫中的包大多數是通過 bottle 方式安裝的
  • tap,下載源
  • cask(s),安裝 macOS native 應用的擴展,可以理解爲有圖形化界面的應用,帶 s 爲複數
  • bundle,描述 Homebrew 依賴的擴展

安裝配置 Homebrew

世上無難事,只要找到 Homebrew 的正確安裝方式。

按理說,Homebrew 的安裝方式非常簡單,只需要執行官方的一句命令就可以完成安裝了。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

但國內開發者命苦就苦在,經常會因爲網絡的原因安裝失敗。原因我只能說這是 https://raw.githubusercontent.com 網站的鍋,誰讓它訪問不穩定呢?

怎麼辦呢?

必須換一種高效且科學的安裝方式,那就是使用鏡像安裝。 Gitee 上有開源作者提供了一鍵安裝包,只需要執行以下命令就可以了。

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

安裝腳本里提供了中科大、清華大學、北京外國語大學、騰訊、阿里巴巴等下載源。

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

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

再次感謝 Gitee 上這位大牛,已經 3k star 了,我把地址貼出來:

https://gitee.com/cunkai/HomebrewCN

brew 本體安裝成功後,會提示我們配置國內鏡像源。

nice,安裝完成了。執行下面這幾個命令體驗下。

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

brew 和 brew cask 的區別

這裏順帶說一下 brew 和 brew cask 的區別,這也是一開始我使用 brew 時困惑的一個點。

以前的版本中,是可以直接 brew cask list 這樣執行命令的,現在改成了 brew list --cask

brew 是從下載源碼開始,然後編譯(不一定,有些有現成的 bottle)解壓,通過 ./configure && make install 進行安裝,同時會包含相關的依賴庫。環境變量也是自動配置的。

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

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

  • 「Formulae」一般是那些命令行工具、開發庫、字體、插件等不含 GUI 界面的軟件。
  • 「Cask」就會包含一些 GUI 圖形化界面的軟件,如 Google Chrome、FireFox 、Atom 等

使用 Homebrew

Homebrew安裝配置完成後,我們來實操體驗兩把。

這裏是 homebrew 常用命令的一個清單,可供參考。

命令 描述
brew update 更新 Homebrew
brew search package 搜索軟件包
brew install package 安裝軟件包
brew uninstall package 卸載軟件包
brew upgrade 升級所有軟件包
brew upgrade package 升級指定軟件包
brew list 列出已安裝的軟件包列表
brew services command package 管理 brew 安裝軟件包
brew services list 列出 brew 管理運行的服務
brew info package 查看軟件包信息
brew deps package 列出軟件包的依賴關係
brew help 查看幫助
brew cleanup 清除過時軟件包
brew link package 創建軟件包符號鏈接
brew unlink package 取消軟件包符號鏈接
brew doctor 檢查系統是否存在問題
brew tap [user/repo] 將開源倉庫添加到源

第一把,使用 Homebrew 安裝 JDK

作爲一名 Java 後端程序員,JDK 是必須要安裝的,對吧?

1)執行 brew search jdk 查找有哪些可供安裝的 JDK

2)執行 brew install openjdk@17 安裝 JDK。

3)但我們在 macOS 上安裝了多個版本的 JDK 後,怎麼管理它們呢?可以安裝一下 jEnv,一個幫助我們管理 JAVA_HOME 的命令行工具,在 GitHub 上已經收穫 4.3k 的 star。

GitHub 地址:https://github.com/jenv/jenv

官方文檔也非常的簡潔大方:

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 玩意了!爽,實在是爽!

第二把,使用 Homebrew 安裝 MongoDB

先看 MongoDB 的官方文檔(當前 release 版本是 5.0,我這裏就先用上一個穩定版 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,安裝成功。

小結

通過 Homebrew 下載的軟件基本上來自於官網,所以大可以放心。而且而且它儘可能地利用了系統自帶的各種庫,使得軟件包的編譯時間大大縮短,基本上不會造成冗餘。

這裏順帶給大家提一則小故事,教別人學算法的大佬可以拿走了:homebrew 的作者去面 Google,被考算法題: 反轉二叉樹,結果沒通過被拒了,😆

好了好了,今天這篇文章就先水到這吧,我們下期見~


沒有什麼使我停留——除了目的,縱然岸旁有玫瑰、有綠蔭、有寧靜的港灣,我是不繫之舟

本文已收錄到 GitHub 上星標 2.8k+ 的開源專欄《Java 程序員進階之路》,據說每一個優秀的 Java 程序員都喜歡她,風趣幽默、通俗易懂。內容包括 Java 基礎、Java 併發編程、Java 虛擬機、Java 企業級開發(Git、Nginx、Maven、Intellij IDEA、Spring、Spring Boot、Redis、MySql 等等)、Java 面試等核心知識點。學 Java,就認準 Java 程序員進階之路😄。

https://github.com/itwanger/toBeBetterJavaer

star 了這個倉庫就等於你擁有了成爲了一名優秀 Java 工程師的潛力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章