当我尝试对 /usr/bin 文件夹中的二进制文件进行符号链接时,出现 Operation not allowed 错误:
sudo ln -s /usr/bin/python2.7 /usr/bin/python2
ln: /usr/bin/python2: Operation not permitted
即使是 sudo,我也会收到此错误。
/usr/bin
?El Capitan 的新系统完整性保护功能可以防止对 OS X 的几个核心部分进行更改,包括大部分/usr/
,甚至是 root。
/usr/local
相反,本地自定义,例如您正在做的事情,属于其中。默认情况下该路径/usr/local/bin
不存在,但您可以创建它并将自定义二进制文件(和符号链接)放入其中:
sudo mkdir -p /usr/local/bin
sudo ln -s /usr/bin/python2.7 /usr/local/bin/python2
请注意,虽然/usr/local/bin
默认情况下不存在,但它位于默认 PATH 中,因此一旦创建它,就会搜索命令。
也可以禁用系统完整性保护,但通常最好保留它并在更合适的位置进行自定义。Apple Stack Exchange 问题对此有更多详细信息:El-Captain 中的 Rootless 功能是什么,真的吗?.
我在 Mac OS High Sierra 中为 Sublime Text 3 创建了符号链接
sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/
我还试图在“/usr/bin”中创建符号链接,并且正在获得操作不允许。
然后我在“/usr/local/bin”中创建了符号链接,没有错误。符号链接工作正常。只需确保“/usr/local/bin”在路径中。
因此,似乎对“/usr/bin”的访问受到了限制。
重启系统 -> 长按cmd + R。从实用程序菜单中选择一个终端,键入以下命令csrutil disable close terminal 并重新启动系统。
1. Create a symbolic link to psql in usr/bin (for mac only)
command: sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/psql /usr/bin/psql
如果由于权限问题而无法创建符号链接,那将是由于“csrutil”。禁用 csrutil 后,您可以创建符号链接。按照以下步骤禁用 CSRUtill :
重新启动您的 Mac。在 OS X 启动之前,按住 Command-R 并一直按住它,直到您看到 Apple 图标和进度条。发布。这将引导您进入恢复。从实用程序(在顶部栏)菜单中,选择终端。在提示符下键入以下内容,然后按 Return: csrutil disable 终端应显示一条消息,表明 SIP 已禁用。从 菜单中,选择重新启动。
尝试sudo su
先运行,然后运行具有根级别的命令。