Bug 149472

Summary: upgrade rpm on x86_64 - up2date 4.2.57-2 'unresolvable chain of dependencies'
Product: Red Hat Enterprise Linux 3 Reporter: Clifford Perry <cperry>
Component: up2dateAssignee: Adrian Likins <alikins>
Status: CLOSED ERRATA QA Contact: Beth Nackashi <bnackash>
Severity: high Docs Contact:
Priority: medium    
Version: 3.0CC: mspevack, tao
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: RHBA-2005-712 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2005-09-28 17:14:29 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 142767    
Bug Blocks: 155571, 156320    

Description Clifford Perry 2005-02-23 14:08:06 UTC
Description of problem:
When you attempt to use up2date to upgrade rpm on an Enterprise Linux
3 U3 for AMD64 (x86_64) using the current version of up2date avaiable
(up2date-4.2.57-2) the upgrade attempt will fail with an error message :
Unresolvable chain of dependencies:
rpm-libs  4.2.3-13                       requires libelf.so.1
rpm-libs  4.2.3-13                       requires
libelf.so.1(ELFUTILS_1.0)

Version-Release number of selected component (if applicable):
# rpm -qa --qf='%{n}-%{v}-%{r}-%{ARCH}\n' | egrep
'^rpm|elfutil|up2date|redhat-release' | sort
elfutils-0.91-3-x86_64
elfutils-devel-0.91-3-x86_64
elfutils-libelf-0.91-3-x86_64
elfutils-libelf-devel-0.91-3-x86_64
redhat-release-3AS-12.3-x86_64
rpm-4.2.3-10-x86_64
rpm-build-4.2.3-10-x86_64
rpmdb-redhat-3-0.20040902-x86_64
rpm-devel-4.2.3-10-x86_64
rpm-libs-4.2.3-10-x86_64
rpm-python-4.2.3-10-x86_64
up2date-4.2.57-2-x86_64
up2date-gnome-4.2.57-2-x86_64
up2date-update-4.2.38-1-x86_64
# cat /etc/rpm/platform
x86_64-redhat-linux
# uname -a
Linux dhcp206.rhndev.redhat.com 2.4.21-20.EL #1 Wed Aug 18 20:48:55
EDT 2004 x86_64 x86_64 x86_64 GNU/Linux
# arch
x86_64
#

How reproducible:
Every time. 

