Bug 577069

Summary: Loss of capability to add, remove or update packages
Product: Red Hat Enterprise Linux 5 Reporter: Fernando Mansito <fernando.mansito>
Component: pirutAssignee: James Antill <james.antill>
Status: CLOSED WONTFIX QA Contact: Red Hat Satellite QA List <satqe-list>
Severity: urgent Docs Contact:
Priority: low    
Version: 5.6CC: bkearney, matteoefrem
Target Milestone: rc   
Target Release: ---   
Hardware: i386   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-03-14 19:18: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:

Description Fernando Mansito 2010-03-26 00:51:32 UTC
Description of problem: This is the bug log as prepared by the add/remove app:

Component: pirut
Summary: TBd2ec4f0a config.py:877:_getsysver:TypeError: rpmdb open failed

Traceback (most recent call last):
  File "/usr/sbin/pup", line 617, in ?
    main()
  File "/usr/sbin/pup", line 609, in main
    pup = PackageUpdater(not options.autoapply, options.config)
  File "/usr/sbin/pup", line 84, in __init__
    GraphicalYumBase.__init__(self, False, config)
  File "/usr/lib/python2.4/site-packages/pirut/__init__.py", line 137, in __init__
    plugin_types=(yum.plugins.TYPE_CORE,))
  File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 170, in doConfigSetup
    return self.conf
  File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 664, in <lambda>
    conf = property(fget=lambda self: self._getConfig(),
  File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 239, in _getConfig
    self._conf = config.readMainConfig(startupconf)
  File "/usr/lib/python2.4/site-packages/yum/config.py", line 804, in readMainConfig
    yumvars['releasever'] = _getsysver(startupconf.installroot, startupconf.distroverpkg)
  File "/usr/lib/python2.4/site-packages/yum/config.py", line 877, in _getsysver
    idx = ts.dbMatch('provides', distroverpkg)
TypeError: rpmdb open failed

Local variables in innermost frame:
installroot: /
ts: <rpmUtils.transaction.TransactionWrapper instance at 0x940476c>
distroverpkg: redhat-release

The bug maims the installation without remedy by crashing upgrade, add/remove, yum and yumex. It appears very early after installation, usually when you need several packages to install one, or when you do a list of updates. The above log appeared after installing the packages for using ntfs, and showed when, after installation, yumex tried to process the (long: the first general update was still pending) list of updates.

Unless the team can find a manual way of installing a patch, even for testing any solution the installation will have to be made anew from scratch, you see that from the list of programs destroyed. A little angel, as you may understand.

Version-Release number of selected component (if applicable): CentOS 5.4 final, kernel 2.6.18-164.el5PAE.

How reproducible

No way to install anything, and if you repeat the installation, it spoils it as soon as it can. Has done it five installations in a row, a full week work lost
 completely.

Steps to Reproduce:
1. Ask you installation to install several programs or do a general update.
2.
3.
  
Actual results: see above


Expected results: see above
Additional info: Better not to ask, as you can imagine. Will also file abug with the CentOS team asap.

Comment 1 James Antill 2010-03-26 14:27:25 UTC
    idx = ts.dbMatch('provides', distroverpkg)
TypeError: rpmdb open failed

...this usually means something is holding some kind of lock on the rpmdb, often it's a stale lock.
 I'd reboot and run:

1. rm -f /var/lib/rpm/__db*
2. rpm --rebuilddb.

...which should fix rpm.

Comment 2 Fernando Mansito 2010-03-29 22:40:46 UTC
Dear Mr. Alvill,

Thank you very nuch for your advice. I have rebuilt the database as you suggested and my management system (updates, add/remove programs) is now up again,

I'm asking myself whether database corruption for seemingly unfathomable reasons and that does not require any processing but erasing all extant databases indiscriminately and a no-detail rebuild should perhaps be directly managed by yum so as to spare users, specially newbies, such serious problems (I for one have been pushed to reinstalling CentOS once and again for one week) for so little to program. Could not that be tackled in, for example, the next yum update?

Thanks again and best regards,
fernando mansito

Comment 3 matteo rossi 2011-06-05 19:27:11 UTC
Component: pirut
Summary: TBc0c9275d config.py:680:_getsysver:TypeError: rpmdb open failed

Traceback (most recent call last):
  File "/usr/sbin/pirut", line 476, in <module>
    main()
  File "/usr/sbin/pirut", line 469, in main
    pm = PackageManager(options.config, options.onlyrepo)
  File "/usr/sbin/pirut", line 63, in __init__
    GraphicalYumBase.__init__(self, False, config)
  File "/usr/lib/python2.5/site-packages/pirut/__init__.py", line 129, in __init__
    plugin_types=(yum.plugins.TYPE_CORE,))
  File "/usr/lib/python2.5/site-packages/yum/__init__.py", line 113, in doConfigSetup
    errorlevel=errorlevel)
  File "/usr/lib/python2.5/site-packages/yum/__init__.py", line 159, in _getConfig
    self._conf = config.readMainConfig(startupconf)
  File "/usr/lib/python2.5/site-packages/yum/config.py", line 613, in readMainConfig
    yumvars['releasever'] = _getsysver(startupconf.installroot, startupconf.distroverpkg)
  File "/usr/lib/python2.5/site-packages/yum/config.py", line 680, in _getsysver
    idx = ts.dbMatch('provides', distroverpkg)
TypeError: rpmdb open failed

Local variables in innermost frame:
installroot: /
ts: <rpmUtils.transaction.TransactionWrapper instance at 0x85c1f6c>
distroverpkg: redhat-release

Comment 4 James Antill 2013-03-14 19:18:29 UTC
As before, the advice in comment #1 will often solve this problem. As an RFE to automatically fix it...

This request was evaluated by Red Hat Engineering for inclusion in a Red 
Hat Enterprise Linux maintenance release.

Red Hat does not currently plan to provide this change in a Red Hat 
Enterprise Linux update release for currently deployed products.

With the goal of minimizing risk of change for deployed systems, and in 
response to customer and partner requirements, Red Hat takes a 
conservative approach when evaluating enhancements for inclusion in 
maintenance updates for currently deployed products. The primary 
objectives of update releases are to enable new hardware platform 
support and to resolve critical defects.