更換Homebrew的更新源

  歡迎參與討論,轉載請註明出處。
  本文轉載自https://musoucrow.github.io/2017/03/29/brew_changing/

前言

  更換Homebrew的更新源的教程,在網上數不勝數,然內容大多大同小異且述之不詳,且未提及版本上的差異。故作此文,以正視聽。
  在閱讀此文之前,你需要了解HomebrewGit並安裝了它們。並且對於Homebrew官方更新源的速度趕到不滿且不打算利用其它手段解決(如VPN),或者看了其它文章感到不求甚解,那麼此文對你而言是有價值的。

更新源的機制

  Homebrew的更新源由三部分組成:本體(brew.git)、核心(homebrew-core.git)以及二進制預編譯包(homebrew-bottles)。
  在很多教程中,只會提及到更換本體,而未涉及到核心與二進制預編譯包的更換。這樣實際上效果是不完全的(儘管這樣也無法做到完全,畢竟有一些軟件包的地址是不被收錄的,只能從它們提供的鏈接處下載)。
  從.git的後綴名可以看出,Homebrew的更新源是以Git倉庫的形式存在的,這便是爲什麼需要用到Git的原因。也正是如此,使得可以對其進行克隆,成爲新源。

更新源的選擇

  默認官方的更新源都是存放在GitHub上的,這也是中國大陸用戶訪問緩慢的原因,一般來說我們會更傾向選擇國內提供的更新源,在此推薦中國科大以及清華大學提供的更新源,因爲它們能夠完整以上源組成的三個部分。並且在此感謝他們爲大家提供的服務。
  

替換更新源

# 替換brew.git:
$ cd "$(brew --repo)"
# 中國科大:
$ git remote set-url origin https://mirrors.ustc.edu.cn/brew.git
# 清華大學:
$ git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git

# 替換homebrew-core.git:
$ cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
# 中國科大:
$ git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
# 清華大學:
$ git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git

# 替換homebrew-bottles:
# 中國科大:
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
$ source ~/.bash_profile
# 清華大學:
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles' >> ~/.bash_profile
$ source ~/.bash_profile

# 應用生效:
$ brew update

  以上在中國科大和清華大學任選其一即可,在使用其他源的時候,最好先嚐試訪問其鏈接看看是否健在,並且因爲歷史原因,最初的brew.git是叫homebrew.git的,而現在部分更新源早已隨官方更名,所以切記要驗證。
  並且沒有嚴格規定必須三個組成部分必須是來自同一提供,可隨性發揮。
  且Homebrew在早期版本中更新源的是在/usr/local目錄下的,而現在是在/usr/local/Homebrew,不過應該都是可以使用"$(brew --repo)"來自動指向目錄的,所以無需理會。
  如果你之前折騰過不少導致你的Homebrew有點問題,那麼可以嘗試使用如下方案:

# 診斷Homebrew的問題:
$ brew doctor

# 重置brew.git設置:
$ cd "$(brew --repo)"
$ git fetch
$ git reset --hard origin/master

# homebrew-core.git同理:
$ cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
$ git fetch
$ git reset --hard origin/master

# 應用生效:
$ brew update

重置更新源

  所謂有進則有退,在某些時候也有換回官方源的需求。

# 重置brew.git:
$ cd "$(brew --repo)"
$ git remote set-url origin https://github.com/Homebrew/brew.git

# 重置homebrew-core.git:
$ cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
$ git remote set-url origin https://github.com/Homebrew/homebrew-core.git

  至於homebrew-bottles,本質上作爲一個環境變量的存在,之前的命令也只是將其寫入到/usr/.bash_profile中,並且只是在文件尾部添加一行。所以之前的命令不推薦重複執行,在未掌握相關命令技巧的前提下,我推薦直接去修改.bash_profile文件:bash_profile
  當然這裏的主題是重置更新源,所以我們直接選擇刪除環境變量HOMEBREW_BOTTLE_DOMAIN,使其成爲默認值即可。
  當然,最後不要忘記$ brew update進行應用。

後記

  在完成更新源的更換後,我們可以使用$ brew upgrade將現有的軟件進行更新至最新版本,這樣便能很直接的看出速度上的變化了。最後不要忘記$ brew cleanup將舊有的軟件安裝包進行清理。

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