问题描述
MacOS常用的homebrew在安装或更新qt brew install qt
时
或在运行brew upgrade
时会对所有的库进行更新。
出现如下错误:
Error: /usr/local/opt/qt is not a valid keg
原因分析
输入命令ls -ld /usr/local/opt /usr/local/opt/qt
会出现:
$ ls -ld /usr/local/opt /usr/local/opt/zlib
drwxrwxr-x 196 dyc admin 6272 3 9 16:49 /usr/local/opt
drwxr-xr-x 3 dyc admin 96 3 9 16:37 /usr/local/opt/qt
运行brew doctor
会出现有如下的警告:
但是/usr/local/opt
下的所有内容(至少现在是这样)都应该是指向Cellar
的符号链接:(在解决完之后的正确输出)
$ ls -ld /usr/local/opt /usr/local/opt/qt
drwxrwxr-x 196 dyc admin 6272 3 9 16:59 /usr/local/opt
lrwxr-xr-x 1 dyc admin 19 3 9 16:47 /usr/local/opt/qt -> ../Cellar/qt/5.11.0
解决方法
首先将/usr/local/opt/qt
文件夹下的内容进行删除(建议备份一下):
# 拷贝来进行备份,将dyc替换为你的用户名
cp -r /usr/local/opt/qt /Users/dyc/
# 删除文件,如果需要root权限就sudo一下
rm -r /usr/local/opt/qt
根据brew doctor
的提示,建立符号连接:
brew link --overwrite qt
可以看到上一小节最后部分的正确输出。
然后再运行安装或更新命令就可以了
brew install qt# 或brew upgrade
注:解决方法同样适用于zlib等库的错误。
Error: /usr/local/opt/zlib is not a valid keg