RPM Community Forums

Mailing List Message of <rpm-users>

Requires/Provides issue with re-packaging a complex product (endeca)

From: Mykel Alvis <alvis.mykel@gmail.com>
Date: Sat 05 Jan 2013 - 02:42:54 CET
Message-ID: <CAFYWm_Ln_94B3v3dnsOTzdcvO7v8a1HzEv6AFNaY=b1EuzDFzA@mail.gmail.com>
tl;dr version:  How do I get rpmbuild to ignore the .so in the %files tree
and just add the .so without adding a provides or requires for it?

Full text of the question below:

So I'm trying to package the Endeca engine so that I can easily install it
via RPM.  I'm pretty sure this doesn't violate any terms of service, and
the installation is actually pretty simplistic.  You run a few shell
scripts giving them a target directory.  It writes a few config files that
are easily modified.  This the whole thing should be pretty transportable,
right?

First, the installation has a pile of shared libraries in it.
libstdc++.so.6 is just one of them, but it's a consistent thorn in my side.
Second, the installation installs its own jdk and perl binaries.  I'm sure
it was just WAY too hard for the endeca developers to write something with
compatibility checks built in, but that's another story.

The real problem I have is that when I package the various pieces, rpmbuild
produces something that looks like this:

Processing files: endeca-mdex-6.4.0-1.el6.x86_64
Provides: libclntshcore.so.12.1()(64bit) libcrypto.so.1.0.0()(64bit)
libcurl.so.4()(64bit) libeaspell.so.15()(64bit) libexerces-c.so.27()(64bit)
libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit)
libgcc_s.so.1(GCC_3.3)(64bit) libgcc_s.so.1(GCC_3.3.1)(64bit)
libgcc_s.so.1(GCC_3.4)(64bit) libgcc_s.so.1(GCC_3.4.2)(64bit)
libgcc_s.so.1(GCC_3.4.4)(64bit) libgcc_s.so.1(GCC_4.0.0)(64bit)
libgcc_s.so.1(GCC_4.2.0)(64bit) libgcc_s.so.1(GCC_4.3.0)(64bit)
libicudata.so.42()(64bit) libicui18n.so.42()(64bit) libicuuc.so.42()(64bit)
libimf.so()(64bit) libintlc.so.5()(64bit) libirc.so()(64bit)
libolt.so()(64bit) libolt_c.so()(64bit) libolt_j.so()(64bit)
libssl.so.1.0.0()(64bit) libstdc++.so.6()(64bit)
libstdc++.so.6(CXXABI_1.3)(64bit) libstdc++.so.6(CXXABI_1.3.1)(64bit)
libstdc++.so.6(CXXABI_1.3.2)(64bit) libstdc++.so.6(CXXABI_1.3.3)(64bit)
libstdc++.so.6(CXXABI_1.3.4)(64bit) libstdc++.so.6(GLIBCXX_3.4)(64bit)
libstdc++.so.6(GLIBCXX_3.4.1)(64bit) libstdc++.so.6(GLIBCXX_3.4.10)(64bit)
libstdc++.so.6(GLIBCXX_3.4.11)(64bit) libstdc++.so.6(GLIBCXX_3.4.12)(64bit)
libstdc++.so.6(GLIBCXX_3.4.13)(64bit) libstdc++.so.6(GLIBCXX_3.4.14)(64bit)
libstdc++.so.6(GLIBCXX_3.4.2)(64bit) libstdc++.so.6(GLIBCXX_3.4.3)(64bit)
libstdc++.so.6(GLIBCXX_3.4.4)(64bit) libstdc++.so.6(GLIBCXX_3.4.5)(64bit)
libstdc++.so.6(GLIBCXX_3.4.6)(64bit) libstdc++.so.6(GLIBCXX_3.4.7)(64bit)
libstdc++.so.6(GLIBCXX_3.4.8)(64bit) libstdc++.so.6(GLIBCXX_3.4.9)(64bit)
Requires(interp): /bin/sh /bin/sh /bin/sh /bin/sh
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires(pre): /bin/sh
Requires(post): /bin/sh
Requires(preun): /bin/sh
Requires(postun): /bin/sh
Requires: /bin/bash ld-linux-x86-64.so.2()(64bit)
ld-linux-x86-64.so.2(GLIBC_2.3)(64bit) libaio.so.1()(64bit)
libc.so.6()(64bit) libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.2)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit) libclntshcore.so.12.1()(64bit)
libcrypto.so.1.0.0()(64bit) libcurl.so.4()(64bit) libdl.so.2()(64bit)
libdl.so.2(GLIBC_2.2.5)(64bit) libeaspell.so.15()(64bit)
libexerces-c.so.27()(64bit) libgcc_s.so.1()(64bit)
libgcc_s.so.1(GCC_3.0)(64bit) libgcc_s.so.1(GCC_3.3)(64bit)
libgcc_s.so.1(GCC_4.2.0)(64bit) libicudata.so.42()(64bit)
libicui18n.so.42()(64bit) libicuuc.so.42()(64bit) libimf.so()(64bit)
libintlc.so.5()(64bit) libirc.so()(64bit) libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit) libncurses.so.5()(64bit) libnsl.so.1()(64bit)
libolt.so()(64bit) libolt_c.so()(64bit) libolt_j.so()(64bit)
libpthread.so.0()(64bit) libpthread.so.0(GLIBC_2.2.5)(64bit)
libpthread.so.0(GLIBC_2.3.2)(64bit) librt.so.1()(64bit)
libssl.so.1.0.0()(64bit) libstdc++.so.6()(64bit)
libstdc++.so.6(CXXABI_1.3)(64bit) libstdc++.so.6(CXXABI_1.3.1)(64bit)
libstdc++.so.6(CXXABI_1.3.2)(64bit) libstdc++.so.6(GLIBCXX_3.4)(64bit)
libstdc++.so.6(GLIBCXX_3.4.11)(64bit) libstdc++.so.6(GLIBCXX_3.4.14)(64bit)
libstdc++.so.6(GLIBCXX_3.4.9)(64bit) rtld(GNU_HASH)


