好用到爆!GitHub 星標 32.5k+的命令行軟體管理神器,功能真心強大!
- 2022 年 6 月 27 日
- 筆記
- Github, JAVA, Java程式設計師進階之路
前言(廢話)
本來打算在公司偷偷摸摸給星球的用戶寫一篇編程喵整合 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 //raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
但中國開發者命苦就苦在,經常會因為網路的原因安裝失敗。原因我只能說這是 //raw.githubusercontent.com
網站的鍋,誰讓它訪問不穩定呢?
怎麼辦呢?
必須換一種高效且科學的安裝方式,那就是使用鏡像安裝。 Gitee 上有開源作者提供了一鍵安裝包,只需要執行以下命令就可以了。
/bin/zsh -c "$(curl -fsSL //gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
安裝腳本里提供了中科大、清華大學、北京外國語大學、騰訊、阿里巴巴等下載源。
但過來人告訴你,別選其他鏡像源,就選中科大,速度杠杠的,40-50M/s,這速度比其他鏡像源快多了,對比起來,其他就是蝸牛🐌。
這個安裝腳本非常的智慧,幾乎可以一件幫我們搞定所有問題。
再次感謝 Gitee 上這位大牛,已經 3k star 了,我把地址貼出來:
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 地址://github.com/jenv/jenv
官方文檔也非常的簡潔大方:
安裝:
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):
//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 程式設計師進階之路😄。
//github.com/itwanger/toBeBetterJavaer
star 了這個倉庫就等於你擁有了成為了一名優秀 Java 工程師的潛力。