Strange dependencies added by rpmbuild

Mertens, Bram mertensb at mazdaeur.com
Sun Jan 20 14:59:43 UTC 2008


 

> 


Mazda Motor Logistics Europe NV, Blaasveldstraat 162, B-2830 Willebroek
VAT BE 406.024.281, RPR Mechelen, ING  310-0092504-52, IBAN : BE64 3100 0925 0452, SWIFT : BBRUBEBB

-----Original Message-----
> From: redhat-list-bounces at redhat.com 
> [mailto:redhat-list-bounces at redhat.com] On Behalf Of Michael Schwendt
> Sent: zaterdag 19 januari 2008 3:35
> To: General Red Hat Linux discussion list
> Subject: Re: Strange dependencies added by rpmbuild
> 
> On 18/01/2008, Mertens, Bram <mertensb at mazdaeur.com> wrote:
> > Hi
> >
> > Because I need to install CA's Siteminder web agent on a 
> number of web
> > servers I want to create an rpm from the binary installer 
> delivered by
> > CA.
> >
> > Probably in part because I'm not familiar (yet) with how to 
> build RPMs I
> > have run into a number of issues but finally I have been 
> able to build
> > an RPM of both an older version and a newer version.  (I 
> won't go into
> > the details as to why I need both - it's a long story.)
> >
> > Anyway installing the RPM I built from the old version works fine.
> > However when I try to upgrade the old version to the new I get:
> > # rpm -Uvh webagent-6.5.12-1.i386.rpm
> > error: Failed dependencies:
> >         libodbc.so is needed by webagent-6.5.12-1
> >         libodbcinst.so is needed by webagent-6.5.12-1
> >         libverify.so(VER_1) is needed by webagent-6.5.12-1
> >
> > These dependencies are also displayed in rpmbuilds output:
> > ..
> > Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1
> > rpmlib(PayloadFilesHavePrefix) <= 4.0-1
> > Requires: /bin/sh httpd libIntroscopeNativeDataAPI.so libX11.so.6
> > libXext.so.6 libXp.so.6 libXt.so.6 libXtst.so.6 libawt.so
> > libbtunicode.so libc.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1)
> > libc.so.6(GLIBC_2.1.2) libc.so.6(GLIBC_2.1.3) libc.so.6(GLIBC_2.2)
> > libdl.so.2 libdl.so.2(GLIBC_2.0) libdl.so.2(GLIBC_2.1) libgcc_s.so.1
> > libgcc_s.so.1(GCC_3.0) libgcc_s.so.1(GLIBC_2.0) libjava.so libjvm.so
> > libm.so.6 libm.so.6(GLIBC_2.0) libm.so.6(GLIBC_2.1) libmlib_image.so
> > libnet.so libnsl.so.1 libodbc.so libodbcinst.so libpthread.so.0
> > libpthread.so.0(GLIBC_2.0) libpthread.so.0(GLIBC_2.1)
> > libpthread.so.0(GLIBC_2.3.2) librt.so.1 libsmcommonutil.so
> > libsmerrlog.so libsmeventlog.so libsmgda.so libsmvariable.so
> > libstdc++-libc6.1-1.so.2 libstdc++-libc6.2-2.so.3 libstdc++.so.5
> > libstdc++.so.5(CXXABI_1.2) libstdc++.so.5(GLIBCPP_3.2) libverify.so
> > libverify.so(VER_1)
> > Checking for unpackaged file(s): /usr/lib/rpm/check-files
> > /var/tmp/webagent-6.5.12-root
> > Wrote: /home/mertensb/redhat/SRPMS/webagent-6.5.12-1.src.rpm
> > Wrote: /home/mertensb/redhat/RPMS/i386/webagent-6.5.12-1.i386.rpm
> > ..
> >
> > What I find strange is that even though these files are detected as
> > dependencies they are nowhere to be found on the machine on which I
> > built the RPM.
> 
> That's normal with precompiled programs. rpm-build finds these
> dependencies in the executables, shared libraries, object files, (and
> even in scripts for several script-based programming languages). I
> find it more strange that you write you examined the binaries manually
> but you didn't say what requirements you were able to find.

I didn't cross-check the entire list of dependencies I found with those
reported by rpmbuild, I only checked whether or not the dependencies
that are causing the problem were listed by find-requires or not.  And
as I wrote they are not.

Do I understand correctly that these dependencies are in fact
dependencies for building the CA siteminder agent?  And as such not
needed when running it?
Because as I wrote these dependencies aren't available on the system
where I built the RPM so the binary installer allowed the installation
while it couldn't find those files.

> > I have tried to discover why these files would be added as 
> dependencies
> > by following the steps the find-requires script takes (as 
> described on
> > http://www.rpm.org/max-rpm-snapshot/s1-rpm-depend-auto-depend.html).
> > But they are not listed (well "libverify.so" is but not
> > "libverify.so(VER_1)").
> 
> VER_1 is a version symbol you can find in the library with
> readelf/objdump and similar tools.

Just to understand these things: then why are both libverify.so and
libverify.so(VER_1) reported as dependency?

> > How can I determine whether or not these files are actually 
> needed?  And
> > if they are not how can I prevent rpmbuild from including them as
> > dependencies?
> 
> It is possible to disable the automatic dependencies, but that would
> not be helpful in your case, because you would be missing libraries at
> run-time. Alternatively, if the package includes optional binaries, it
> would be possible to exclude them from the package, provided that you
> don't want them.

In the mean time I remembered that the machine I'm building the RPMs on
is a RHEL4 machine and the machine I'll be installing it on is a RHEL3
machine.  Could that cause problems?  The software itself should run on
both.

Kind regards

Bram




More information about the redhat-list mailing list