无法使用守望者:"Operation not permitted"

Can't use Watchman: "Operation not permitted"

自从最近(使用 Homebrew)更新了 Watchman 后,我不能再用它来观看项目了。我得到

{
    "version": "2022.05.30.00",
    "error": "std::__1::system_error: open: /Users/Path/To/Project: Operation not permitted"
}

我最初假设这一定只是文件访问问题,我可以 ,但是让 watchman 应用程序访问文件和文件夹并不能解决问题(即使终止所有 watchman 进程并重新启动终端)。

为了更好的衡量,我也 (这是我以前从未需要做的事情,我对此感到不舒服),但这也没有效果。

我也终止了所有我能想到的相关进程,甚至重新启动了两次。据我所知 只有 自 Watchman 工作以来的变化是我的 运行 brew update watchman (我当然也卸载并重新安装)。

一个问题是,出于某种原因,我在“系统偏好设置”中有多个守望者条目,这奇怪地导致它需要几十次尝试才能将所有这些人都打成检查状态以进行访问:

如何为 Watchman 授予克服此错误所需的权限?

我也遇到了这个问题,和其他许多人一样。

我恢复到“工作”版本,例如2022.05.16.00

有多种方法可以做到这一点;一个(没有私人水龙头)是:

  1. 卸载守望者
  2. 将 watchman.rb 公式降级到旧版本
  3. 根据那个版本安装watchman
  4. 固定它(以防止守望者进一步更新)
  5. 终于再次将watchman.rb公式重置为原来的状态
# -- 1 -- uninstall
brew uninstall watchman
# -- 2 -- replace formula
curl https://raw.githubusercontent.com/Homebrew/homebrew-core/8651d8e23d308e564414188509f864e40548f514/Formula/watchman.rb > /opt/homebrew/Library/Taps/homebrew/homebrew-core/Formula/watchman.rb
# -- 3 -- install again, using replaced formula
brew install watchman
# -- 4 -- pin that version - Don't forget to unpin once this problem is solved...
brew pin watchman 
# -- 5 -- reset formula to original
cd /opt/homebrew/Library/Taps/homebrew/homebrew-core/Formula/
git checkout -- watchman.rb

然后使用

关闭任何挥之不去的 Watchman 实例
watchman shutdown-server

备注:在Intel-Macs,自制程序存储库位于不同的位置。调用brew --repository即可知道。 通常,公式应在目录 /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula

watchman 的问题解决后,您可以再次取消 watchman 并使用正常的 brew update/upgrade 机制。