Homebrew更新相關(guān)小技巧

歡迎轉(zhuǎn)載然遏,但請(qǐng)?jiān)陂_(kāi)頭或結(jié)尾注明原文出處【blog.chaosjohn.com】

前言

筆者在四年前曾寫(xiě)過(guò)一文HomeBrew -- OSX下的最強(qiáng)軟件包管理器,篇中詳細(xì)介紹了HomeBrew以及Cask的使用吧彪。

多年過(guò)去了待侵,Homebrew依舊非常流行,但內(nèi)在也發(fā)生了很多變化来氧,比如Cask原先作為第三方Tap的存在诫给,現(xiàn)已整合到Homebrew內(nèi),在未安裝Cask的環(huán)境里啦扬,執(zhí)行 brew cask install ${app}中狂,Homebrew則會(huì)自動(dòng)安裝Cask。

同時(shí)扑毡,在Homebrew的日常使用中胃榕,筆者也遇到了很多問(wèn)題,本文就著重于“踩坑”和“填坑”瞄摊。

“這些年遇到的坑”

Homebrew自動(dòng)更新

brew 提供了 update 命令勋又,但是你執(zhí)行 installupgrade 時(shí),都會(huì)強(qiáng)制性先 update换帜,浪費(fèi)寶貴的時(shí)間楔壤。

解決

  • brew命令前加上變量HOMEBREW_NO_AUTO_UPDATE=1,變?yōu)?$ HOMEBREW_NO_AUTO_UPDATE=1 brew install …
  • 或使用alias別名惯驼,在.bashrc或.zshrc中新增一行 alias brew="HOMEBREW_NO_AUTO_UPDATE=1 brew"
  • 或?qū)С霏h(huán)境變量蹲嚣,在.bashrc或.zshrc中新增一行 export HOMEBREW_NO_AUTO_UPDATE=1,筆者推薦這種方法
  • 或者使用 Homebrew/aliases祟牲,執(zhí)行 brew alias install_no_autoupdate='!HOMEBREW_NO_AUTO_UPDATE=1 brew install'install_no_autoupdate 名字任意更換)隙畜,以后要執(zhí)行無(wú)預(yù)更新的 brew install ${formula} 操作,都改為 brew install_no_autoupdate ${formula}

Cask 安裝的應(yīng)用说贝,和 App Store 安裝的應(yīng)用议惰,都混在了一起

因?yàn)殡p方都把應(yīng)用安裝到了 /Applications 目錄下,所以導(dǎo)致

  1. 分不清應(yīng)用到底是Cask安裝的乡恕,還是App Store里安裝的
  2. 如果Cask和App Store安裝同一款應(yīng)用言询,則后安裝或更新的應(yīng)用俯萎,就會(huì)覆蓋掉先前存在的版本

解決export HOMEBREW_CASK_OPTS="--appdir=~/Applications/_",這樣Cask會(huì)自動(dòng)將應(yīng)用都安裝到用戶(hù)目錄下的 Applications/_/ 里倍试。

這里我想介紹一下我在mac下的應(yīng)用管理讯屈,僅供參考:

  • App Store安裝的應(yīng)用,都位于 /Applications/
  • Cask安裝的應(yīng)用县习,都位于 ~/Applications/_/
  • 網(wǎng)絡(luò)上搜羅來(lái)的破解應(yīng)用涮母,都位于 ~/Applications/#/
  • JetBrains公司的IDE,都用 JetBrains Toolbox 進(jìn)行安裝管理(當(dāng)然Toolbox本身是用Cask進(jìn)行安裝的)
  • 其他開(kāi)源/免費(fèi)的應(yīng)用躁愿,都位于 ~/Applications/

Cask 批量更新應(yīng)用

在前文HomeBrew -- OSX下的最強(qiáng)軟件包管理器中筆者曾給出過(guò)一行shell腳本用來(lái)批量更新Cask的應(yīng)用叛本,但是這么多年過(guò)去了,這行腳本筆者不再推薦使用彤钟。
解決brew tap buo/cask-upgrade来候,項(xiàng)目鏈接,安裝完之后逸雹,

  • 執(zhí)行: brew cu营搅,更新所有“存在更新版本”的應(yīng)用
  • 執(zhí)行: brew cu ${app},更新特定app
  • 選項(xiàng): -a, --all梆砸,包含標(biāo)記了 auto-update 的應(yīng)用转质;-f, --force,包含當(dāng)前版本號(hào)為 latest 的應(yīng)用帖世;-y, --yes休蟹,對(duì)所有詢(xún)問(wèn)是否確認(rèn)更新,自動(dòng)應(yīng)答 yes

