rpaths when building FreeRADIUS RPM

Jonathan Gazeley Jonathan.Gazeley at bristol.ac.uk
Tue May 30 16:23:27 CEST 2017


Hi folks,

When building FreeRADIUS 3.0.14 from source on a CentOS 7 system, it 
throws the following error:

[jg4461 at build-el7 rpmbuild]$ rpmbuild -ba --sign 
SPECS/freeradius-3.0.14.spec
...
...
+ /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot
*******************************************************************************
*
* WARNING: 'check-rpaths' detected a broken RPATH and will cause 'rpmbuild'
*          to fail. To ignore these errors, you can set the '$QA_RPATHS'
*          environment variable which is a bitmask allowing the values
*          below. The current value of QA_RPATHS is 0x0000.
*
*    0x0001 ... standard RPATHs (e.g. /usr/lib); such RPATHs are a minor
*               issue but are introducing redundant searchpaths without
*               providing a benefit. They can also cause errors in multilib
*               environments.
*    0x0002 ... invalid RPATHs; these are RPATHs which are neither absolute
*               nor relative filenames and can therefore be a SECURITY risk
*    0x0004 ... insecure RPATHs; these are relative RPATHs which are a
*               SECURITY risk
*    0x0008 ... the special '$ORIGIN' RPATHs are appearing after other
*               RPATHs; this is just a minor issue but usually unwanted
*    0x0010 ... the RPATH is empty; there is no reason for such RPATHs
*               and they cause unneeded work while loading libraries
*    0x0020 ... an RPATH references '..' of an absolute path; this will 
break
*               the functionality when the path before '..' is a symlink
*
*
* Examples:
* - to ignore standard and empty RPATHs, execute 'rpmbuild' like
*   $ QA_RPATHS=$[ 0x0001|0x0010 ] rpmbuild my-package.src.rpm
* - to check existing files, set $RPM_BUILD_ROOT and execute 
check-rpaths like
*   $ RPM_BUILD_ROOT=<top-dir> /usr/lib/rpm/check-rpaths
*
*******************************************************************************
ERROR   0001: file '/usr/lib64/freeradius/rlm_sql_postgresql.so' 
contains a standard rpath '/usr/lib64' in [/usr/lib64]
ERROR   0001: file '/usr/lib64/freeradius/rlm_sql_unixodbc.so' contains 
a standard rpath '/usr/lib64' in [/usr/lib64]
ERROR   0001: file '/usr/lib64/freeradius/rlm_rest.so' contains a 
standard rpath '/usr/lib64' in [/usr/lib64]
error: Bad exit status from /var/tmp/rpm-tmp.fu96Fb (%install)
     Bad exit status from /var/tmp/rpm-tmp.fu96Fb (%install)


Now, the workaround is obviously printed in the error message but this 
is just a workaround. It looks like there are hardcoded library paths in 
several .so objects that need updating.

I should note that it has done this for previous versions too, but I 
never got round to posting about it.

I'll use the workaround for now but it would be super if this could be 
fixed before the next release, so a more durable RPM can be built.

Thanks,
Jonathan

-- 
Jonathan Gazeley
Senior Systems Administrator
IT Services
University of Bristol


More information about the Freeradius-Users mailing list