wonfen 定位 macOS「修复服务」报 unable to resolve the invoking user's service group 的成因

在 2.5.5 无法修复服务的反馈中,作者说明「修复服务」报 unable to resolve the invoking user's service group 的成因已找到:安装服务时需要查询当前 macOS 账户的主用户组,旧代码在两种情况下会查询失败——一是这个用户组成员非常多(例如公司统一管理、用公司账号登录的电脑),二是这个用户组没有名称;他给出了对应的提交。他还说明「继续使用 Sidecar」也报错属于另一个问题,同样已修复,并另外给出两处提交。这些修复会随下一个版本发布,更新后需要再点一次「修复服务」;若仍然失败,新版本的报错会写明具体原因。为判断属于哪一种情况,他请用户在终端运行一条命令,输出账户编号、用户组名称以及用户组信息的大小和成员个数,并说明这台 Mac 是否由公司或学校配发、是否用公司账号登录;他强调该命令只读取信息、不修改任何内容,也不需要输入密码。

作者原文

https://github.com/clash-verge-rev/clash-verge-service-ipc/commit/47d9e69dc04f1b4e34c64b4f55e528a29229b558
https://github.com/clash-verge-rev/clash-verge-rev/commit/04d74ac48fa46999158cfd248bf2a6e1c062c075

@shenguanjiejie 以及遇到同样问题的 macOS 用户:

「修复服务」报 unable to resolve the invoking user's service group
原因已经找到:安装服务时要查询当前 macOS 账户的主用户组,旧代码在两种情况下会查询失败:一是这个用户组的成员非常多(比如公司统一管理、用公司账号登录的电脑),二是这个用户组没有名称。修复见:
https://github.com/clash-verge-rev/clash-verge-service-ipc/commit/93c1860271473101600413741f7b121dffd5e6ec

「继续使用 Sidecar」也报错
这是另一个问题,也已修复(见上面的两个提交)。

这些修复会随下一个版本发布。更新后请再点一次「修复服务」。如果还是失败,新版本的报错会写明具体原因,请把完整报错贴上来。


为了确认你的电脑属于上面哪种情况,麻烦花一分钟跑一条命令。这条命令只读取信息,不会修改任何东西,也不需要输入密码。

第 1 步:打开「终端」
同时按键盘上的 ⌘ Command 和 空格,在弹出的搜索框里输入 终端(英文系统输入 Terminal),按回车,会打开一个显示文字的窗口。

第 2 步:复制并运行下面这行命令
点下面灰色框右上角的复制按钮,然后点一下终端窗口,按 ⌘ Command + V 粘贴,再按回车。

g=$(id -g); echo "uid=$(id -u) gid=$g name=$(id -gn) bytes=$(dscacheutil -q group -a gid $g | wc -c | tr -d ' ') members=$(dscacheutil -q group -a gid $g | sed -n 's/^users: //p' | wc -w | tr -d ' ')"

等几秒,终端会多出一行类似下面的内容(你的数字会不一样):

uid=501 gid=20 name=staff bytes=46 members=1

第 3 步:把结果贴回来
选中终端里新出现的那一行,按 ⌘ Command + C 复制,回复到这个 issue 里。另外请说一下:这台 Mac 是不是公司或学校配发、用公司账号登录的?

这行结果只包含账户编号、用户组名称和两个数字(用户组信息的大小、成员个数),不包含密码,也不包含其他人的用户名。如果不想公开用户组名称,可以把 name= 后面的内容改成 *** 再贴。