From 47b2dc611ce649b4087f751de253ab3fd8d9404b Mon Sep 17 00:00:00 2001 From: Richard C Isaacson Date: Fri, 7 Mar 2014 15:01:39 -0600 Subject: [PATCH] Look at the filename and if it has a version defined possibly process this as a downgrade. --- library/packaging/yum | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/library/packaging/yum b/library/packaging/yum index 15f086f6b81..1a77cf0f0b0 100644 --- a/library/packaging/yum +++ b/library/packaging/yum @@ -543,15 +543,18 @@ def install(module, items, repoq, yum_basecmd, conf_file, en_repos, dis_repos): # downgrade - the yum install command will only install or upgrade to a spec version, it will # not install an older version of an RPM even if specified by the install spec. So we need to # determine if this is a downgrade, and then use the yum downgrade command to install the RPM. - pkg_name = splitFilename(spec)[0] - pkgs = is_installed(module, repoq, pkg_name, conf_file, en_repos=en_repos, dis_repos=dis_repos, is_pkg=True) - if pkgs: - (cur_name, cur_ver, cur_rel, cur_epoch, cur_arch) = splitFilename(pkgs[0]) - (new_name, new_ver, new_rel, new_epoch, new_arch) = splitFilename(spec) + split_pkg_name = splitFilename(spec) + # if the Name and Version match a version was not provided and this is not a downgrade. + if split_pkg_name[0] == split_pkg_name[1]: + pkg_name = split_pkg_name[0] + pkgs = is_installed(module, repoq, pkg_name, conf_file, en_repos=en_repos, dis_repos=dis_repos, is_pkg=True) + if pkgs: + (cur_name, cur_ver, cur_rel, cur_epoch, cur_arch) = splitFilename(pkgs[0]) + (new_name, new_ver, new_rel, new_epoch, new_arch) = splitFilename(spec) - compare = compareEVR((cur_epoch, cur_ver, cur_rel), (new_epoch, new_ver, new_rel)) - if compare > 0: - downgrade = True + compare = compareEVR((cur_epoch, cur_ver, cur_rel), (new_epoch, new_ver, new_rel)) + if compare > 0: + downgrade = True # if not - then pass in the spec as what to install # we could get here if nothing provides it but that's not