Bug 1458035

Summary: [rfe] don't download delta rpm if files missing from local rpm install
Product: [Fedora] Fedora Reporter: Dusty Mabe <dustymabe>
Component: dnfAssignee: rpm-software-management
Status: CLOSED WONTFIX QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 26CC: packaging-team-maint, rpm-software-management, vmukhame
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-06-07 11:13:28 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:

Description Dusty Mabe 2017-06-01 19:59:07 UTC
Description of problem:

dnf-2.4.1-1.fc26.noarch

If there are missing local files for an rpm (i.e. missing doc files), then let's not even attempt to download deltarpms. This way we can prevent things like this from happening: `Failed Delta RPMs increased 1.5 MB of updates to 2.1 MB (-33.1% wasted)`.


[fedora@cloudhost ~]$ sudo dnf update bash -y                                                                                                                                                                     
Fedora 26 - x86_64 - Test Updates                21 MB/s |  22 MB     00:01    
Fedora 26 - x86_64 - Updates                    872  B/s | 257  B     00:00    
Fedora 26 - x86_64                              6.8 MB/s |  53 MB     00:07    
Last metadata expiration check: 0:00:00 ago on Thu Jun 01 19:52:24 2017 UTC.
Dependencies resolved.
================================================================================
 Package     Arch          Version                 Repository              Size
================================================================================
Upgrading:
 bash        x86_64        4.4.12-5.fc26           updates-testing        1.5 M

Transaction Summary
================================================================================
Upgrade  1 Package

Total download size: 1.5 M
Downloading Packages:
bash-4.4.12-4.fc26_4.4.12-5.fc26.x86_64.drpm    478 kB/s | 525 kB     00:01    
/usr/share/locale/ca/LC_MESSAGES/bash.mo: No such file or directory
cannot reconstruct rpm from disk files
Some packages were not downloaded. Retrying.
bash-4.4.12-5.fc26.x86_64.rpm                   948 kB/s | 1.5 MB     00:01    
--------------------------------------------------------------------------------
Total                                           601 kB/s | 2.1 MB     00:03     
Failed Delta RPMs increased 1.5 MB of updates to 2.1 MB (-33.1% wasted)
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Upgrading        : bash-4.4.12-5.fc26.x86_64                              1/2 
  Running scriptlet: bash-4.4.12-5.fc26.x86_64                              1/2 
  Cleanup          : bash-4.4.12-4.fc26.x86_64                              2/2 
warning: file /usr/share/locale/zh_TW/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/zh_CN/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/vi/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/uk/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/tr/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/sv/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/sr/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/sl/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/sk/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/ru/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/ro/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/pt_BR/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/pl/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/nl/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/nb/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/lt/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/ja/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/it/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/id/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/hu/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/hr/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/gl/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/ga/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/fr/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/fi/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/et/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/es/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/eo/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/en@quot/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/en@boldquot/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/el/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/de/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/da/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/cs/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/ca/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/bg/LC_MESSAGES/bash.mo: remove failed: No such file or directory
warning: file /usr/share/locale/af/LC_MESSAGES/bash.mo: remove failed: No such file or directory
  Running scriptlet: bash-4.4.12-4.fc26.x86_64                              2/2 
  Verifying        : bash-4.4.12-5.fc26.x86_64                              1/2 
  Verifying        : bash-4.4.12-4.fc26.x86_64                              2/2 

Upgraded:
  bash.x86_64 4.4.12-5.fc26

Comment 1 Igor Gnatenko 2017-06-07 09:42:28 UTC
I'm not sure whether we can detect that some of local files are not installed... And moreover, it doesn't mean that in future they will be presented.

So I tend to close this as a NOTABUG.

Comment 2 Igor Gnatenko 2017-06-07 11:13:28 UTC
You could use --setopt=deltarpms=False --setopt=tsflags=nodocs to prevent this ;)

Comment 3 Dusty Mabe 2017-06-07 12:23:18 UTC
(In reply to Igor Gnatenko from comment #1)
> I'm not sure whether we can detect that some of local files are not
> installed... And moreover, it doesn't mean that in future they will be
> presented.

Sure we can - just use rpm. 

```
[root@localhost ~]# rpm -q bash
bash-4.4.12-4.fc26.x86_64
[root@localhost ~]# rpm -qV bash
missing     /usr/share/locale/af/LC_MESSAGES/bash.mo
missing     /usr/share/locale/bg/LC_MESSAGES/bash.mo
missing     /usr/share/locale/ca/LC_MESSAGES/bash.mo
missing     /usr/share/locale/cs/LC_MESSAGES/bash.mo
missing     /usr/share/locale/da/LC_MESSAGES/bash.mo
missing     /usr/share/locale/de/LC_MESSAGES/bash.mo
missing     /usr/share/locale/el/LC_MESSAGES/bash.mo
missing     /usr/share/locale/en@boldquot/LC_MESSAGES/bash.mo
missing     /usr/share/locale/en@quot/LC_MESSAGES/bash.mo
missing     /usr/share/locale/eo/LC_MESSAGES/bash.mo
missing     /usr/share/locale/es/LC_MESSAGES/bash.mo
missing     /usr/share/locale/et/LC_MESSAGES/bash.mo
missing     /usr/share/locale/fi/LC_MESSAGES/bash.mo
missing     /usr/share/locale/fr/LC_MESSAGES/bash.mo
missing     /usr/share/locale/ga/LC_MESSAGES/bash.mo
missing     /usr/share/locale/gl/LC_MESSAGES/bash.mo
missing     /usr/share/locale/hr/LC_MESSAGES/bash.mo
missing     /usr/share/locale/hu/LC_MESSAGES/bash.mo
missing     /usr/share/locale/id/LC_MESSAGES/bash.mo
missing     /usr/share/locale/it/LC_MESSAGES/bash.mo
missing     /usr/share/locale/ja/LC_MESSAGES/bash.mo
missing     /usr/share/locale/lt/LC_MESSAGES/bash.mo
missing     /usr/share/locale/nb/LC_MESSAGES/bash.mo
missing     /usr/share/locale/nl/LC_MESSAGES/bash.mo
missing     /usr/share/locale/pl/LC_MESSAGES/bash.mo
missing     /usr/share/locale/pt_BR/LC_MESSAGES/bash.mo
missing     /usr/share/locale/ro/LC_MESSAGES/bash.mo
missing     /usr/share/locale/ru/LC_MESSAGES/bash.mo
missing     /usr/share/locale/sk/LC_MESSAGES/bash.mo
missing     /usr/share/locale/sl/LC_MESSAGES/bash.mo
missing     /usr/share/locale/sr/LC_MESSAGES/bash.mo
missing     /usr/share/locale/sv/LC_MESSAGES/bash.mo
missing     /usr/share/locale/tr/LC_MESSAGES/bash.mo
missing     /usr/share/locale/uk/LC_MESSAGES/bash.mo
missing     /usr/share/locale/vi/LC_MESSAGES/bash.mo
missing     /usr/share/locale/zh_CN/LC_MESSAGES/bash.mo
missing     /usr/share/locale/zh_TW/LC_MESSAGES/bash.mo
```

It doesn't guarantee the files will be there once the deltarpm has been downloaded and it is attempted to be reconstructed but I can bet 99.999% of the time if the file is there right before the download of the deltarpm starts, then it will be there after the download has finished. 

I would really prefer to not close this as wontfix. I opened it as RFE for a reason.