Bug 1463723

Summary: Unable to fetch RPM with repotrack in file:// mode - Issue in _getFile call
Product: Red Hat Enterprise Linux 7 Reporter: Olivier BONHOMME <obonhomme>
Component: yum-utilsAssignee: Michal Domonkos <mdomonko>
Status: CLOSED ERRATA QA Contact: Luca Berton <lberton>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.3CC: james.antill, lberton, mdomonko, packaging-team-maint, tbowling
Target Milestone: rcKeywords: Triaged
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: yum-utils-1.1.31-53.el7 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-03-31 20:07:41 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1630909    

Description Olivier BONHOMME 2017-06-21 15:04:11 UTC
When using the tool repotrack for fetching some RPMS provided on a repository reachable in file mode (file:///), the download fails with the error file:///<XXXXX>/GeoIP-1.4.8-1.el6.x86_64.rpm: [Errno -1] Package does not match 
intended download.

Version-Release number of selected component (if applicable): yum-3.4.3-150.el7

How reproducible: Configure yum.conf with a repository with an URI starting by file:/// and try to fetch a RPM with the repotrack command.

Actual results: The download fails with the following stack trace !

Downloading GeoIP-1.4.8-1.el6.x86_64.rpm
Traceback (most recent call last):
  File "/usr/bin/repotrack", line 256, in <module>
    main()
  File "/usr/bin/repotrack", line 250, in main
    path = repo.getPackage(pkg)
  File "/usr/lib/python2.7/site-packages/yum/yumRepo.py", line 1070, in getPackage
    **kwargs
  File "/usr/lib/python2.7/site-packages/yum/yumRepo.py", line 1037, in _getFile
    raise e
yum.Errors.NoMoreMirrorsRepoError: failure: GeoIP-1.4.8-1.el6.x86_64.rpm from cots: [Errno 256] No more mirrors to try.
file:///<XXXXX>/GeoIP-1.4.8-1.el6.x86_64.rpm: [Errno -1] Package does not match intended download.


Expected results:

The RPM and all its dependencies are downloading successfully.

Additional info: I viewed the yum code and the errors seems to be into the yumRepo.py file when URLGrabber is called. The copy_local parameter is missing whereas it is used on all others calls.

Patching that call adding copy_local parameter with value 1 resolves the issue.

--- yumRepo.py.orig	2017-06-21 14:52:53.378000000 +0000
+++ yumRepo.py	2017-06-21 14:56:26.995000000 +0000
@@ -1062,6 +1062,7 @@
         try:
             ret = self._getFile(url=basepath,
                             relative=remote,
+			    copy_local=1,
                             local=local,
                             checkfunc=checkfunc,
                             text=text,

Comment 2 Olivier BONHOMME 2017-08-09 13:40:05 UTC
Hello,

Any news ?

Regards,

Comment 10 errata-xmlrpc 2020-03-31 20:07:41 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2020:1158