Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFE: flag to keep multilib package versions in sync #149

Open
ignatenkobrain opened this issue Jul 21, 2016 · 14 comments
Open

RFE: flag to keep multilib package versions in sync #149

ignatenkobrain opened this issue Jul 21, 2016 · 14 comments
Labels

Comments

@ignatenkobrain
Copy link
Collaborator

repo system 0 empty
repo available 0 testtags <inline>
#>=Pkg: foo 2 1 x86_64
#>=Pkg: foo 1 1 i686
system x86_64 rpm system
poolflags implicitobsoleteusescolors
solverflags allowvendorchange keepexplicitobsoletes bestobeypolicy keeporphans yumobsoletes
job install pkg foo-2-1.x86_64@available
job install pkg foo-1-1.i686@available
result transaction,problems

results into:

Transaction summary:

2 installed packages:
  - foo-1-1.i686
  - foo-2-1.x86_64

From https://bugzilla.redhat.com/show_bug.cgi?id=1326157

@mlschroe
Copy link
Member

Yes. Do you really want to enforce it for explicit user requests as well?

@ignatenkobrain
Copy link
Collaborator Author

@jsilhan, what do you think?

@mlschroe
Copy link
Member

Btw, you can "fix" that in hawkey/libdnf with SOLVER_NOAUTOSET, so that the solver doesn't assume the arch is intentional for that job.

If SOLVER_NOAUTOSET is used, libsolv does not attempt to guess the intention from the job. I.e. it does not assume SOLVER_SETNAME for SOLVER_SOLVABLE_NAME installs, SOLVER_SETNAME | SOLVER_SETARCH | SOLVER_SETVENDOR | SOLVER_SETREPO | SOLVER_SETEVR for SOLVER_SOLVABLE installs, and so on. See jobtodisablelist() in solver.c

@ignatenkobrain
Copy link
Collaborator Author

that seems like workaround... Would be nice to get flag which would completely enforce to be all multilib arches in sync

@mlschroe
Copy link
Member

Well, I won't add it if it will not be used, and your question above is not answered yet...

@jsilhan
Copy link

jsilhan commented Jan 23, 2017

Currently DNF do queries on packages, find package ids based on filters and then put it into selector to resolve one of given packages. If the flag would handle multilib_policy=best/all by itself that would be an improvement. I would especially invite this flag during VERIFY job so it would report these multilib violation when the new flag will be set (if it;s not libsolv doing already).

@dmach
Copy link

dmach commented May 31, 2017

We want the packages to be at the same version.
The system is better auditable and users know exactly what's installed.
Having a libsolv feature (a flag?) for that would be much nicer than hacking this in libdnf/dnf directly.

@ignatenkobrain
Copy link
Collaborator Author

@mlschroe friendly ping, we want to lock-in 32bit and 64bit versions of same package to same evr in Fedora.

@ignatenkobrain
Copy link
Collaborator Author

(by having solverflag or poolflag)

@ignatenkobrain ignatenkobrain changed the title multilib policy is not enforced enough RFE: flag to keep multilib package versions in sync Jul 2, 2018
@ignatenkobrain
Copy link
Collaborator Author

@mlschroe we would really like to have this flag for Fedora.

@ignatenkobrain
Copy link
Collaborator Author

Yes. Do you really want to enforce it for explicit user requests as well?

I think this is still not answered… Yes, this should make sure that multilib packages are kept in sync all the time.

@mlschroe
Copy link
Member

I can easily add a flag that makes the solver not disable "infarch" rules, but that means that there will be no way to install that foo-1-1.i686 package with dnf (as there is no corresponding foo-1.1.x86_64 package).

@ignatenkobrain
Copy link
Collaborator Author

@mlschroe I'll check the YUM behavior and write it back here.

@dmnks
Copy link

dmnks commented Mar 1, 2019

I promised to chime in with some information on how yum handles this.

In yum, we have the following config option (see yum.conf(5)):

protected_multilib

Either `1' or `0'.  This tells yum whether or not it should perform a check to
make sure that multilib packages are the same version.  For example, if this
option  is  off  (rpm  behavior)  then  in  some  cases it might be possible
for pkgA-1.x86_64 and pkgA-2.i386 to be installed at the same time.  However
this is very rarely desired.  Install only packages, like the kernel, are
exempt from this check.  The default is `1'.

If the option is enabled, yum will verify in the transaction building phase in YumBase.buildTransaction() that any duplicate packages (as in, having the same name) in the just resolved transaction set are of the same version. In case they're not, a verbose message is printed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants