Re: [PATCH] 98syslog: try to dynamically check for rsyslog moddir

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dnia 2010-09-08, o godz. 18:52:13
Andrey Borzenkov <arvidjaar@xxxxxxx> napisał(a):

> Thomas pointed out that default module path may not be correct
> (Mandriva installs modules under architecture dependent path).
> Unfortunately rsyslog does not seem to offer any way to query for
> default configuration values. Here is rather hack - try to load
> non-existing module and fetch path from error message.
> 
> Example of error message from version 4.6.4:
> 
> rsyslogd: could not load module '/lib64/rsyslog/_No_sUcH_MOduLe.so',
> dlopen: /lib64/rsyslog/_No_sUcH_MOduLe.so: cannot open shared object
> file: No such file or directory
> 
> Signed-off-by: Andrey Borzenkov <arvidjaar@xxxxxxx>
> 
> ---
> 
>  modules.d/98syslog/install |   17 ++++++++++++++++-
>  1 files changed, 16 insertions(+), 1 deletions(-)
> 
> diff --git a/modules.d/98syslog/install b/modules.d/98syslog/install
> index 1fd1b6f..e3d02bf 100755
> --- a/modules.d/98syslog/install
> +++ b/modules.d/98syslog/install
> @@ -1,6 +1,21 @@
>  #!/bin/sh
>  if type -P rsyslogd >/dev/null; then
> -
> installs="rsyslogd /lib/rsyslog/lmnet.so /lib/rsyslog/imklog.so /lib/rsyslog/imuxsock.so"
> +	# module path can be changed during build and currently
> rsyslog
> +	# does not provide any means to query for it. Use hack - try
> to
> +	# load non-existent module and look at error message
> +	R_CONF=/tmp/dracut.rsyslog.conf.$$
> +	R_ERR=/tmp/dracut.rsyslog.err.$$
> +	R_MODDIR=
> +	echo '$ModLoad _No_sUcH_MOduLe' > $R_CONF
> +	if [ -s $R_CONF ]; then
> +		rsyslogd -N 1 -f $R_CONF 2> $R_ERR > /dev/null
> +		R_MODDIR=$(grep ' could not load
> module .*_No_sUcH_MOduLe' $R_ERR)
> +		R_MODDIR=${R_MODDIR#*could not load module \'}
> +		R_MODDIR=${R_MODDIR%\', *}
> +		R_MODDIR=${R_MODDIR%/*}
> +	fi
> +	[ -n "$R_MODDIR" ] || R_MODDIR=/lib/rsyslog
> +	installs="rsyslogd $R_MODDIR/lmnet.so $R_MODDIR/imklog.so
> $R_MODDIR/imuxsock.so" elif type -P syslogd >/dev/null; then
>      installs="syslogd"
>  elif type -P syslog-ng >/dev/null; then
> 
> 

Indeed this patch is more precise than my simplified one ;)

-- 
Regards
TPG

http://cia.vc/stats/author/tpg
---
--
To unsubscribe from this list: send the line "unsubscribe initramfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux