mac brew


参考 https://www.xiebruce.top/720.html

先看总结:
一般情况安装软件都是这样的:brew update brew install vim
brew先去GitHub上升级自己,然后去formula库(也是在GitHub上)查询vim的依赖、下载地址等
然后去Bottles仓库下载vim的依赖和vim安装到我们的电脑上。

最新解决下载慢的问题
https://gitee.com/cunkai/HomebrewCN/
-------以下为之前的内容-----------

brew下载慢,存在三个原因:

  • 去GitHub中升级自身慢
  • 去GitHub的formula仓库解析软件信息慢
  • 去软件仓库(Bottles)下载软件慢

解决这三个问题就可以加速。

ruby

ruby是一种编程语言,homebrew就是用ruby写的。

安装brew

官网 https://brew.sh/index_zh-cn
官网给出了安装命令

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

解释下上面的命令,使用curl(下载工具)下载https://raw.githubusercontent.com/Homebrew/install/master/install.sh文件,然后使用/bin/bash执行下载的install.sh就可以安装homebrew。

Homebrew

本身它就是一个用ruby写的软件,软件是托管在github上的,所以下载的时候可能会很慢。同样,每次执行brew update的时候它会首先去更新自己,故每次可能都会很慢。
解决的办法是不从GitHub上下载,而是从国内源下载,比如中科大。

cd "$(brew --repo)"
git remote set-url origin git://mirrors.ustc.edu.cn/brew.git

可以使用下面的命令查看当前的远程仓库

git remote get-url origin
git remote -v

两条命令都可以。
设置远程仓库是中科大mirror,执行更新brew的时候就不是去GitHub上下载新版本,而是从中科大源上下载。

Formula

formula 定义了一个软件包。包括了这个软件的,依赖、源码位置及编译方法等。
当我们安装一个软件,比如brew install vim的时候,vim就会被送到formula仓库中匹配获取vim的依赖、编译方法、下载地址等等。然后按照匹配的结果去安装依赖、下载软件安装到我们的电脑上。
注意formula仓库并没有软件本身,而是记录了一些软件的信息。
formula仓库可以有很多,默认的是core,使用brew tap命令可以查看当前有几个formula库,下面是我的:

# kun @ localhost in ~ [22:31:27] 
$ brew tap
homebrew/core

默认这个库是在github上的,所以很慢也是很正常的。所以我们可以把它更换成国内的:

cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin git://mirrors.ustc.edu.cn/homebrew-core.git

参考debian的apt包管理器,除了官方仓库,也可以添加其他仓库,formula也是支持的。
比如cask就是安装带gui的软件的。

Bottles

如果用的是bash

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

如果用的是zsh(我就用的是zsh)

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

当然也可以直接在~目录下创建.bash_profile 或者.zshrc然后用文本编辑器添加 export·····/homebrew-bottles,然后执行source命令使之生效。

One more thing

卸载的时候无法卸载依赖的解决办法:
使用rmtree,先安装,然后brew rmtree 包,即可

brew tap beeftornado/rmtree
brew rmtree