On Jan 25, 2011, at 7:33 PM, Jeremy Reichman wrote:
What is considered the current best practice for installing and then running a launch daemon, while avoiding a reboot? I didn't see exactly what I was looking for in my list archive or found it in any documentation on installation packages.
I have reviewed TN2083, specifically the "Starting a Daemon" section. That answers most of my question but it would be helpful to have confirmation. Besides the conditions listed in TN2083, I'd like my installer to behave well when installed to a disk other than the current startup volume. I need to target Mac OS X 10.5 and 10.6.
It looks as if I'd need to test for the right conditions and then run launchctl to load the property list. Roughly -- not production code -- it looks like I'd need a postinstall and postupgrade script to do the following:
# Test if the destination volume for the payload and the root volume path are the same if [ "$3" = "$4" ] ; then # Quick test to see if the script is run by root if [ `/usr/bin/whoami` = "root" ] ; then /bin/launchctl load "$3/Library/LaunchDaemons/com.vendor.launchdaemon.plist" fi fi exit 0
Is that the right approach? Thanks!
By payload, do you mean an installation package payload? If so, then you need to require root/admin authentication in the installation package (to be able to install stuff in /Library/ LaunchDaemons/. And you don't need both a postinstall and postupgrade scripts. A postflight script is enough if you're using a bundle package. A postinstall script is OK if you are using a flat package. You don't need to use whoami. Just use sudo before /bin/launchctl.