@ -614,6 +614,8 @@ def local_envra(path):
fd = os . open ( path , os . O_RDONLY )
fd = os . open ( path , os . O_RDONLY )
try :
try :
header = ts . hdrFromFdno ( fd )
header = ts . hdrFromFdno ( fd )
except rpm . error as e :
return None
finally :
finally :
os . close ( fd )
os . close ( fd )
@ -752,6 +754,8 @@ def install(module, items, repoq, yum_basecmd, conf_file, en_repos, dis_repos, i
# most common case is the pkg is already installed
# most common case is the pkg is already installed
envra = local_envra ( package )
envra = local_envra ( package )
if envra is None :
module . fail_json ( msg = " Failed to get nevra information from RPM package: %s " % spec )
installed_pkgs = is_installed ( module , repoq , envra , conf_file , en_repos = en_repos , dis_repos = dis_repos , installroot = installroot )
installed_pkgs = is_installed ( module , repoq , envra , conf_file , en_repos = en_repos , dis_repos = dis_repos , installroot = installroot )
if installed_pkgs :
if installed_pkgs :
res [ ' results ' ] . append ( ' %s providing %s is already installed ' % ( installed_pkgs [ 0 ] , package ) )
res [ ' results ' ] . append ( ' %s providing %s is already installed ' % ( installed_pkgs [ 0 ] , package ) )
@ -1046,6 +1050,9 @@ def latest(module, items, repoq, yum_basecmd, conf_file, en_repos, dis_repos, up
# get the pkg e:name-v-r.arch
# get the pkg e:name-v-r.arch
envra = local_envra ( spec )
envra = local_envra ( spec )
if envra is None :
module . fail_json ( msg = " Failed to get nevra information from RPM package: %s " % spec )
# local rpm files can't be updated
# local rpm files can't be updated
if not is_installed ( module , repoq , envra , conf_file , en_repos = en_repos , dis_repos = dis_repos , installroot = installroot ) :
if not is_installed ( module , repoq , envra , conf_file , en_repos = en_repos , dis_repos = dis_repos , installroot = installroot ) :
pkgs [ ' install ' ] . append ( spec )
pkgs [ ' install ' ] . append ( spec )
@ -1057,6 +1064,9 @@ def latest(module, items, repoq, yum_basecmd, conf_file, en_repos, dis_repos, up
package = fetch_rpm_from_url ( spec , module = module )
package = fetch_rpm_from_url ( spec , module = module )
envra = local_envra ( package )
envra = local_envra ( package )
if envra is None :
module . fail_json ( msg = " Failed to get nevra information from RPM package: %s " % spec )
# local rpm files can't be updated
# local rpm files can't be updated
if not is_installed ( module , repoq , envra , conf_file , en_repos = en_repos , dis_repos = dis_repos , installroot = installroot ) :
if not is_installed ( module , repoq , envra , conf_file , en_repos = en_repos , dis_repos = dis_repos , installroot = installroot ) :
pkgs [ ' install ' ] . append ( package )
pkgs [ ' install ' ] . append ( package )