因國(guó)內(nèi)網(wǎng)絡(luò)環(huán)境導(dǎo)致brew速度慢

這里的慢包含兩方面:brew update 慢 & brew install

解決方案A: 換源策略

  1. brew update 慢日矫,參考清華鏡像源指南
  2. brew install 慢赂弓,參考清華鏡像源指南

解決方案B: 代理策略, export all_proxy=socks5://${host}:${port},替換自己代理主機(jī)地址和端口即可

Error: SHA256 mismatch / Error: Checksum mismatch

前者是 brew 后者是 cask哪轿,錯(cuò)誤原因盈魁,倉(cāng)庫(kù)里記載的校驗(yàn)值和實(shí)際下載下載的文件校驗(yàn)值不一致

解決: 執(zhí)行 rm -rf ~/Library/Caches/Homebrew 將本地緩存目錄刪除后重試,有概率能解決問(wèn)題窃诉,適用于軟件發(fā)行者修改應(yīng)用后缺沒(méi)有更改版本號(hào)就發(fā)行出去的情況备埃。若未解決,針對(duì)于 brew褐奴,編輯 /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/${formula}.rb,針對(duì)于 cask于毙,編輯 /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Casks/${app}.rb敦冬,將 sha256修改為實(shí)際校驗(yàn)值,保存唯沮,再次執(zhí)行先前操作脖旱,大概率能成功堪遂。切記兩點(diǎn)主意事項(xiàng):

  1. 需禁用brew的自動(dòng)更新,否則前腳剛改完校驗(yàn)值萌庆,后腳自動(dòng)更新就把校驗(yàn)值改回來(lái)了
  2. 更改校驗(yàn)值后不要關(guān)閉編輯器溶褪,等安裝/更新應(yīng)用成功后,立即撤銷(xiāo)更改践险,再關(guān)閉編輯器猿妈,因?yàn)閎rew和cask的倉(cāng)庫(kù)是用git管理的,更改倉(cāng)庫(kù)文件對(duì)后續(xù)的更新會(huì)造成沖突巍虫。如果發(fā)生沖突了彭则,也別擔(dān)心,到倉(cāng)庫(kù)根目錄執(zhí)行 git reset --hard恢復(fù)原樣占遥。brew 的倉(cāng)庫(kù)目錄位于 /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/俯抖;cask 的倉(cāng)庫(kù)目錄位于 /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瓦胎,隨后出現(xiàn)的幾起案子芬萍,更是在濱河造成了極大的恐慌,老刑警劉巖搔啊,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柬祠,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡坯癣,警方通過(guò)查閱死者的電腦和手機(jī)瓶盛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)示罗,“玉大人惩猫,你說(shuō)我怎么就攤上這事⊙恋悖” “怎么了轧房?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)绍绘。 經(jīng)常有香客問(wèn)我奶镶,道長(zhǎng),這世上最難降的妖魔是什么陪拘? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任厂镇,我火速辦了婚禮,結(jié)果婚禮上左刽,老公的妹妹穿的比我還像新娘捺信。我一直安慰自己,他們只是感情好欠痴,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布迄靠。 她就那樣靜靜地躺著秒咨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪掌挚。 梳的紋絲不亂的頭發(fā)上雨席,一...
    開(kāi)封第一講書(shū)人閱讀 49,842評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音吠式,去河邊找鬼陡厘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛奇徒,可吹牛的內(nèi)容都是我干的雏亚。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼摩钙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼罢低!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起胖笛,我...
    開(kāi)封第一講書(shū)人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤网持,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后长踊,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體功舀,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年身弊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辟汰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡阱佛,死狀恐怖帖汞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情凑术,我是刑警寧澤翩蘸,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站淮逊,受9級(jí)特大地震影響催首,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜泄鹏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一郎任、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧备籽,春花似錦涝滴、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至诈唬,卻和暖如春韩脏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背铸磅。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工赡矢, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人阅仔。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓吹散,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親八酒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子空民,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349