9

有人知道那个错误代码是什么意思吗?我收到此返回代码值的 SMJobBless 错误。

Failed to bless helper: Error Domain=CFErrorDomainLaunchd Code=9 "The operation couldn’t be completed. (CFErrorDomainLaunchd error 9.)"

我用谷歌搜索,在博客文章、Apple Docs、here 中查找答案,但找不到答案这是什么以及如何解决它。人们说(在一些支持论坛上重新安装 OS X 对他们有帮助)。

几周前我正在进行的项目已经发生了这种情况,唯一帮助我解决它的事情是更改我的帮助工具的名称。现在又发生了。

同时我的代码在其他计算机上运行,​​只有我的工作站受此问题影响。

更新: 重命名后,它再次工作。现在我的系统上有两个帮助工具包标识符“禁止”:-(

更新 2: 它也发生在其他计算机上:-(

4

2 回答 2

9

在我的情况下,错误

祝福帮手失败:Error Domain=CFErrorDomainLaunchd Code=9“操作无法完成。(CFErrorDomainLaunchd错误9。)”

意味着辅助工具已添加到此处的永久禁用服务列表中:

/private/var/db/com.apple.xpc.launchd/disabled.plist

我告诉优胜美地,较旧/较年轻的操作系统版本可能在这里有它们(我没有检查过):

/var/db/launchd.db/com.apple.launchd.peruser.*user_id*/overrides.plist

在阅读了launchctl手册页之后,我发现“unload”子命令的参数-w将服务添加到这个plist文件中。我在我的卸载程序脚本中使用了这个标志,这导致下次无法“祝福”工具。

似乎没有办法从 disabled.plist 文件中删除服务。每次重新启动时,文件都会从启动缓存中恢复,并且刷新缓存似乎还没有实现。只能永远启用服务,因此 launchd 不会阻止它启动。

以下是一些可能对遇到类似问题的人有用的链接:

于 2015-09-01T13:54:10.747 回答
8

使用 High Sierra(可能是之前,但我不知道从什么时候开始),有几个帮助的 launchctl 子命令。

launchctl print-disabled system

将列出明确禁用的服务。请务必检查false/true值。

启用禁用的服务

sudo launchctl enable system/com.example.service

此外,对于记录,/System/Library/Frameworks/ServiceManagement.framework/Versions/A/Headers/SMErrors.h可以阅读:

enum {
        kSMErrorInternalFailure = 2,
        kSMErrorInvalidSignature,
        kSMErrorAuthorizationFailure,
        kSMErrorToolNotValid,
        kSMErrorJobNotFound,
        kSMErrorServiceUnavailable,
        kSMErrorJobPlistNotFound,
        kSMErrorJobMustBeEnabled,
        kSMErrorInvalidPlist,
};

其中代码 9 ( kSMErrorJobMustBeEnabled) 比“操作无法完成”更有意义。

于 2018-05-28T11:26:34.753 回答