yum: deselect package before install local package
authorZhang Qiang <qiang.z.zhang@intel.com>
Fri, 30 Sep 2011 08:42:08 +0000 (16:42 +0800)
committerZhang Qiang <qiang.z.zhang@intel.com>
Fri, 30 Sep 2011 08:42:08 +0000 (16:42 +0800)
local package should be be deselected first before building RPM
transaction.

plugins/backend/yumpkgmgr.py

index 01a6e1f..9e1b457 100644 (file)
@@ -306,6 +306,15 @@ class Yum(BackendPlugin, yum.YumBase):
         msger.verbose('repo: %s was added' % name)
         return repo
 
+    def installLocal(self, pkg, po=None, updateonly=False):
+        ts = rpmUtils.transaction.initReadOnlyTransaction()
+        try:
+            hdr = rpmUtils.miscutils.hdrFromPackage(ts, pkg)
+        except RpmUtilsError, e:
+            raise Errors.MiscError, 'Could not open local rpm file: %s: %s' % (pkg, e)
+        self.deselectPackage(hdr.name)
+        yum.YumBase.installLocal(self, pkg, po, updateonly)
+
     def installHasFile(self, file):
         provides_pkg = self.whatProvides(file, None, None)
         dlpkgs = map(lambda x: x.po, filter(lambda txmbr: txmbr.ts_state in ("i", "u"), self.tsInfo.getMembers()))