无法更改 bin 上的文件模式:不允许操作

Ric*_*ard 1 php macos terminal composer-php

我正在尝试在 Mac 操作系统上全局安装 Composer。

我尝试按照入门部分中的说明在终端中使用此命令来移动composer.phar文件:

mv composer.phar /usr/bin/composer
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

mv: rename composer.phar to /usr/bin/composer: No such file or
directory
Run Code Online (Sandbox Code Playgroud)

当我尝试创建目录时,它说不允许该操作:

bash-3.2# mkdir -p /usr/bin/composer mkdir: /usr/bin/composer:
Operation not permitted
Run Code Online (Sandbox Code Playgroud)

我什至尝试导航到“bin”目录,它说:

bash-3.2# mkdir composer mkdir: composer: Operation not permitted
Run Code Online (Sandbox Code Playgroud)

我已经成功启用 root,但我仍然尝试更改权限:

bash-3.2# chmod ugo+rwx "bin" chmod: Unable to change file mode on
bin: Operation not permitted bash-3.2#
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?

提前致谢!

编辑:

感谢您的回复!

当我输入以下命令时:

ls -leO@d /usr/local/bin
Run Code Online (Sandbox Code Playgroud)

它打印:

-rwxrwxr-x 1 username staff  - 2212003 27 Mar 17:00 /usr/local/bin
Run Code Online (Sandbox Code Playgroud)

Gor*_*son 6

背景:/usr/bin通常用于“标准”二进制文件,而不是您自己安装的东西;那些通常属于类似的地方/usr/local/bin。在最新版本的 macOS 中,这是通过系统完整性保护并将“系统”文件/目录保存在单独的只读卷上来强制执行的。

问题:看起来您的系统上有一个名为的文件/usr/local/bin而不是目录。如果某些安装程序尝试将程序安装到/usr/local/bin(例如使用mv someprogram /usr/local/bin)而不首先确保该名称的目录存在,则可能会发生这种情况。

如何解决:首先要做的是将安装的任何文件移动/重命名为/usr/local/bin,然后将其创建为目录:

sudo mv /usr/local/bin /usr/local/bin-moved
sudo mkdir -p /usr/local/bin
Run Code Online (Sandbox Code Playgroud)

一旦解决了这个问题,您应该就可以正常安装 Composer 了。根据(并添加sudo以访问该目录),您可以这样做:

sudo mv composer.phar /usr/local/bin/composer
Run Code Online (Sandbox Code Playgroud)

最后,如果您愿意,您可以尝试找出安装了什么程序(而不是安装在/usr/local/bin。或者直接删除该/usr/local/bin-moved文件,不用担心。