commit 32f39d67971f1bd6dbf4b559a8f95e8712edccf8 Author: Richard Hughes Date: Thu Oct 30 16:22:47 2008 +0000 bugfix: yum: fix getting distibution upgrade information when we have multiple repos providing preupgrade. Fixes rh#469172 diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py index 9a75200..85cf4da 100755 --- a/backends/yum/yumBackend.py +++ b/backends/yum/yumBackend.py @@ -1657,15 +1657,17 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage): pkgs = self.yumbase.rpmdb.searchNevra(name='preupgrade') if len(pkgs) == 0: #install preupgrade - pkgs = self.yumbase.pkgSack.searchNevra(name='preupgrade') + pkgs = self.yumbase.pkgSack.returnNewestByName(name='preupgrade') if len(pkgs) == 0: self.error(ERROR_PACKAGE_NOT_FOUND, "Could not find upgrade preupgrade package in any enabled repos") - elif len(pkgs) == 1: - txmbr = self.yumbase.install(po=pkgs[0]) - if txmbr: - self._runYumTransaction() + # we can have more than one result if the package is in multiple repos, for example + # a machine with i386 _and_ x86_64 configured. + # in this case, just pick the first entry as they are both noarch + txmbr = self.yumbase.install(po=pkgs[0]) + if txmbr: + self._runYumTransaction() else: - self.error(ERROR_INTERNAL_ERROR, "not one update possibility") + self.error(ERROR_INTERNAL_ERROR, "could not install preupgrade as no transaction") elif len(pkgs) == 1: # check if there are any updates to the preupgrade package po = pkgs[0]