Steps to Reproduce:
1. Get access to an AMD64 system. Perform a fresh install (in my case
I used kickstart with:
@ Base
@ GNOME
@ Kernel Development
@ Text-based Internet
@ Web Server
2. Make sure up2date is newest version (up2date up2date)
3. Verify that you only have the x86_64 versions of packages as shown
by the output of command string (above) "rpm -qa
--qf='%{n}-%{v}-%{r}-%{ARCH}\n' | egrep
'^rpm|elfutil|up2date|redhat-release' | sort"
4. Subscribe system to only channel rhel-x86_64-as-3
5. run command:
  up2date rpm
6. Note it fails. 

Actual results:
# up2date -v rpm
 
Fetching Obsoletes list for channel: rhel-x86_64-as-3...
 
Fetching rpm headers...
########################################
 
Name                                    Version        Rel
----------------------------------------------------------
rpm                                     4.2.3          13            
   x86_64
[RHBA-2004:501-07] An updated rpm package that allows concurrent rpmdb
access is now available.
 
 
 
Testing package set / solving RPM inter-dependencies...
There was a package dependency problem. The message was:
 
Unresolvable chain of dependencies:
rpm-libs  4.2.3-13                       requires libelf.so.1
rpm-libs  4.2.3-13                       requires
libelf.so.1(ELFUTILS_1.0)
 
#

Snip of output when doing "up2date -vv rpm" 

Testing package set / solving RPM inter-dependencies...
D: Candidates for the selected list: [['rpm', '4.2.3', '13', '',
'x86_64', '577527', 'rhel-x86_64-as-3']]
D: Adding to transaction set ['rpm', '4.2.3', '13', '', 'x86_64',
'577527', 'rhel-x86_64-as-3']
D: Selected so far [['rpm', '4.2.3', '13', '', 'x86_64', '577527',
'rhel-x86_64-as-3']]
D: Checking for dependencies
D: RPM returned 4 deps.
D: Processing dependency (('rpm-build', '4.2.3', '10'), ('rpm',
'4.2.3-10'), 8, None, 0)
D: Processing dependency (('rpm-devel', '4.2.3', '10'), ('rpm',
'4.2.3-10'), 8, None, 0)
D: Processing dependency (('rpm-libs', '4.2.3', '10'), ('rpm',
'4.2.3-10'), 8, None, 0)
D: Processing dependency (('rpm-python', '4.2.3', '10'), ('rpm',
'4.2.3-10'), 8, None, 0)
D: Dependencies: [('rpm-build', 'rpm'), ('rpm-devel', 'rpm'),
('rpm-libs', 'rpm'), ('rpm-python', 'rpm')]
D: Dep ['rpm', 'rpm', 'rpm', 'rpm'] Fetched via: [['rpm', '4.2.3',
'13', '', 'x86_64', '577527', 'rhel-x86_64-as-3']]
D: Got back response: [['rpm', '4.2.3', '13', '', 'x86_64', '577527',
'rhel-x86_64-as-3']]
D: Already selected: ['rpm', '4.2.3', '13', '', 'x86_64', '577527',
'rhel-x86_64-as-3']
D: Package rpm-build raised invalid dependency. Adding ['rpm-build',
'4.2.3', '13', '', 'x86_64', '478854', 'rhel-x86_64-as-3'] to set
D: Package rpm-devel raised invalid dependency. Adding ['rpm-devel',
'4.2.3', '13', '', 'x86_64', '2778942', 'rhel-x86_64-as-3'] to set
D: Package rpm-libs raised invalid dependency. Adding ['rpm-libs',
'4.2.3', '13', '', 'i386', '718083', 'rhel-x86_64-as-3'] to set
D: Package rpm-python raised invalid dependency. Adding ['rpm-python',
'4.2.3', '13', '', 'x86_64', '45048', 'rhel-x86_64-as-3'] to set
D: Candidates for the selected list: [['rpm-build', '4.2.3', '13', '',
'x86_64', '478854', 'rhel-x86_64-as-3'], ['rpm-devel', '4.2.3', '13',
'', 'x86_64', '2778942', 'rhel-x86_64-as-3'], ['rpm-libs', '4.2.3',
'13', '', 'i386', '718083', 'rhel-x86_64-as-3'], ['rpm-python',
'4.2.3', '13', '', 'x86_64', '45048', 'rhel-x86_64-as-3']]

Expected results:
For up2date to correctly upgrade rpm to the newest version. 

Additional info:
Will post additional infomation (long) soon.

Comment 1 Clifford Perry 2005-02-23 14:26:12 UTC
As you see within the debug output from up2date. Up2date from what I
can tell is doing the following :

- grabs headers
- determines (correctly) new version of rpm to be installed
- looks for the dependancies needed to meet the upgrade of rpm
- gets a list of packages needed - rpm-build, rpm-devel, rpm-libs &
rpm-python
- incorrectly determines that rpm-libs-4.2.3-13.i386 meets the
dependancies needed for rpm-4.2.3-13.x86_64 :

D: Package rpm-libs raised invalid dependency. Adding ['rpm-libs',
'4.2.3', '13', '', 'i386', '718083', 'rhel-x86_64-as-3'] to set

- This I believe is because the rpm-libs-4.2.3-13 is within the
rhel-x86_64-as-3 as both an .i386 and .x86_64 package, but the listing
of packages up2date gets, lists the .i386 version before the .x86_64
version. 
- Since up2date does not perform any validation of the arch type when
querying for dependancies up2date assumes the .i386 of rpm-libs does
meet the dependancy required by the .x86_64 rpm package and this then
triggers the rest of up2date attempting to meet the required
dependancies for the .i386 version of rpm-libs and eventually fails. 

The resolution it seems to this is to rewrite the code within
up2date's up2date_client/depSolver.py file such that it does correctly
take into account the arch of a package and most like make the
assumption that a x86_64 package has a dependancy for another x86_64
package in the channel, if no such package by the same matching arch
exists, look for any other packages which provide that dependancy. 

From my testing I can also state the following to be true, and can be
used as alternative methods to work arround this issue. 

1 - If you schedule the rpm errata to be applied to a system via the
RHN web interface and then use rhn_check to pull down the new rpm
packages - this works fine. 

# rhn_check -v
errata.update ([289],)
 
Name                                    Version        Rel
----------------------------------------------------------
popt                                    1.8.2          13            
   x86_64
[RHBA-2004:501-07] An updated rpm package that allows concurrent rpmdb
access is now available.
 
rpm                                     4.2.3          13            
   x86_64
[RHBA-2004:501-07] An updated rpm package that allows concurrent rpmdb
access is now available.
 
rpm-build                               4.2.3          13            
   x86_64
[RHBA-2004:501-07] An updated rpm package that allows concurrent rpmdb
access is now available.
 
rpm-devel                               4.2.3          13            
   x86_64
[RHBA-2004:501-07] An updated rpm package that allows concurrent rpmdb
access is now available.
 
rpm-libs                                4.2.3          13            
   x86_64
[RHBA-2004:501-07] An updated rpm package that allows concurrent rpmdb
access is now available.
 
rpm-python                              4.2.3          13            
   x86_64
[RHBA-2004:501-07] An updated rpm package that allows concurrent rpmdb
access is now available.
 
 
popt-1.8.2-13.x86_64.rpm:   ########################## Done.
rpm-4.2.3-13.x86_64.rpm:    ########################## Done.
rpm-build-4.2.3-13.x86_64.r ########################## Done.
rpm-devel-4.2.3-13.x86_64.r ########################## Done.
rpm-libs-4.2.3-13.x86_64.rp ########################## Done.
rpm-python-4.2.3-13.x86_64. ########################## Done.
Preparing              ########################################### [100%]
 
Installing...
   1:popt                  
########################################### [100%]
   2:rpm-libs              
########################################### [100%]
   3:rpm                   
########################################### [100%]
   4:rpm-build             
########################################### [100%]
   5:rpm-devel             
########################################### [100%]
   6:rpm-python            
########################################### [100%]
#

2 - If I manually download the (x86_64) rpm packages, I can manually
upgrade rpm to the new version using rpm -Uvh. 


Any attempt to use setarch or the --arch flags does not resolve the
issue. Attempted :

# setarch x86_64 up2date -v rpm
 
Fetching Obsoletes list for channel: rhel-x86_64-as-3...
 
Fetching rpm headers...
########################################
 
Name                                    Version        Rel
----------------------------------------------------------
rpm                                     4.2.3          13            
   x86_64
[RHBA-2004:501-07] An updated rpm package that allows concurrent rpmdb
access is now available.
 
 
 
Testing package set / solving RPM inter-dependencies...
There was a package dependency problem. The message was:
 
Unresolvable chain of dependencies:
rpm-libs  4.2.3-13                       requires libelf.so.1
rpm-libs  4.2.3-13                       requires
libelf.so.1(ELFUTILS_1.0)
 
# up2date --arch x86_64 -v rpm
 
Fetching Obsoletes list for channel: rhel-x86_64-as-3...
########################################
 
Fetching rpm headers...
########################################
 
Name                                    Version        Rel
----------------------------------------------------------
rpm                                     4.2.3          13            
   x86_64
[RHBA-2004:501-07] An updated rpm package that allows concurrent rpmdb
access is now available.
 
 
 
Testing package set / solving RPM inter-dependencies...
There was a package dependency problem. The message was:
 
Unresolvable chain of dependencies:
rpm-libs  4.2.3-13                       requires libbeecrypt.so.6
rpm-libs  4.2.3-13                       requires libbz2.so.1
rpm-libs  4.2.3-13                       requires libc.so.6
rpm-libs  4.2.3-13                       requires libc.so.6(GLIBC_2.0)
rpm-libs  4.2.3-13                       requires libc.so.6(GLIBC_2.1)
rpm-libs  4.2.3-13                       requires libc.so.6(GLIBC_2.1.3)
rpm-libs  4.2.3-13                       requires libc.so.6(GLIBC_2.2)
rpm-libs  4.2.3-13                       requires libc.so.6(GLIBC_2.2.3)
rpm-libs  4.2.3-13                       requires libc.so.6(GLIBC_2.3)
rpm-libs  4.2.3-13                       requires libc.so.6(GLIBC_2.3.2)
rpm-libs  4.2.3-13                       requires libelf.so.1
rpm-libs  4.2.3-13                       requires
libelf.so.1(ELFUTILS_1.0)
rpm-libs  4.2.3-13                       requires libpopt.so.0
rpm-libs  4.2.3-13                       requires libpthread.so.0
rpm-libs  4.2.3-13                       requires
libpthread.so.0(GLIBC_2.0)
rpm-libs  4.2.3-13                       requires
libpthread.so.0(GLIBC_2.1)
rpm-libs  4.2.3-13                       requires
libpthread.so.0(GLIBC_2.2)
rpm-libs  4.2.3-13                       requires
libpthread.so.0(GLIBC_2.3.2)
rpm-libs  4.2.3-13                       requires librt.so.1
rpm-libs  4.2.3-13                       requires libz.so.1
 
#

Comment 4 Chris Snook 2005-03-22 20:32:01 UTC
I've seen this a few times as well.  It seems to be fixed by installing both the
x86 and x86_64 versions of all of the elfutils-* packages.

Comment 6 Adrian Likins 2005-04-19 19:03:29 UTC
The release intended for u6 is from the up2date-4.4.x series, and will
include a fix for this.

Comment 7 Debbie McGrath 2005-06-08 14:22:53 UTC
This bug is considered MustFix for RHEL 3 U6 by RHN Engineering.

Comment 9 Debbie McGrath 2005-06-21 21:31:59 UTC
Dev & PM ACKs for U6

Comment 13 Beth Nackashi 2005-07-02 19:01:49 UTC
please include a test plan

Comment 14 Imed Chihi 2005-07-07 11:03:55 UTC
On an AMD64 system, try the following

# up2date rpm
(..)
Fetching rpm headers...
########################################

Name                                    Version        Rel
----------------------------------------------------------
rpm                                     4.2.3          13                x86_64

Testing package set / solving RPM inter-dependencies...
There was a package dependency problem. The message was:

Unresolvable chain of dependencies:
rpm-libs  4.2.3-13                       requires libelf.so.1
rpm-libs  4.2.3-13                       requires libelf.so.1(ELFUTILS_1.0)

This is a reliable reproducer and should tell whether the problem is still in
up2date.

 -Imed

Comment 15 Adrian Likins 2005-07-07 20:55:07 UTC
test plan:
1. install rhel3, say, u1 on a 64bit box, (amd64)
2. install latest up2date
3. `up2date rpm`
4. Should install correctly with no error

Comment 16 Beth Nackashi 2005-07-10 19:03:49 UTC
I followed the Steps to Reproduce but still got a failure due to dependency issues.

[root@vzlatkin-64 up2date-4.2.57-2]# uname -a
Linux vzlatkin-64.rdu.redhat.com 2.4.21-27.EL #1 Wed Dec 1 22:07:17 EST 2004
x86_64 x86_64 x86_64 GNU/Linux
[root@vzlatkin-64 up2date-4.2.57-2]# rpm -q redhat-release
redhat-release-3AS-12.4

This is RHEL 3 U4 AS.

[root@vzlatkin-64 up2date-4.2.57-2]# up2date rpm

Fetching Obsoletes list for channel: rhel-x86_64-as-3...

Fetching Obsoletes list for channel: playpen-4AS...

Fetching Obsoletes list for channel: support-4AS...

Fetching Obsoletes list for channel: playpen-3AS...

Fetching Obsoletes list for channel: support-3AS...

Fetching Obsoletes list for channel: playpen-java-3AS...

Fetching rpm headers...
########################################

Name                                    Version        Rel     
----------------------------------------------------------
rpm                                     4.2.3          21_nonptl         x86_64


Testing package set / solving RPM inter-dependencies...

Downloading headers to solve dependencies...
#######################################
Downloading headers to solve dependencies...
#######################################
Downloading headers to solve dependencies...
#######################################
Downloading headers to solve dependencies...
#######################################
Downloading headers to solve dependencies...
#######################################
Downloading headers to solve dependencies...
There was a package dependency problem. The message was:

Unresolvable chain of dependencies:
rpm-libs  4.2.3-21_nonptl                requires libelf.so.1
rpm-libs  4.2.3-21_nonptl                requires libelf.so.1(ELFUTILS_1.0)


The following packages were added to your selection to satisfy dependencies:
Package                                Required by
----------------------------------------------------------------------------
glibc-2.3.2-95.33.x86_64                glibc-utils-2.3.2-95.30                
glibc                 

[root@vzlatkin-64 up2date-4.2.57-2]# rpm -q up2date
up2date-4.4.27-3


From the web UI:

Summary:  	Package Install scheduled by bnackash
Details: 	This action will be executed after 2005-07-10 15:01:48 EDT.

This action's status is: Failed.
The client picked up this action on 2005-07-10 15:01:54 EDT.
The client completed this action on 2005-07-10 15:02:11 EDT.
Client execution returned "Failed: packages requested raised dependency
problems" (code 18)
Packages Scheduled:

    * rpm-4.2.3-21_nonptl

Dependency errors encountered:

    * rpm-libs-4.2.3-21_nonptl needs libelf.so.1
    * rpm-libs-4.2.3-21_nonptl needs libelf.so.1(ELFUTILS_1.0

Comment 18 Adrian Likins 2005-07-28 16:28:56 UTC
fix should be in 4.4.33

Comment 21 Beth Nackashi 2005-08-03 14:56:58 UTC
with rhel 3 u3 and up2date-4.4.33:

[root@mspevack64 root]# rpm -q up2date
up2date-4.4.33-3
[root@mspevack64 root]# up2date rpm
0.  debug              No
1.  useRhn             Yes
2.  rhnuuid            35f2e080-042d-11da-8972-00d0b74d46de
3.  isatty             Yes
4.  showAvailablePacka No
5.  retrieveOnly       No
6.  enableRollbacks    No
7.  noSSLServerURL     http://xmlrpc.rhn.redhat.com/XMLRPC
8.  pkgSkipList        ['kernel*']
9.  storageDir         /var/spool/up2date
10. adminAddress       ['root@localhost']
11. noBootLoader       No
12. serverURL          https://xmlrpc.rhn.webqa.redhat.com/XMLRPC
13. fileSkipList       []
14. versionOverride
15. sslCACert          /usr/share/rhn/RHNS-CA-CERT
16. noReplaceConfig    Yes
17. useNoSSLForPackage No
18. systemIdPath       /etc/sysconfig/rhn/systemid
19. enableProxyAuth    No
20. retrieveSource     No
21. disallowConfChange ['noReboot', 'sslCACert', 'useNoSSLForPackages', 'noSSLSe
22. headerFetchCount   10
23. networkRetries     5
24. pkgsToInstallNotUp ['kernel', 'kernel-modules', 'kernel-devel']
25. enableProxy        No
26. proxyPassword
27. updateUp2date      Yes
28. keepAfterInstall   No
29. proxyUser
30. removeSkipList     ['kernel*']
31. useGPG             No
32. gpgKeyRing         /etc/sysconfig/rhn/up2date-keyring.gpg
33. httpProxy
34. headerCacheSize    40
35. forceInstall       No
36. noReboot           No


Enter number of item to edit <return to exit, q to quit without saving>:

Fetching Obsoletes list for channel: rhel-x86_64-as-3...
########################################

Fetching Obsoletes list for channel: rhn-tools-rhel-3-as-x86_64...
########################################

Fetching rpm headers...
########################################

Name                                    Version        Rel
----------------------------------------------------------
rpm                                     4.2.3          21_nonptl         x86_64


Testing package set / solving RPM inter-dependencies...
########################################
rpm-4.2.3-21_nonptl.x86_64. ########################## Done.
rpm-libs-4.2.3-21_nonptl.x8 ########################## Done.
rpm-python-4.2.3-21_nonptl. ########################## Done.
Preparing              ########################################### [100%]

Installing...
   1:rpm-libs               ########################################### [100%]
   2:rpm                    ########################################### [100%]
   3:rpm-python             ########################################### [100%]
The following packages were added to your selection to satisfy dependencies:

Name                                    Version        Release
--------------------------------------------------------------
rpm-libs                                4.2.3          21_nonptl
rpm-python                              4.2.3          21_nonptl

[root@mspevack64 root]#

Comment 22 Todd Warner 2005-09-23 21:49:59 UTC
PROD_READY is a deprecated state. This bug is now RELEASE_PENDING.

Comment 23 Red Hat Bugzilla 2005-09-28 17:14:29 UTC
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.

http://rhn.redhat.com/errata/RHBA-2005-712.html