The top of my spec file has the following
---- snip ----

%global __libtool_requires      %{nil}
%global __libtool_provides      %{nil}
%global __os_install_post %{nil}
%global __perl_requires %{nil}
%global __perl_provides %{nil}


%define __find_requires %{nil}
%define __find_provides %{nil}

Autoreq: 0
Autoprov: 0

# %{target} is NOT like a prefix.  You can't relocate these packages except
at RPM build time
%define         target          /opt


---- snip ----

Here's my question:
How do I get rpmbuild to just package the files without processing the .so
dependencies and requirements?  I KNOW that the packaging will work,
because I've done the copy by hand.  I know I don't need anything else when
I install.  But when I do a
yum localinstall endenca*
I get
Examining endeca-platformservices-6.1.3-1.el6.x86_64.rpm:
endeca-platformservices-6.1.3-1.el6.x86_64
Marking endeca-platformservices-6.1.3-1.el6.x86_64.rpm to be installed
Examining endeca-presentationapi-6.4.0-1.el6.x86_64.rpm:
endeca-presentationapi-6.4.0-1.el6.x86_64
Marking endeca-presentationapi-6.4.0-1.el6.x86_64.rpm to be installed
Examining endeca-toolsandframeworks-3.1.1-1.el6.x86_64.rpm:
endeca-toolsandframeworks-3.1.1-1.el6.x86_64
Marking endeca-toolsandframeworks-3.1.1-1.el6.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package endeca-mdex.x86_64 0:6.4.0-1.el6 will be installed
---> Package endeca-platformservices.x86_64 0:6.1.3-1.el6 will be installed
--> Processing Dependency:
/export/home/packaging/Work/RPM/BUILDROOT/endeca-1.0.0-1.el6.x86_64/opt/endeca/PlatformServices/6.1.3/perl/bin/perl
for package: endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: /usr/local/bin/perl for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: /usr/local/perl-5.8.3/bin/perl for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: endeca-mdex=6.4.0 for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: ld-linux.so.2 for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: ld-linux.so.2(GLIBC_2.3) for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libc.so.6 for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.0) for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.1) for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.1.2) for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.1.3) for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.2) for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.2.4) for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.3) for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libcrypt.so.1 for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libcrypt.so.1(GLIBC_2.0) for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libdb-4.1.so for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libdl.so.2 for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libdl.so.2(GLIBC_2.0) for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libdl.so.2(GLIBC_2.1) for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libgdbm.so.2 for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libm.so.6 for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libm.so.6(GLIBC_2.0) for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libnsl.so.1 for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libpthread.so.0 for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libpthread.so.0(GLIBC_2.0) for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libpthread.so.0(GLIBC_2.1) for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libsc_ch.so for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libsc_da.so for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libsc_ex.so for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libsc_fa.so for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libsc_fi.so for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libsc_fut.so for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libsc_lo.so for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libsc_ut.so for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libutil.so.1 for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: libwv_core.so for package:
endeca-platformservices-6.1.3-1.el6.x86_64
---> Package endeca-presentationapi.x86_64 0:6.4.0-1.el6 will be installed
--> Processing Dependency: endeca-mdex=6.4.0 for package:
endeca-presentationapi-6.4.0-1.el6.x86_64
---> Package endeca-toolsandframeworks.x86_64 0:3.1.1-1.el6 will be
installed
--> Processing Dependency: endeca-mdex=6.4.0 for package:
endeca-toolsandframeworks-3.1.1-1.el6.x86_64
--> Processing Dependency: endeca-platformservices=6.1.3 for package:
endeca-toolsandframeworks-3.1.1-1.el6.x86_64

