On 2009年09月04日, at 7:10, B. Kamer wrote:
Perhaps things are different on your system or it seems you didn't
quite got my explanation of the problem.
Sorry about that, I missed a level of indirection. You are right, the
dnsmasq.wrapper does try to call the missing script on Leopard too.
The MacPort people probably know more about this... the whole plist
invokes daemondo which runs dnsmasq.wrapper which runs dnsmasq.sh
which finally invokes dnsmasq seems bizarrely complex. On my server,
I don't use the MacPorts dnsmasq and rolled my own plist file:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>uk.org.thekelleys.dnsmasq</string>
<key>ProgramArguments</key>
<array>
<string>/opt/local/sbin/dnsmasq</string>
<string>-k</string>
</array>
<key>RunAtLoad</key><false/>
<key>AbandonProcessGroup</key><false/>
<key>KeepAlive</key>
<dict>
<key>NetworkState</key><true/>
</dict>
</dict>
</plist>
Give that a try. If you have bound to a particular interface, though,
this won't work reliably because there's a race condition between
dnsmasq starting and the interfaces being up. A workaround is to
replace the <array> in the above:
<array>
<string>/bin/bash</string>
<string>-c</string>
<string>sleep 10 && exec /usr/local/sbin/dnsmasq
-k</string>
</array>
Perette