Date: Sat, 16 Feb 2013 17:38:56 +0000 From: Chris Rees <crees@FreeBSD.org> To: Paul Mather <paul@gromit.dlib.vt.edu> Cc: Jeremy Chadwick <jdc@koitsu.org>, Boris Samorodov <bsam@passap.ru>, FreeBSD <freebsd-stable@freebsd.org> Subject: Re: some issues with /usr/sbin/service Message-ID: <CADLo83972a=yv_dGNazNywFpF22vJGVG_sMVYVDAMM7BnQXwpA@mail.gmail.com> In-Reply-To: <1FD54589-7C32-47B5-A400-02FEE1459B02@gromit.dlib.vt.edu> References: <511E0D43.6070900@dssgmbh.de> <20130215105710.GA6130@icarus.home.lan> <20130215193210.GB85777@in-addr.com> <20130215212020.GA17516@icarus.home.lan> <20130215213257.GA20155@icarus.home.lan> <511F4205.50509@passap.ru> <20130216092133.GA31449@icarus.home.lan> <1FD54589-7C32-47B5-A400-02FEE1459B02@gromit.dlib.vt.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
On 16 February 2013 17:05, Paul Mather <paul@gromit.dlib.vt.edu> wrote: > On Feb 16, 2013, at 4:21 AM, Jeremy Chadwick wrote: > >> On Sat, Feb 16, 2013 at 12:23:33PM +0400, Boris Samorodov wrote: >>> 16.02.2013 01:32, Jeremy Chadwick ??????????: >>> >>>> Follow up -- I read Alfred's most recent mail. Lo and behold, I find >>>> this in /var/log/messages (but such did not come to my terminal): >>>> >>>> Feb 15 13:26:20 icarus jdc: /usr/sbin/service: WARNING: $svnserve_enab= le is not set properly - see rc.conf(5). >>>> Feb 15 13:26:20 icarus jdc: /usr/sbin/service: WARNING: $smartd_enable= is not set properly - see rc.conf(5). >>>> Feb 15 13:26:20 icarus jdc: /usr/sbin/service: WARNING: $rsyncd_enable= is not set properly - see rc.conf(5). >>>> Feb 15 13:26:20 icarus jdc: /usr/sbin/service: WARNING: $htcacheclean_= enable is not set properly - see rc.conf(5). >>>> Feb 15 13:26:20 icarus jdc: /usr/sbin/service: WARNING: $fetchmail_ena= ble is not set properly - see rc.conf(5). >>>> >>>> Cute. Agreed -- this is unacceptable on two levels (as I see it): >>>> >>>> 1) These messages should be going to stdout or stderr in some way, so >>>> honestly logger(8) should be called with the "-s" flag (IMO). >>> >>> Fully agreed here. >> >> It turns out logger -s has no effect, just like how the echo 1>&2 >> statements in warn() and err() have no effect either (these should be >> outputting the warnings in question to stderr) -- see rc.subr's source >> for what I'm referring to. >> >> Gary and I have been discussing this off-list and the reason has been >> found: service(8) has this code in it: >> >> checkyesno $rcvar 2>/dev/null && echo $file >> >> This explains why there's no warn() or err() output on the terminal -- >> it's being redirected to /dev/null prior. >> >> I do not know who maintains the rc(8) and rc.subr(8) framework, but >> they've got their work cut out for them. >> >> (Note: the echo statements in warn() and err() could be replaced with >> "logger -s" as I said; this would allow the "echo 1>&2" to be removed) >> >>>> 2) These messages should not be displayed at all (i.e. lack of an >>>> xxx_enable variable should imply xxx_enable=3D"no"). >>> >>> I see this message as one more level of supervision. >>> >>> If undefined at /etc/make.conf the value of xxx_enable is "no" from the >>> system's POV (i.e. the service is not strarted). From the >>> admininstrators's POV the port was installed BUT is not used. It's up >>> to admininstrator whether it's OK or not -- just let him remind. >> >> I believe the point you're trying to make is that the warning in >> question should 'act as a reminder to the administrator that they need >> to set xxx_enable=3D"yes" in rc.conf'. >> >> If not: please explain if you could what you mean, because I don't >> understand. >> >> If so: I strongly disagree with this method of approach, as what you've >> proposed is a borderline straw man argument. >> >> Reminding the admin to set xxx_enable is presently done inside most >> ports' pkg-message. IMO, this should really be done inside bsd.port.mk >> when USE_RC_SUBR is used, emitting a message during install that says >> something like: >> >> To enable the xxx service, please add the following to /etc/rc.conf: >> xxx_enable=3D"yes" >> >> Of course, I don't know if this would work for packages. >> >> The current message for <missing xxx_enable in rc.conf> is this: >> >> WARNING: $xxx_enable is not set properly - see rc.conf(5). >> >> The message is entirely misleading for this specific situation; it isn't >> "reminding" an administrator -- if anything it's confusing them (thread >> is case in point). If we're going to cater to ignorance, then the >> message should reflect the situation. >> >> Thus IMO, this is what ***should*** happen: >> >> Definition in rc.conf Behaviour/result >> ----------------------- ------------------------------------------- >> myprog_enable=3D"yes" emit no warnings, service should run >> myprog_enable=3D"no" emit no warnings, service should not run >> myprog_enable=3D"abc123" emit a warning, service should not run >> <no definition> emit no warnings, service should not run > > > I think case 4 ("<no definition>") is a case where a warning should be em= itted because it is arguably not immediately apparent what will actually ha= ppen if no definition is present. In the case of services in the base OS i= t is well-defined: every service should have an explicit default in /etc/de= faults/rc.conf that you can easily consult to know definitively what will h= appen with that service. (If it doesn't, that is a bug, IMHO.) > > For ports, the case is not so clear. There is a general trend for the po= rt rc.d script to default its respective xxx_enable explicitly to "NO". Bu= t it is not a universal rule that "no definition" =3D default to "NO". The= net/avahi-app port, for example, doesn't default to "NO" if xxx_enable is = not set: it defaults to whatever the gnome_enable setting is defined to be. With few exceptions, it should be considered a rule that ports rc scripts contain: : ${xxx_enable=3Dno} to avoid this. If you see any ports that don't define the _enable variable at all, they are wrong and need fixing. Chris
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CADLo83972a=yv_dGNazNywFpF22vJGVG_sMVYVDAMM7BnQXwpA>