准备高机器学习,安装了很多组件,结果MAC空间不够,准备把之前安装的anaconda删除。结果出现这个问题。
出现这个问题以后,发现网络上对解决方法有各种各样的方法,但是对于我这个问题都无效。虽然现象一样,但是原因是多重的。
只好发挥我原厂3线技术支持工程师的能力,做了故障原因调查,记录下来,供大家参考。
其中的思路是层层迭代递归的,不熟悉,不习惯的读者需要多看几遍,可以帮助大家提高故障调查的能力。

问题描述:
在Mac上使用homebrew,无法安装或者卸载任何软件包。出现如下出错信息:
sudo brew uninstall anaconda3
Error: Running Homebrew as root is extremely dangerous and no longer supported.
As Homebrew does not drop privileges on installation you would be giving all
build scripts full access to your system.

环境:
MacOS Catalina 10.15

调查:
1,根据出错信息,要求不能使用root权限,所以把sudo去掉运行。结果如下:
brew uninstall anaconda3
Error: No such keg: /usr/local/Cellar/anaconda3

2,  每个软件包都会有一个keg,但是homebrew 报错,说没有,来看一下什么情况,结果如下:
ls /usr/local/Cellar/
aom gflags libffi metis rtmpdump
autoconf giflib libidn2 mpfr rubberband
autoconf-archive glib libmpc nettle sdl2
automake glog libogg numpy snappy
结果是的确没有。

3,思考,什么原因会没有?回忆安装的时候也是折腾了很久,由于MacOS的安全性要求,特意另外建了一个普通用户。
是不是这个造成的?验证一下。
首先切换用户:
zhangjianMacBook-Pro:~ zhangjian$ su richard
Password:
richard@zhangjianMacBook-Pro zhangjian %
验证:
richard@zhangjianMacBook-Pro zhangjian % brew uninstall anaconda3
Error: No such keg: /usr/local/Cellar/anaconda3
仍然不行。

4,再思考,是不是由于我手工清理空间,把不该删除的东东删除了?验证一下:
重新安装,修复anaconda:
richard@zhangjianMacBook-Pro zhangjian % brew install anaconda3
Error: /usr/local/Cellar is not writable. You should change the
ownership and permissions of /usr/local/Cellar back to your
user account:
sudo chown -R $(whoami) /usr/local/Cellar
当前用户没有权限访问目录/usr/local/Cellar,修复它。仍然报错:
richard@zhangjianMacBook-Pro zhangjian % sudo chown -R $(whoami) /usr/local/Cellar
Password:
richard is not in the sudoers file. This incident will be reported.
细细品报错信息,当前用户没有root权限是原因?再尝试一下:
切换回有root权限的用户:
richard@zhangjianMacBook-Pro zhangjian % su zhangjian
把权限赋予普通用户:
bash-3.2$ sudo chown -R richard /usr/local/Cellar
没有问题,这算是过了一关。回到上一层(迭代的思考方法,没有任何正式的,权威的命名,这是我的经验,暂且叫这种方法为迭代)
切换回普通用户:
bash-3.2$ su richard
修复anaconda
% brew install anaconda
Error: /usr/local/Homebrew is not writable. You should change the
ownership and permissions of /usr/local/Homebrew back to your
user account:
sudo chown -R $(whoami) /usr/local/Homebrew
...省略...

5,再再思考,回到步骤2,思考第一个步骤,是不是方向都错了?(这样思考的原因是:1,2,3,4的调查是顺藤摸瓜的方式,已经摸到第四层了,仍然没有确认到原因,所以可以认为可能性不大)
感觉有点困了,已经凌晨1点20分了。明天继续。


RichardZhangjian
1 声望0 粉丝