Homebrew總結(jié)

homebrew

HomeBrew就是MacOS下最著名的包管理器,我使用它的目的就是讓MacOS下的命令行和Linux下一樣順手。

安裝

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

上面這句話的意思是使用curl命令行下載安裝腳步install,然后用ruby解析執(zhí)行這個(gè)安裝腳步。

安裝好之后

echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bash_profile

后面的.bash_profile請(qǐng)根據(jù)你使用shell的情況來修改。

現(xiàn)在homebrew的最新版本是1.0.0。

使用以下命令查看版本。

brew -v

基本操作

安裝一個(gè)包

brew install <formula>

但是麻煩的是你往往不記得包名或者記不全,這里有兩個(gè)方法,第一個(gè)是使用brew search進(jìn)行搜索,比如你想找vim這個(gè)包,但你只記得了前面兩個(gè)字母,最后一個(gè)m給忘記了,這時(shí)候你可以嘗試下面但命令:

brew search vi

結(jié)果出來了,但是結(jié)果太多了,包括了很多不是vi開頭的包,這個(gè)時(shí)候你就得用正則表達(dá)式來搜索,這對(duì)小白來說也是非常痛苦的,因?yàn)橐獙W(xué)會(huì)正則表達(dá)式也得看一本書,但是一旦你熟悉它之后,你會(huì)發(fā)現(xiàn)你會(huì)在每個(gè)搜索的場(chǎng)景下都希望它支持正則表達(dá)式的搜索,正如你熟悉了編輯器vim之后,希望處處都是vim模式一樣。

brew search /正則表達(dá)式/ # 標(biāo)準(zhǔn)格式
brew search /^vi/   #規(guī)定了只能是vi開頭
brew search /^vi\\w$/   #規(guī)定只能是vi開頭并且只有三個(gè)字母

第二種方法更適合小白用戶,前提是你安裝了oh-my-zsh,使用過oh-my-zsh的用戶都知道其補(bǔ)全功能非常牛逼,它可以補(bǔ)全命令,命令的選項(xiàng)和參數(shù),還可以補(bǔ)全包管理器的包名,是不是很厲害,但是默認(rèn)oh-my-zsh是不支持HomeBrew的,所以我們需要這樣做:

brew install zsh-completions

使用homebrew安裝原本需要圖形安裝的軟件比如chrome。

brew cask install <formula>

一般來說不帶任何選項(xiàng)的話,homebrew會(huì)優(yōu)先下載二進(jìn)制,二進(jìn)制下載不到就會(huì)嘗試從源碼編譯,這也是homebrew強(qiáng)大的地方之處。

比如,我們希望更新最新的vim,這就得從源碼編譯了,從源碼編譯過vim的人都知道,有很多選項(xiàng)要用戶決定,然后homebrew是如何做到的呢,我們?cè)撊绾沃付ㄟx項(xiàng)呢?

brew info <formula>  #查看這個(gè)包的信息,從中我們可以得知有哪些選項(xiàng)可選。

#示例
brew install vim --HEAD --with-override-system-vi --with-lua

然后,homebrew就會(huì)幫我們解決編譯過程中的任何依賴了,是不是很爽?

細(xì)心的人可能也注意到了,并沒有找到所有在vim源碼makefile中的提供的選項(xiàng),這是因?yàn)橹С质裁催x項(xiàng)取決于該包對(duì)應(yīng)的formula文件,通常位于/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula文件夾中,你可以使用下面的命令來編輯它,該文件遵循ruby語法:

brew edit <package_name>

卸載與跟新

# 卸載對(duì)應(yīng)包名字
brew uninstall <package_name>
# 列出過時(shí)的包
brew outdated
# 更新過時(shí)的包,不帶包名就跟新所有包
brew upgrade [ package_name ]
# 跟新HomeBrew自身
 brew update
# 清除緩存
brew cleanup [包名]
# 列出已經(jīng)安裝的包
brew list

如果該包有多個(gè)版本,那么先使用brew switch <包名> <版本號(hào)>來切換到該版本然后再使用uninstall來卸載,如果卸載全部版本那么使用--force選項(xiàng)。

擴(kuò)展

就像ubuntu的ppa一樣,很多時(shí)候有些軟件包并不在官方提供列表里面而是由第三方提供的這個(gè)時(shí)候,我們就需要使用下面的命令:

brew [un]tap <github_userid/repo_name> #添加或者刪除倉(cāng)庫(kù)

注意repo_name只是實(shí)際倉(cāng)庫(kù)名的一部分,而實(shí)際倉(cāng)庫(kù)名的前綴必須是homebrew-。比如

brew tap neovim/neovim
# 這樣實(shí)際倉(cāng)庫(kù)名就是homebrew-neovim

