【Mac】cp: utimensat: /usr/local/Cellar/gdbm/.: Permission denied
参考地址:https://blog.csdn.net/u014358608/article/details/80058520
https://blog.csdn.net/GuanZhong12345/article/details/106010174
https://blog.csdn.net/qq_43413788/article/details/123900500
https://support.apple.com/en-us/HT204899
1.问题背景:在mac电脑中,使用brew安装软件,尝试在终端执行命令:brew update && brew install azure-cli,最终安装失败,提示信息如下:
Error: Failure while executing; `cp -pR /private/tmp/d20220526-1181-8ncw4m/gdbm/. /usr/local/Cellar/gdbm` exited with 1. Here's the output:
cp: utimensat: /usr/local/Cellar/gdbm/.: Permission denied
cp: chmod: /usr/local/Cellar/gdbm/.: Operation not permitted
2.解决方案步骤:
2.1 修改文件夹权限
我先将上述提到的文件夹/gdbm/.权限进行了查看,并增加了当前用户对该文件的读写权限。用命令行查看,其他用户拥有读写执行的权限。

接着执行安装的命令,还是报一样的错误。
2.2 禁用 Rootless机制
2.2.1 查看本机Rootless 状态
苹果从 OS X El Capitan 10.11 系统开始使用了 Rootless 机制(我mac的版本是10.15.7),可以将该机制理解为一个更高等级的系统的内核保护措施,系统默认将会锁定 /system、/sbin、/usr 这三个目录。
在终端输入命令:csrutil status,显示 enable
2.2.2 禁用Rootless机制
重启电脑,开机时按住 ctrl和R键,进入恢复模式,点击常用工具--终端,输入命令:csrutil disable,正常启动电脑,在终端再次输入命令:csrutil status ,显示disable。

注:当你修改完之后,一定要再修改回去,和disable的方法一样,进入恢复模式,输入命令: csrutil enable。
此时我又尝试了执行安装的命令,还是报一样的错误。
2.3 再次修改修改文件权限
在终端输入sudo chflags norestricted /usr/local(将该文件解除保护) && sudo chown -R $(whoami):admin /usr/local (将该文件夹所有者修改为当前用户)

再次执行该安装命令,安装成功。

写给自己的话:之后可以按照 https://segmentfault.com/a/1190000037429342 这篇文章中最安全的方法再试一遍,对上述提到的命令要进行查询和学习。

浙公网安备 33010602011771号