Strange dependencies added by rpmbuild

Michael Schwendt mschwendt at gmail.com
Sat Jan 19 02:35:11 UTC 2008


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 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.

> 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.




More information about the redhat-list mailing list