对于我的应用程序,我想做一个后台处理,所以我做了。
但是现在尝试在这样的postinst中通过脚本加载进程
/Library/LaunchDaemons/com.dev.app
。
我收到错误消息:
无法打开作业覆盖数据库:/private/var/db/launchd.db/com.apple.launchd/overrides.plist:2:没有此类文件或目录
任何人都可以帮我摆脱这个吗?
Debian postinst
脚本:
chown root:wheel /Library/LaunchDaemons/com.dev.app.plist
launchctl load /Library/LaunchDaemons/com.dev.app.plist
答案 0 :(得分:1)
我也看到了这条错误信息。
如果您查看手机的文件系统(例如使用ssh
登录),我打赌您没有/private/var/db/launchd.db
的文件夹。
仅仅因为iOS无法找到数据库文件并不意味着您的守护程序没有被加载(或卸载)。在命令行(登录到手机)中使用ps -Aef
命令检查您的守护程序进程是否正在运行。
在守护程序的plist文件(例如/System/Library/LaunchDaemons/com.mycompany.mydaemon.plist
)中,您可以设置已禁用标记(但是,您可能赢了)。 overrides.plist
文件可以覆盖守护程序的plist文件中的Disabled设置。
我的猜测是,这主要是一个OS X功能,并不是iOS常用的,它与大部分相同的代码库共享。
如果确实感觉需要摆脱消息,那么看起来简单地创建该目录就会消除它。因此,在调用postinst
之前,您可以在launchctl
脚本中添加类似的内容:
mkdir -p /var/db/launchd.db/com.apple.launchd