官方文檔中提出brew tap作用用于添加更多倉(cāng)庫(kù),默認(rèn)情況下tap假設(shè)這些倉(cāng)庫(kù)來源于github,但又不局限于它。

不帶參數(shù)的話,將會(huì)列出當(dāng)前已經(jīng)tapped的倉(cāng)庫(kù),比如:

brew tap
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
No changes to formulae.

caskroom/cask
homebrew/core
homebrew/dupes
neovim/neovim

總共列出了四個(gè)倉(cāng)庫(kù),其中前面三個(gè)是默認(rèn)自帶的。

如果你要增加的倉(cāng)庫(kù)已經(jīng)存在于homebrew/core中了(名字一樣),你必須顯性的安裝:

brew install vim                     # installs from homebrew/core
brew install username/repo/vim       # installs from your custom repo

更換源

由于各種原因,用homebrew跟新下載軟件有時(shí)非常慢,這個(gè)時(shí)候你可以嘗試更換源,這個(gè)概念和其它包管理器的概念是一致的,也就是換個(gè)軟件服務(wù)器。

有兩個(gè)源,第一個(gè)是homebrew自身程序公式的服務(wù)器地址,homebrew是托管于github,如果你訪問這個(gè)網(wǎng)站沒有問題,那就不需要換了,要換也非常簡(jiǎn)單,相當(dāng)于給你的git倉(cāng)庫(kù)換一個(gè)遠(yuǎn)程地址,而homebrew的倉(cāng)庫(kù)位置默認(rèn)位于/usr/local/Homebrew下(這個(gè)位置是homebrew 1.0之后才變的)。

cd /usr/local/Homebrew
git remote set-url origin http://mirrors.ustc.edu.cn/homebrew.git

cd ~
mkdir tmp
cd tmp
git clone http://mirrors.ustc.edu.cn/homebrew.git
 
cp -R homebrew/.git /usr/local/Homebrew
cp -R homebrew/Library /usr/local/Homebrew

第二個(gè)源就是二進(jìn)制的服務(wù)器地址,做法很簡(jiǎn)單就是

echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zshrc
source ~/.zshrc

Homebrew中一些路徑的解釋

Homebrew 1.0的基礎(chǔ)上,

Caskroom  Frameworks  bin  include  opt   share
Cellar    Homebrew    etc  lib      sbin  var
  • Cellar:文件夾存放的是所有包安裝所在路徑,包括二進(jìn)制,文檔和配置文件,按照這樣Cellar/包名/版本號(hào)/的形式來安放。

  • opt:由于版本號(hào)隨著跟新而改變的,所以需要一個(gè)固定不變的路徑作為我們?cè)L問二進(jìn)制和文檔的路徑,這就是opt的作用。

  • Homebrew:brew程序所在路徑.

  • bin:所有包安裝之后二進(jìn)制都會(huì)鏈接到這個(gè)路徑下

  • share:所有包安裝之后的文檔都會(huì)鏈接到這個(gè)路徑下

  • etc:同上,所有包的配置文件

  • lib:同上,所有包相關(guān)庫(kù)文件

  • Caskroom:app文件

MacOS下gnu命令行

MacOS下的命令行是bsd的,而且好久沒跟新,各種不順手,所以這一小節(jié)的目的是介紹通過homebrew安裝gnu的命令行工具代替系統(tǒng)自帶的命令行。

# GNU File, Shell, and Text utilities
brew info coreutils
brew install coreutils

從第一條命令得知,安裝之后,所有命令都是帶有g前綴的,這會(huì)讓我們非常不爽,所以如果你希望使用它們?cè)瓉淼拿值脑?,就將這個(gè)路徑加到PATH變量的最前頭。

PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH" #這句話放到你shell配置文件中
MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH" #默認(rèn)使用他們的manpage

可以看出還是比較麻煩的,而且有些包像binutils并沒有提供這樣的鏈接,但是卻有g(shù)前綴。

下面這些軟件也是我們常用的,

brew install binutils
brew install ed --with-default-names
brew install findutils --with-default-names
brew install gawk
brew install curl --with-libidn --with-libssh2 --with-nghttp2 --with-rtmpdump
brew install gnu-indent --with-default-names
brew install gnu-sed --with-default-names
brew install gnu-tar --with-default-names
brew install gnu-which --with-default-names
brew install gnutls
brew install grep --with-default-names
brew install gzip
brew install screen
brew install watch
brew install wdiff --with-gettext
brew install wget
brew install bash zsh
brew install gdb  # gdb requires further actions to make it work. See `brew info gdb`.
brew install gpatch
brew install m4
brew install make
brew install nano
brew install rsync
brew install svn
brew install unzip
brew install aria2
brew install git 
brew install ffmpeg
brew install ctags cscope the_silver_searcher
brew install vim --HEAD --with-override-system-vi --with-lua
brew install neovim --HEAD --with-release
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容