locsemege Creative Commons License 2010.10.21 0 0 109
Széjjel vet az ideg. Az egyik kedvencemből, a calc nevű programból szeretnék Fedora 14-hez rpm csomagot csinálni. Már annyi módosítást tettem, hogy lefordul, tehát keletkezett egy patch-em. A gondom az alábbi üzenettel van:

*******************************************************************************
*
* 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   0002: file '/usr/bin/calc' contains an invalid rpath '/home/locsemege/rpmbuild/BUILD/calc-2.12.4.3' in [/home/locsemege/rpmbuild/BUILD/calc-2.12.4.3:/lib:/usr/lib:/usr/lib64:/usr/local/lib]
ERROR   0001: file '/usr/bin/calc' contains a standard rpath '/lib' in [/home/locsemege/rpmbuild/BUILD/calc-2.12.4.3:/lib:/usr/lib:/usr/lib64:/usr/local/lib]
ERROR   0001: file '/usr/bin/calc' contains a standard rpath '/usr/lib' in [/home/locsemege/rpmbuild/BUILD/calc-2.12.4.3:/lib:/usr/lib:/usr/lib64:/usr/local/lib]
ERROR   0001: file '/usr/bin/calc' contains a standard rpath '/usr/lib64' in [/home/locsemege/rpmbuild/BUILD/calc-2.12.4.3:/lib:/usr/lib:/usr/lib64:/usr/local/lib]
ERROR   0002: file '/usr/bin/calc' contains an invalid rpath '/usr/local/lib' in [/home/locsemege/rpmbuild/BUILD/calc-2.12.4.3:/lib:/usr/lib:/usr/lib64:/usr/local/lib]
error: Bad exit status from /var/tmp/rpm-tmp.j9u77B (%install)


RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.j9u77B (%install)


A problémát érteni vélem. Olyan helyen is keresné a bináris a shared object-et, ahol az biztosan nincs. Jelenleg a /usr/local/lib ilyen. Ezt az RPATH mondja meg.

A kérdésem: hogyan lehet a Makefile-ban elmondani neki, hogy mi legyen ez a bizonyos RPATH? A Makefile-ban nem találtam erre utalást, valahonnan mégis tudja. Gondolom, van valami system default.

Nem a probléma megkerülése érdekel, miszerint kikapcsolom az rpmbuild-ben az ellenőrzést. Azt szeretném, hogy ne keressen ott *.so-t, ahol biztosan nincs.