写在前面
最近由于一些brew原生包(本地编译包,如numpy、emacs等)相继发布,我也准备卸载intel版的brew下的一些包,转而拥抱m1优化版brew,但是卸载brew包的时候还有点小问题,那就是使用brew的命令uninstall
的话不能完全卸载干净,经过一番折腾,我找到了彻底卸载brew包的方法。
完全卸载方法
首先需要安装一个包,需要用tap选项从GitHub站点中克隆源码,终端输入:
ibrew tap beeftornado/rmtree
速度应该很快的.
注意这里我用的是Rosetta2转译的brew,这个配置了镜像速度会快很多,但是有的包(例如numpy)速度就不如本地编译版的速度快。
然后使用如下命令卸载包即可(例如我需要卸载opencv):
ibrew rmtree opencv
但是这里还有一个坑点,就是我执行这条命令的时候显示报错(后来发现这还是好的,至少没给我卸载了原生版brew安装的包):
rmtree Error: No available formula or cask with the name "opencv"
……
网上一顿查也没有合适的办法,后来静下心来慢慢想,才发现原来是环境变量设置的问题,还记得前面(m1 MBA配置Homebrew环境+国内源配置)我有提到,将两个brew都加到环境变量中,设置别名后就可以顺畅使用了:
export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"
alias ibrew='arch -x86_64 /usr/local/bin/brew'
但是这样设置的话在使用rmtree
卸载的时候就会有一个问题:brew默认的路径是/opt/homebrew/bin,这样rmtree
在搜寻brew包安装位置的时候,就会先选择原生版brew的包,而原生版并未安装这些包,所以就会发生报错,但是上面我说这还是好的了,是因为如果原生版里面安装了这些包,那rmtree就直接给卸载了,原生版直接拷源码安装是需要很长时间的。。所以卸载需谨慎啊!!
解决方案也很简单,注释掉~/.zshrc
中的环境变量,直接改成Rosetta2转译版的brew路径即可,即:
# export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"
export PATH="/usr/local/bin:$PATH"
然后执行rmtree卸载,执行之后换回原来的brew环境变量即可。
建议在卸载时候先使用ibrew list
看一下已经安装的包,然后再执行卸载,这样会安全点。