From Bugzilla Helper: User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040116 Description of problem: rpm v4.2.3 has broken backward compatibility with packages built with older versions of rpm. The OS tag for linux used to be "Linux", now it is "linux". This tag, which is contained in the rpm, is used to construct the path to the ia32 emulation directory whenever an i386 rpm is installed on an ia64 machine. Here is a snippet of the verbose output of a test rpm (built on Red Hat 6.2, rpm v3.0.4) being installed on an ia64 RHEL 3, Update 3 machine: [root@compaq2 root]# uname -a Linux compaq2 2.4.21-20.EL #1 SMP Wed Aug 18 20:30:22 EDT 2004 ia64 ia64 ia64 GNU/Linux [root@compaq2 root]# rpm -q rpm rpm-4.2.3-10 [root@compaq2 root]# rpm -vv -U --force /export/public/clemep/tmp/test-1.0.0-rh62.i386.rpm D: ============== /export/public/clemep/tmp/test-1.0.0-rh62.i386.rpm D: Expected size: 1585 = lead(96)+sigs(100)+pad(4)+data(1385) D: Actual size: 1553 D: /export/public/clemep/tmp/test-1.0.0-rh62.i386.rpm: MD5 digest: OK (f1667c0dbe7d3dc1d788b428685c3059) D: ========== relocations D: 0 relocate / -> /emul/ia32-Linux D: opening db environment /var/lib/rpm/Packages joinenv D: opening db index /var/lib/rpm/Packages rdonly mode=0x0 D: locked db index /var/lib/rpm/Packages D: opening db index /var/lib/rpm/Providename rdonly mode=0x0 D: read h# 811 Header SHA1 digest: OK (2a1cf7a3fc3698bf63711eb66211f6ba6d0e2a33) D: read h# 826 Header SHA1 digest: OK (90f7b7b714177249840c578966d57349fb4012a7) D: added binary package [0] D: found 0 source and 1 binary packages D: ========== +++ test-1.0.0-rh62 i386/Linux 0x0 Note the "Linux" tag above. Here is the output from the installation of the same test rpm (but the rpm was built with Red Hat 9, rpm v4.2, in this case): [root@compaq2 root]# rpm -vv -U --force /export/public/clemep/tmp/test-1.0.0-0.i386.rpm D: ============== /export/public/clemep/tmp/test-1.0.0-0.i386.rpm D: Expected size: 2056 = lead(96)+sigs(180)+pad(4)+data(1776) D: Actual size: 2056 D: /export/public/clemep/tmp/test-1.0.0-0.i386.rpm: MD5 digest: OK (64191fa33b2371adcf7381bcc49f3268) D: ========== relocations D: 0 relocate / -> /emul/ia32-linux D: opening db environment /var/lib/rpm/Packages joinenv D: opening db index /var/lib/rpm/Packages rdonly mode=0x0 D: locked db index /var/lib/rpm/Packages D: opening db index /var/lib/rpm/Providename rdonly mode=0x0 D: read h# 811 Header SHA1 digest: OK (2a1cf7a3fc3698bf63711eb66211f6ba6d0e2a33) D: read h# 826 Header SHA1 digest: OK (90f7b7b714177249840c578966d57349fb4012a7) D: added binary package [0] D: found 0 source and 1 binary packages D: ========== +++ test-1.0.0-0 i386/linux 0x0 This time, the OS tag is "linux". So, we are forced to create a symlink: ln -s /emul/ia32-linux /emul/ia32-Linux in order to make the installation of our rpms succeed. I am not sure in which version of rpm the OS tag for linux was changed. However, previous RHEL 3 releases did not exhibit this installation failure. This installation failure appears to be limited to the 4.2.3 version of rpm included with RHEL 3, Update 3. There may well be broader implications to the OS tag discrepancy, but the installation failures with i386 rpms on ia64 machines is currently the only problem of which I am aware. Version-Release number of selected component (if applicable): rpm-4.2.3-10 How reproducible: Always Steps to Reproduce: 1. attempt to install an i386 rpm, built with an older version of rpm, on an ia64 RHEL 3, Update 3 system (rpm v4.2.3) Actual Results: installation fails due to failure to run %pre scriptlet -- rpm attempts to run /emul/ia32-Linux/bin/sh, which does not exist -- the correct path is /emul/ia32-linux/bin/sh Expected Results: rpm installation should succeed Additional info:
This is a configuration issue only. The [Ll]inux confusion dates back to rpm-2.5.92 -- over 6 years ago -- and is due to the use of a header query in setting the autorelocate path: %_autorelocate_path /emul/%%{arch}-%%{os} rather than hardwiring the string "linux". Put the following in /etc/rpm/macros %_autorelocate_path /emul/ia32-linux to work around.
is there anything that can be done on the rpm build machine to work around this? a similar macro change perhaps? this would be far preferable to requiring manual setup steps on the installation target system prior to installation
Sure there will be a better fix at first opportunity. Meanwhile it's too late for what is already shipped.
*** Bug 139915 has been marked as a duplicate of this bug. ***
NEEDINFO_ENG has been deprecated in favor of NEEDINFO or ASSIGNED. Changing status to ASSIGNED for ENG review.
This bug is filed against RHEL 3, which is in maintenance phase. During the maintenance phase, only security errata and select mission critical bug fixes will be released for enterprise products. Since this bug does not meet that criteria, it is now being closed. For more information of the RHEL errata support policy, please visit: http://www.redhat.com/security/updates/errata/ If you feel this bug is indeed mission critical, please contact your support representative. You may be asked to provide detailed information on how this bug is affecting you.