Since I maintain three ports (security/sguil-server, security/sguil-sensor and security/sguil-client) that have this problem, I decided to start with the server port. The current port version is 0.7.0 and the init script worked fine when I submitted the port a while ago. Here it is:

. /etc/rc.subr

load_rc_config sguild
# set some defaults
sguild_enable=${sguild_enable:-"NO"}
sguild_conf=${sguild_conf:-"/%%PREFIX%%/etc/%%SGUILDIR%%/sguild.conf"}
pid=${pid:-"/var/run/%%SGUILDIR%%/sguild.pid"}
sguild_flags=${sguild_flags:-"-D -P ${pid}"}
sguild_user=${sguild_user:-"sguil"}

name="sguild"
rcvar=sguild_enable
command="%%PREFIX%%/bin/${name}"
command_args="-c ${sguild_conf} ${sguild_flags}"
procname="%%TCLSH%%"
check_process="${procname}"
sguild_user="sguil"

run_rc_command "$1"

The sguild program begins with these lines:

#!/bin/sh
# Run tcl from users PATH \
exec tclsh "$0" "$@"

Now I'm trying to update to version 0.8.0, and I cannot get the init script to work. It's identical to the 0.7.0 version, and so is the beginning of the sguild program. Yet when I try to start the program, I get this:

# /usr/local/etc/rc.d/sguild start
/usr/local/etc/rc.d/sguild: WARNING: no shebang line in /usr/local/bin/tclsh8.5 /usr/local/etc/rc.d/sguild: WARNING: no shebang line in /usr/local/bin/tclsh8.5
/usr/local/etc/rc.d/sguild: unknown directive '/usr/local/bin/sguild'.
Usage: /usr/local/etc/rc.d/sguild [fast|force|one|quiet](start|stop|restart|rcvar|status|poll)

When I look at /etc/rc.subr, I take the "unknown directive section to mean "I'm bailing out, because I have no clue what you want me to do."

I can start the daemon manually, and it works as expected:

# sh /usr/local/bin/sguild -c /usr/local/etc/sguild/sguild.conf -D -P /var/run/sguild/sguild.pid 2012-12-17 16:42:48 pid(77882) Loading access list: /usr/local/etc/sguild/sguild.access
2012-12-17 16:42:48 pid(77882)  Sensor access list set to ALLOW ANY.
2012-12-17 16:42:48 pid(77882)  Client access list set to ALLOW ANY.

# ps -auxw | grep sguild
sguil 77884 0.0 0.1 28240 8524 0 I 4:42PM 0:00.02 /usr/local/bin/tclsh8.5 /usr/local/bin/sguild -c /usr/local/etc/sguild/sguild.conf -D -P /var/run/sguild/sguild.pid sguil 77888 0.0 0.1 28240 8392 0 S 4:42PM 0:00.00 /usr/local/bin/tclsh8.5 /usr/local/bin/sguild -c /usr/local/etc/sguild/sguild.conf -D -P /var/run/sguild/sguild.pid sguil 77889 0.0 0.1 28240 8396 0 I 4:42PM 0:00.00 /usr/local/bin/tclsh8.5 /usr/local/bin/sguild -c /usr/local/etc/sguild/sguild.conf -D -P /var/run/sguild/sguild.pid

Both status and stop work fine:

# /usr/local/etc/rc.d/sguild status
sguild is running as pid 77884 77888 77889.
[root@buttercup4 /usr/ports/security/sguil-server]# /usr/local/etc/rc.d/sguild stop
Stopping sguild.
SGUILD: killing child procs...
SGUILD: Exiting...

# ps -auxw | grep sguild
root    77964  0.0  0.0  9128  1452   0  S+    4:45PM   0:00.00 grep sguild

This makes no sense to me. What is start failing like this? Did something change in the rc.subr script recently? I don't see anything in /usr/ports/CHANGES for rc.subr since 2007. I don't see anything at all about rc.subr in /usr/ports/UPDATING.

If I add a command_interpreter of /usr/local/bin/tclsh8.5, status and stop fail, claiming sguild isn't running. (It is.)

This one has me stumped.

--
Paul Schmehl, Senior Infosec Analyst
As if it wasn't already obvious, my opinions
are my own and not those of my employer.
*******************************************
"It is as useless to argue with those who have
renounced the use of reason as to administer
medication to the dead." Thomas Jefferson
"There are some ideas so wrong that only a very
intelligent person could believe in them." George Orwell

_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-rc
To unsubscribe, send any mail to "[email protected]"

Reply via email to