[Nagiosplug-devel] subst.in patch

Ton Voon tonvoon at mac.com
Tue Aug 30 04:56:13 CEST 2005


I've been taking a look at this. I could not recreate your problem. I  
ran a ./configure with /usr/local/nagios/libexec in existence and  
then ran a ./configure after rm -r /usr/local/nagios and all the  
substitutions for the perl scripts in plugins-scripts were the same.  
There is a specific part of subst.in which says:

# used to replace "use lib utils.pm" with "use lib @libexecdir"
function led() {
         led1 = "@libexecdir@";

So I think your diagnosis is wrong: the libexecdir is being taken  
from the configure script and passing through to subst.in correctly.

I put a debugging line into the main awk loop here:

# Specific programs

/^[^#]/ && /(\/.*)?\/(bin|sbin|lib|libexec)\// {
         print STDERR "Got here!!!: "$0;

and then ran a make clean; make in the plugins-script directory. I  
think what is happening is that it is trying to find any programs  
that are fully prefixed and amending them to possible changes in the  

Eg, check_log.in has GREP="/bin/grep", but after running make  
check_log, it replaces that line with GREP="/usr/bin/grep", which is  
the location of grep on my MacOSX system.

You mentioned something about building the plugins in a chroot  
environment. My guess is that your chroot is missing a lot of these  
commands, and thus the substitutions are failing.

So I am going to reject your patch because it looks like there is  
specific functionality the which routine is providing, even though it  
is failing in your specialised case. However, I will try and make the  
comments more informative.

Long term, the substitutions shouldn't be done at compile time, but  
should be done at configure time instead. However, this will be a  
tougher job to sort out. I welcome any patches in this area.


On 19 Aug 2005, at 07:52, Phil Dibowitz wrote:

> I recently submitted a patch:
> https://sourceforge.net/tracker/index.php? 
> func=detail&aid=1262777&group_id=29880&atid=397599
> which removes the which() function and the call to it from the
> plugins-scripts/subst.in awk script.
> The problem is that this function checks to see if $libexec exists
> (where the plugins would go, and thus the utils.pm), and if it doesn't
> it changes the "use lib" lines in the perl plugins to remove the  
> base of
> $libexec from the path (changes /usr/lib/nagios/plugins/ to
> nagios/plugins).
> But... it's checking for the existance of a directory and making a
> decision based on it not being there even though
> _it's_about_to_make_it_! That's silly.
> The result is that... if you have a previous install, your 'use lib'
> lines are good and nrpe can execute your plugins just fine.
> But if it's a fresh install, your plugins get the relative paths which
> mean that nrpe can't execute them at all, and nor can anything else  
> that
> doesn't run from within /usr/lib.
> I can find no logical use for this function, and things are working  
> well
> for us with the patch...
> Any reasons for this that I've missed?
> -- 
> Phil Dibowitz                             phil at ipom.com
> Freeware and Technical Pages              Insanity Palace of Metallica
> http://www.phildev.net/                   http://www.ipom.com/
> "They that can give up essential liberty to obtain a little temporary
> safety deserve neither liberty nor safety."
>  - Benjamin Franklin, 1759

More information about the Devel mailing list