And then at the end I get

--> Processing Dependency: /usr/local/bin/perl for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency:
/export/home/packaging/Work/RPM/BUILDROOT/endeca-1.0.0-1.el6.x86_64/opt/endeca/PlatformServices/6.1.3/perl/bin/perl
for package: endeca-platformservices-6.1.3-1.el6.x86_64
--> Processing Dependency: /usr/local/perl-5.8.3/bin/perl for package:
endeca-platformservices-6.1.3-1.el6.x86_64
--> Finished Dependency Resolution
Error: Package: endeca-platformservices-6.1.3-1.el6.x86_64
(/endeca-platformservices-6.1.3-1.el6.x86_64)
           Requires: libsc_ut.so
Error: Package: endeca-platformservices-6.1.3-1.el6.x86_64
(/endeca-platformservices-6.1.3-1.el6.x86_64)
           Requires: libsc_ex.so
Error: Package: endeca-platformservices-6.1.3-1.el6.x86_64
(/endeca-platformservices-6.1.3-1.el6.x86_64)
           Requires: endeca-mdex=6.4.0
Error: Package: endeca-platformservices-6.1.3-1.el6.x86_64
(/endeca-platformservices-6.1.3-1.el6.x86_64)
           Requires: libsc_ch.so
Error: Package: endeca-presentationapi-6.4.0-1.el6.x86_64
(/endeca-presentationapi-6.4.0-1.el6.x86_64)
           Requires: endeca-mdex=6.4.0
Error: Package: endeca-platformservices-6.1.3-1.el6.x86_64
(/endeca-platformservices-6.1.3-1.el6.x86_64)
           Requires: libsc_lo.so
Error: Package: endeca-platformservices-6.1.3-1.el6.x86_64
(/endeca-platformservices-6.1.3-1.el6.x86_64)
           Requires:
/export/home/packaging/Work/RPM/BUILDROOT/endeca-1.0.0-1.el6.x86_64/opt/endeca/PlatformServices/6.1.3/perl/bin/perl
Error: Package: endeca-platformservices-6.1.3-1.el6.x86_64
(/endeca-platformservices-6.1.3-1.el6.x86_64)
           Requires: /usr/local/bin/perl
Error: Package: endeca-platformservices-6.1.3-1.el6.x86_64
(/endeca-platformservices-6.1.3-1.el6.x86_64)
           Requires: /usr/local/perl-5.8.3/bin/perl
Error: Package: endeca-platformservices-6.1.3-1.el6.x86_64
(/endeca-platformservices-6.1.3-1.el6.x86_64)
           Requires: libdb-4.1.so
Error: Package: endeca-toolsandframeworks-3.1.1-1.el6.x86_64
(/endeca-toolsandframeworks-3.1.1-1.el6.x86_64)
           Requires: endeca-platformservices=6.1.3
Error: Package: endeca-platformservices-6.1.3-1.el6.x86_64
(/endeca-platformservices-6.1.3-1.el6.x86_64)
           Requires: libwv_core.so
Error: Package: endeca-platformservices-6.1.3-1.el6.x86_64
(/endeca-platformservices-6.1.3-1.el6.x86_64)
           Requires: libsc_fa.so
Error: Package: endeca-toolsandframeworks-3.1.1-1.el6.x86_64
(/endeca-toolsandframeworks-3.1.1-1.el6.x86_64)
           Requires: endeca-mdex=6.4.0
Error: Package: endeca-platformservices-6.1.3-1.el6.x86_64
(/endeca-platformservices-6.1.3-1.el6.x86_64)
           Requires: libsc_fi.so
Error: Package: endeca-platformservices-6.1.3-1.el6.x86_64
(/endeca-platformservices-6.1.3-1.el6.x86_64)
           Requires: libsc_da.so
Error: Package: endeca-platformservices-6.1.3-1.el6.x86_64
(/endeca-platformservices-6.1.3-1.el6.x86_64)
           Requires: libsc_fut.so
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest


All of these requirements are fulfilled already, so how do I get rpmbuild
to ignore them and not mark the various *.so as requirements?

Thanks!
Received on Sat Jan 5 06:53:39 2013
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.