How can I rebuild rpm package exclude some dependencies?
Have next kind of question. Wanna to rebuild garbage collector (gc-7.1-10.el6.src.rpm) and exclude ld-linux.so.2, ld-linux.so.2(GLIBC_2.3) & libpthread.so.0(GLIBC_2.3.2) dependencies. How can I get something similar I want? (CentOS 6)
% rpm -qp -R rpmbuild/RPMS/i386/gc-7.1-10.el6.i386.rpm
/sbin/ldconfig
/sbin/ldconfig
ld-linux.so.2
ld-linux.so.2(GLIBC_2.3)
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.1.3)
libc.so.6(GLIBC_2.2.4)
libc.so.6(GLIBC_2.3)
libcord.so.1
libdl.so.2
libdl.so.2(GLIBC_2.1)
libgc.so.1
libgcc_s.so.1
libgcc_s.so.1(GCC_3.0)
libgcc_s.so.1(GCC_3.3.1)
libgccpp.so.1
libm.so.6
libpthread.so.0
libpthread.so.0(GLIBC_2.0)
libpthread.so.0(GLIBC_2.1)
libpthread.so.0(GLIBC_2.2)
libpthread.so.0(GLIBC_2.2.3)
libpthread.so.0(GLIBC_2.3.2)
libstdc++.so.6
libstdc++.so.6(CXXABI_1.3)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(VersionedD开发者_高级运维ependencies) <= 3.0.3-1
rtld(GNU_HASH)
Need I edit my spec file, or change and rebuild my tar.gz archive ?
Just define requires you want to exclude by :
%define __requires_exclude libXXX.so.X
Most of these dependencies are created by the "find-requires" feature. If you specify this in your .spec
file:
AutoReq: no
None of them are created.
I'm unsure of an easy way to exclude single ones, however. It's all or nothing.
The easiest way to disable automatic dependency extraction is to remove the execute bits from the file(s) that cause the dependency: rpm does not extract dependencies from non-executable files automatically.
You can also filter the dependencies (the filtering is different in different versions of rpm but is possible in all versions of rpm).
However the dependencies that you wish to filter are not usually a problem. Are you trying to build on a newer machine and install on an older machine, with an older version of glibc?
You need this to just disable one or more provie or require
http://www.rpm.org/wiki/PackagerDocs/DependencyGenerator
精彩评论