Architecture-specific Dependencies issue in rpm across Red Hat Enterprise Linux 5 and 6
Environment
- Red Hat Enterprise Linux 5
- Red Hat Enterprise Linux 6
Issue
- Trying to build a RPM package for Red Hat Enterprise Linux 5 and cannot get the arch specific dependencies to work.
- All
macros
tried get literally passed toyum
, and the install failed due to missing dependencies. - Have tried:
Requires: pam.%{__isa_name}-32)
Requires: pam.i386
Requires: pam.(x86-32)
- None of these work and get passed directly to yum:
Missing Dependency: pam(%{__isa_name}-32)
Missing Dependency: pam.(x86-32)
Missing Dependency: pam.i386
- Is there any problem with RPM?
Resolution
- This is not problem of
rpm
. Packagepam
on RHEL5 doesn't providepam(x86-32)
. Have a look at output of commandrpm -q --provides pam
in RHEL5 and RHEL6. - For Red Hat Enterprise Linux 6:
# rpm -q --provides --nosignature -p pam-1.1.1-17.el6.i686.rpm | grep 'pam(x86-32)' | wc -l
1
# rpm -q --provides --nosignature -p pam-1.1.1-17.el6.i686.rpm | grep 'pam(x86-32)'
pam(x86-32) = 1.1.1-17.el6
- For Red Hat Enterprise Linux 5:
# rpm -q --provides --nosignature -p pam-0.99.6.2-6.el5_5.2.i386.rpm | grep 'pam(x86-32)' | wc -l
0
# rpm -q --provides --nosignature -p pam-0.99.6.2-6.el5_5.2.i386.rpm | grep 'pam(x86-32)'
#
- Red Hat Enterprise Linux 5
rpm
does not create those ISA provides, that feature got added inrpm
4.6. And it wont be backported because it would be mostly useless without also rebuilding the entire distribution to get those provides into all packages, and that is certainly not going to happen.
Diagnostic Steps
Steps to Understand the problem
- On Red Hat Enterprise Linux 5:
[root@localhost ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.7 (Tikanga)
[root@localhost ~]# cat /root/rpmbuild/SPECS/test.spec
Name: test
Summary: test
Version: 1
Release: 0
License: GPL
URL: https://www.redhat.com
BuildRoot: %{_tmppath}/test
Requires: pam(x86-32)
GROUP: Development/Libraries
SOURCE0: test.tar.gz
%description
%prep
%build
%install
%clean
%files
%changelog
[root@localhost ~]# rpmbuild -ba /usr/src/redhat/SPECS/test.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.95653
+ umask 022
+ cd /usr/src/redhat/BUILD
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.95653
+ umask 022
+ cd /usr/src/redhat/BUILD
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.95653
+ umask 022
+ cd /usr/src/redhat/BUILD
+ /usr/lib/rpm/brp-compress
/usr/lib/rpm/brp-compress: line 8: cd: /var/tmp/test: No such file or directory
+ /usr/lib/rpm/brp-strip
find: /var/tmp/test: No such file or directory
+ /usr/lib/rpm/brp-strip-static-archive
find: /var/tmp/test: No such file or directory
+ /usr/lib/rpm/brp-strip-comment-note
find: /var/tmp/test: No such file or directory
Processing files: test-1-0
Checking for unpackaged file(s): /usr/lib/rpm/check-files /var/tmp/test
Wrote: /usr/src/redhat/SRPMS/test-1-0.src.rpm
Wrote: /usr/src/redhat/RPMS/x86_64/test-1-0.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.95653
+ umask 022
+ cd /usr/src/redhat/BUILD
+ exit 0
[root@localhost ~]# yum localinstall /usr/src/redhat/RPMS/x86_64/test-1-0.x86_64.rpm
Loaded plugins: product-id, rhnplugin, security, subscription-manager
Updating Red Hat repositories.
This system is not registered with RHN Classic or RHN Satellite.
You can use rhn_register to register.
RHN Satellite or RHN Classic support will be disabled.
Setting up Local Package Process
Examining /usr/src/redhat/RPMS/x86_64/test-1-0.x86_64.rpm: test-1-0.x86_64
Marking /usr/src/redhat/RPMS/x86_64/test-1-0.x86_64.rpm to be installed
test | 1.5 kB 00:00
Resolving Dependencies
--> Running transaction check
---> Package test.x86_64 0:1-0 set to be updated
--> Processing Dependency: pam(x86-32) for package: test
--> Finished Dependency Resolution
test-1-0.x86_64 from /test-1-0.x86_64 has depsolving problems
--> Missing Dependency: pam(x86-32) is needed by package test-1-0.x86_64 (/test-1-0.x86_64)
Error: Missing Dependency: pam(x86-32) is needed by package test-1-0.x86_64 (/test-1-0.x86_64)
You could try using --skip-broken to work around the problem
You could try running: package-cleanup --problems
package-cleanup --dupes
rpm -Va --nofiles --nodigest
[root@localhost ~]# rpm -qRp /usr/src/redhat/RPMS/x86_64/test-1-0.x86_64.rpm
pam(x86-32)
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
[root@localhost ~]# rpm -ivh /usr/src/redhat/RPMS/x86_64/test-1-0.x86_64.rpm
error: Failed dependencies:
pam(x86-32) is needed by test-1-0.x86_64
- On Red Hat Enterprise Linux 6:
[root@localhost ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.5 (Santiago)
[root@localhost ~]# cat /root/rpmbuild/SPECS/test.spec
Name: test
Summary: test
Version: 1
Release: 0
License: GPL
URL: https://www.redhat.com
BuildRoot: %{_tmppath}/test
Requires: pam(x86-32)
GROUP: Development/Libraries
SOURCE0: test.tar.gz
%description
%prep
%build
%install
%clean
%files
%changelog
[root@localhost ~]# rpmbuild -ba rpmbuild/SPECS/test.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.Yl5zjw
+ umask 022
+ cd /root/rpmbuild/BUILD
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.VIpZcU
+ umask 022
+ cd /root/rpmbuild/BUILD
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.Tok96h
+ umask 022
+ cd /root/rpmbuild/BUILD
+ /usr/lib/rpm/brp-compress
/usr/lib/rpm/brp-compress: line 8: cd: /root/rpmbuild/BUILDROOT/test-1-0.x86_64: No such file or directory
+ /usr/lib/rpm/brp-strip
find: `/root/rpmbuild/BUILDROOT/test-1-0.x86_64': No such file or directory
+ /usr/lib/rpm/brp-strip-static-archive
find: `/root/rpmbuild/BUILDROOT/test-1-0.x86_64': No such file or directory
+ /usr/lib/rpm/brp-strip-comment-note
find: `/root/rpmbuild/BUILDROOT/test-1-0.x86_64': No such file or directory
Processing files: test-1-0.x86_64
Checking for unpackaged file(s): /usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/test-1-0.x86_64
Wrote: /root/rpmbuild/SRPMS/test-1-0.src.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/test-1-0.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.IejvLs
+ umask 022
+ cd /root/rpmbuild/BUILD
+ exit 0
[root@localhost ~]# yum localinstall /root/rpmbuild/RPMS/x86_64/test-1-0.x86_64.rpm
Loaded plugins: product-id, rhnplugin, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
This system is not registered with RHN Classic or RHN Satellite.
You can use rhn_register to register.
RHN Satellite or RHN Classic support will be disabled.
Setting up Local Package Process
Examining /root/rpmbuild/RPMS/x86_64/test-1-0.x86_64.rpm: test-1-0.x86_64
Marking /root/rpmbuild/RPMS/x86_64/test-1-0.x86_64.rpm to be installed
test | 3.9 kB 00:00 ...
Resolving Dependencies
--> Running transaction check
---> Package test.x86_64 0:1-0 will be installed
--> Processing Dependency: pam(x86-32) for package: test-1-0.x86_64
--> Running transaction check
---> Package pam.i686 0:1.1.1-17.el6 will be installed
--> Processing Dependency: libutil.so.1(GLIBC_2.0) for package: pam-1.1.1-17.el6.i686
--> Processing Dependency: libutil.so.1 for package: pam-1.1.1-17.el6.i686
--> Processing Dependency: libselinux.so.1 for package: pam-1.1.1-17.el6.i686
--> Processing Dependency: libnsl.so.1(GLIBC_2.0) for package: pam-1.1.1-17.el6.i686
--> Processing Dependency: libnsl.so.1 for package: pam-1.1.1-17.el6.i686
--> Processing Dependency: libdl.so.2(GLIBC_2.1) for package: pam-1.1.1-17.el6.i686
--> Processing Dependency: libdl.so.2(GLIBC_2.0) for package: pam-1.1.1-17.el6.i686
--> Processing Dependency: libdl.so.2 for package: pam-1.1.1-17.el6.i686
--> Processing Dependency: libdb-4.7.so for package: pam-1.1.1-17.el6.i686
--> Processing Dependency: libcrypt.so.1(GLIBC_2.0) for package: pam-1.1.1-17.el6.i686
--> Processing Dependency: libcrypt.so.1 for package: pam-1.1.1-17.el6.i686
--> Processing Dependency: libcrack.so.2 for package: pam-1.1.1-17.el6.i686
--> Processing Dependency: libc.so.6(GLIBC_2.8) for package: pam-1.1.1-17.el6.i686
--> Processing Dependency: libaudit.so.1 for package: pam-1.1.1-17.el6.i686
--> Running transaction check
---> Package audit-libs.i686 0:2.2-2.el6 will be installed
---> Package cracklib.i686 0:2.8.16-4.el6 will be installed
---> Package db4.i686 0:4.7.25-18.el6_4 will be installed
---> Package glibc.i686 0:2.12-1.132.el6 will be installed
--> Processing Dependency: libfreebl3.so(NSSRAWHASH_3.12.3) for package: glibc-2.12-1.132.el6.i686
--> Processing Dependency: libfreebl3.so for package: glibc-2.12-1.132.el6.i686
---> Package libselinux.i686 0:2.0.94-5.3.el6_4.1 will be installed
--> Running transaction check
---> Package nss-softokn-freebl.i686 0:3.14.3-9.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=======================================================================
Package Arch Version Repository Size
=======================================================================
Installing:
test x86_64 1-0 /test-1-0.x86_64 0.0
Installing for dependencies:
audit-libs i686 2.2-2.el6 test 60 k
cracklib i686 2.8.16-4.el6 test 70 k
db4 i686 4.7.25-18.el6_4 test 580 k
glibc i686 2.12-1.132.el6 test 4.3 M
libselinux i686 2.0.94-5.3.el6_4.1 test 108 k
nss-softokn-freebl i686 3.14.3-9.el6 test 147 k
pam i686 1.1.1-17.el6 test 659 k
Transaction Summary
=======================================================================
Install 8 Package(s)
Total download size: 5.9 M
Installed size: 18 M
Is this ok [y/N]: N
Exiting on user Command
[root@localhost ~]# rpm -qRp /root/rpmbuild/RPMS/x86_64/test-1-0.x86_64.rpm
pam(x86-32)
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
[root@localhost ~]# rpm -ivh /root/rpmbuild/RPMS/x86_64/test-1-0.x86_64.rpm
error: Failed dependencies:
pam(x86-32) is needed by test-1-0.x86_64
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Comments