[zypp-devel] zypp file conflicts multilib
Hello all, As a fun test I compiled libsolv+libzypp+zypper for Fedora 22 https://build.opensuse.org/project/show/home:damianator:fedora:zypper On a vanilla Fedora 22 install I installed libsolv+libzypp+zypper and did zypper remove yum* dnf* Actually Fedora is completely usually with only zypper, impressive! (the only real problem would be the anaconda installer) I encountered one more issue though. On Fedora the 32-bit lib packages are the 'normal' i686 packages of the lib copied to the x86-64 repos. So when you install a lib like alsa-lib.i686 it contains the same files (the .so files reside in their respective /usr/lib or /usr/lib64 folders) the x86-64 version does. For non binary files (which on both architectures are the same) no conflict is there. But alsa-lib (and other packages) contains also binaries like 'aserver' which differs for both architectures and zypper warns about a file conflict and if I continue the /usr/bin/aserver file from the x86-64 will be replaced with the one from the i686 package, zypper says. I was wondering why zypper warns about that and yum/dnf doesn't and just installs the alsa-lib package. Turns out even with zypper the file won't be replaced with the one from the i686 package! Explanation here: https://lists.fedoraproject.org/pipermail/devel/2010-January/129725.html When installed in parallel, multilib RPM packages may contain files that live in common paths. When this happens, RPM uses the following algorithm: - If the file in both packages is identical, installation is allowed and the file is written - If the file in both packages is an ELF binary, the file used is the file in the package for the primary architecture - If the file in both packages is not an ELF binary a RPM conflict is raised So my suggestion here would be zypper also not to warn about a file conflict if you're installing a package for a secondary architecture that contains an elf file that conflicts with an elf file for your primary architecture. RPM heuristics will anyway not overwrite the elf file for you primary architecture, so zypper warning about that happening makes no sense (as it won't happen). You open to patches? :) Best regards, Damian -- To unsubscribe, e-mail: zypp-devel+unsubscribe@opensuse.org To contact the owner, e-mail: zypp-devel+owner@opensuse.org
On Tuesday 07 July 2015 09:49:03 Damian Ivanov wrote:
When installed in parallel, multilib RPM packages may contain files that live in common paths. When this happens, RPM uses the following algorithm:
- If the file in both packages is identical, installation is allowed and the file is written - If the file in both packages is an ELF binary, the file used is the file in the package for the primary architecture - If the file in both packages is not an ELF binary a RPM conflict is raised
So my suggestion here would be zypper also not to warn about a file conflict if you're installing a package for a secondary architecture that contains an elf file that conflicts with an elf file for your primary architecture. RPM heuristics will anyway not overwrite the elf file for you primary architecture, so zypper warning about that happening makes no sense (as it won't happen).
File conflicts are detected and reported by libzypp/libsov; zypper just visualizes them. On Fedora it's important that libsolv was built passing "-DFEDORA=1" to cmake. This will set the solver option 'implicitobsoleteusescolors=1', which enables support for installing multilib RPM package in parallel. (you can grep for implicitobsoleteusescolors in /var/log/zypper.log to check it's value). If the reported conflicts are nevertheless wrong, you should file an issue at https://github.com/openSUSE/libsolv/issues. (Somehow related to https://github.com/openSUSE/libzypp/issues/46; zypper is not familiar with Fedoras way of installing multilib RPM package in parallel.)
You open to patches? :)
Of course. Preferred via github. (https://github.com/openSUSE/{libsolv,libzypp,zypeper}) -- cu, Michael Andres +------------------------------------------------------------------+ Key fingerprint = 2DFA 5D73 18B1 E7EF A862 27AC 3FB8 9E3A 27C6 B0E4 +------------------------------------------------------------------+ Michael Andres SUSE LINUX GmbH, Development, ma@suse.com Maxfeldstrasse 5, D-90409 Nuernberg, Germany, ++49 (0)911 - 74 053-0 +------------------------------------------------------------------+ SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Dilip Upmanyu Graham Norton, HRB 21284 (AG Nürnberg) +------------------------------------------------------------------+ -- To unsubscribe, e-mail: zypp-devel+unsubscribe@opensuse.org To contact the owner, e-mail: zypp-devel+owner@opensuse.org
participants (2)
-
Damian Ivanov
-
Michael Andres