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 是否由公司或学校配发、是否用公司账号登录;他强调该命令只读取信息、不修改任何内容,也不需要输入密码。
作者原文@wonfenhttps://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=后面的内容改成***再贴。