Bugzilla will be upgraded to version 5.0. The upgrade date is tentatively scheduled for 2 December 2018, pending final testing and feedback.
Bug 1361609 - Yum changes arch of package if repository becomes out of sync
Yum changes arch of package if repository becomes out of sync
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: yum (Show other bugs)
7.3
Unspecified Linux
medium Severity medium
: rc
: ---
Assigned To: Michal Domonkos
Eva Mrakova
:
: 1428716 (view as bug list)
Depends On:
Blocks: 1298243 1420851 1465896 1466368
  Show dependency treegraph
 
Reported: 2016-07-29 09:49 EDT by Terry Bowling
Modified: 2018-04-10 11:07 EDT (History)
7 users (show)

See Also:
Fixed In Version: yum-3.4.3-156.el7
Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2018-04-10 11:05:56 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
dummy-1-1.x86_64.rpm (1.46 KB, application/x-rpm)
2016-07-29 09:51 EDT, Terry Bowling
no flags Details
dummy-1-2.i686.rpm (1.52 KB, application/x-rpm)
2016-07-29 09:52 EDT, Terry Bowling
no flags Details
testrepo.repo (113 bytes, text/plain)
2016-07-29 09:54 EDT, Terry Bowling
no flags Details


External Trackers
Tracker ID Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2018:0845 None None None 2018-04-10 11:07 EDT

  None (edit)
Description Terry Bowling 2016-07-29 09:49:03 EDT
Description of problem:

yum is not honoring the preferred hardware architecture when updating packages.  For example, repository containing:

	===========================================
	Package  Arch   Version     Repository
	===========================================
	dummy.x86_64     1-1        testrepo
	dummy.i686       1-2        testrepo

Yum will install dummy-1-2.i686 because the version is newer, even though the x86_64 version is already installed.

This is true even when /etc/yum.conf has the following directives set:

	exactarch=1
	multilib_policy=best
	protected_multilib=1

It is understood that it is bad form to have the package versions/arch out of sync like this.  However, the concern is that in the event that a problem occurred and the repository *accidentally* became out of sync, the expectation is that yum should fail to warn of the issue rather than simply change arch of many packages potentially causing a disruption of service.

	# yum update dummy.x86_64
	testrepo       | 2.9 kB  00:00:00     
	Resolving Dependencies
	--> Running transaction check
	---> Package dummy.x86_64 0:1-1 will be updated
	---> Package dummy.i686 0:1-2 will be an update
	--> Finished Dependency Resolution
	
	Dependencies Resolved
	===================================================================================
	 Package            Arch              Version          Repository             Size
	===================================================================================
	Updating:
	 dummy              i686              1-2              testrepo              1.5 k
	
	Transaction Summary
	===================================================================================
	Upgrade  1 Package

Version-Release number of selected component (if applicable):

	RHEL 7.2
	yum-3.4.3-132.el7.noarch
	rpm-4.11.3-17.el7.x86_64

How reproducible:

Steps to Reproduce:
1.  yum install -y createrepo httpd

2.  systemctl start httpd

3.  Copy attached rpms (dummy-1-1.x86_64.rpm  dummy-1-2.i686.rpm) 
	to /var/www/html/testrepo

4.  Copy attached testrepo.repo into /etc/yum.repo.d/

5.  Add the following directives to /etc/yum.conf
	exactarch=1
	multilib_policy=best
	protected_multilib=1

6.  confirm the test repo configured
	yum repolist 

7.  confirm both packages available from repo
	yum list dummy

8.  Install dummy.  Note that it installs lower versioned, x86_64 package
	yum install dummy

9.  Update dummy.  Note that it installs the higher versioned, i686 package,
    even though x86_64 might be specified.

	yum update dummy.x86_64

Actual results:
Yum upgrades to dummy-1-2.i686.rpm, honoring the version number over the architecture.


Expected results:
	Yum, with the directives configured, would either generate an error or simply 
	not update the package since the $arch is different.
	dummy-1-1.x86_64.rpm would remain installed.


Additional info:
Comment 1 Terry Bowling 2016-07-29 09:51 EDT
Created attachment 1185564 [details]
dummy-1-1.x86_64.rpm
Comment 2 Terry Bowling 2016-07-29 09:52 EDT
Created attachment 1185565 [details]
dummy-1-2.i686.rpm
Comment 3 Terry Bowling 2016-07-29 09:54 EDT
Created attachment 1185566 [details]
testrepo.repo
Comment 4 Terry Bowling 2016-11-16 10:51:14 EST
Note the follow BZs are possibly somewhat related, all involving the upgrades and new i686 (32 bit) version of OpenJDK.

bz1395397 - Bug: In-place upgrade installs wrong version of OpenJDK
bz1388520 - installing java-1.8.0-openjdk.i686 installs incorrect x86_64 dependencies
bz1361609 - Yum changes arch of package if repository becomes out of sync with 32bit OpenJDK
Comment 12 Valentina Mukhamedzhanova 2017-03-15 10:31:25 EDT
*** Bug 1428716 has been marked as a duplicate of this bug. ***
Comment 23 errata-xmlrpc 2018-04-10 11:05:56 EDT
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-2018:0845

Note You need to log in before you can comment on or make changes to this bug.