Description of problem: Attempting to install mariadb-server with dnf results in a strange dep resolution whereby it tries to pull in part of mysql instead or mariadb, which conflicts at the file level # dnf install -y mariadb-server Dependencies resolved. ============================================================================================================================================= Package Arch Version Repository Size ============================================================================================================================================= Installing: community-mysql x86_64 5.6.20-3.fc21 fedora 6.0 M community-mysql-common x86_64 5.6.20-3.fc21 fedora 85 k mariadb-errmsg x86_64 1:10.0.12-7.fc21 fedora 141 k mariadb-server x86_64 1:10.0.12-7.fc21 fedora 13 M Transaction Summary ============================================================================================================================================= Install 4 Packages Total size: 19 M Total download size: 85 k Installed size: 100 M Downloading Packages: [SKIPPED] mariadb-server-10.0.12-7.fc21.x86_64.rpm: Already downloaded [SKIPPED] mariadb-errmsg-10.0.12-7.fc21.x86_64.rpm: Already downloaded [SKIPPED] community-mysql-5.6.20-3.fc21.x86_64.rpm: Already downloaded (4/4): community-mysql-common-5.6.20-3.fc21.x86_64.rpm 70 kB/s | 85 kB 00:01 --------------------------------------------------------------------------------------------------------------------------------------------- Total 8.7 MB/s | 19 MB 00:02 Running transaction check Transaction check succeeded. Running transaction test Error: Transaction check error: file /usr/share/man/man1/msql2mysql.1.gz conflicts between attempted installs of mariadb-server-1:10.0.12-7.fc21.x86_64 and community-mysql-5.6.20-3.fc21.x86_64 file /usr/share/man/man1/mysqlbinlog.1.gz conflicts between attempted installs of mariadb-server-1:10.0.12-7.fc21.x86_64 and community-mysql-5.6.20-3.fc21.x86_64 file /usr/share/man/man1/mysqlcheck.1.gz conflicts between attempted installs of mariadb-server-1:10.0.12-7.fc21.x86_64 and community-mysql-5.6.20-3.fc21.x86_64 file /usr/share/man/man1/mysqlimport.1.gz conflicts between attempted installs of mariadb-server-1:10.0.12-7.fc21.x86_64 and community-mysql-5.6.20-3.fc21.x86_64 Error Summary ------------- I had to explicitly specify 'mariadb' too, to get it pull the right deps: # dnf install mariadb mariadb-server Dependencies resolved. ============================================================================================================================================= Package Arch Version Repository Size ============================================================================================================================================= Installing: mariadb x86_64 1:10.0.12-7.fc21 fedora 9.8 M mariadb-errmsg x86_64 1:10.0.12-7.fc21 fedora 141 k mariadb-server x86_64 1:10.0.12-7.fc21 fedora 13 M Transaction Summary ============================================================================================================================================= Install 3 Packages Total size: 23 M Total download size: 9.8 M Installed size: 118 M Is this ok [y/N]: y ... Oddly yum got it right straight away with just 'yum install mariadb-server', so seems like a dnf quirk. Version-Release number of selected component (if applicable): yum-3.4.3-153.fc21.noarch dnf-0.6.1-1.fc21.noarch hawkey-0.5.1-1.fc21.x86_64
There seems to be something different going on with the virtual provides and choice between multiple options. Both 'community-mysql-server' and 'mariadb-server' provide 'mysql-server'. When asking to install 'mysql-server', yum will prefer 'mariadb-server' but dnf is preferring 'community-mysql-server'.
Thanks for the report. mariadb-server package requires mysql-compat-client. Both mariadb and community-mysql provides mysql-compat-client. Solver chooses the package that contains the same files as the package that required it. This deserves deeper look why solver doesn't see file conflicts.
Files data are not contained in repository metadata so solver cannot know about file conflicts. This is packaging bug of community-mysql.
This doesn't really answer the question about why 'dnf install mysql-server' chooses community-mysql-server while 'yum install mysql-server' chooses mariadb-server. File conflicts doesn't come into that part of the decision, so this still seems a bug in dnf, becuase it has different behaviour to yum, not a bug in the packaging.
DNF/libsolv simply uses different heuristics than YUM. I believe that if there are two packages providing the same thing, nobody can assume that his package will be preferred unless the preference is specified somehow.
Well, the conflicts between community-mysql and mariadb are expected, even though it should be possible to have client from community-mysql and server from mariadb -- this should be hopefully fixed by including msql2mysql man page in correct page. Anyway, I've reported a bug for libsolv (BZ #1149160m not sure if it is correct component, but as I was told dnf or hawkey should not care about solving dependencies) that dnf behaves differently than yum (an generally incorrectly), even less rationally than yum (btw. yum describe the logic in [1], dnf does not document it at all, so we can definitely change it). But, to be honest, I would like to see some better implementation than yum does it now, something very simple for cases where both provides satisfy all dependencies (i.e. if it is possible to install either of the provides and all dependencies are satisfied). I described it in the bug mentioned above like "the provide with greater NEVRA is chosen". With that simple rule we could prioritize the default provide by defining higher epoch. Nothing complicated and it would allow us to prioritize mariadb over community-mysql very well. [1] http://yum.baseurl.org/wiki/CompareProviders
mariadb-10.0.14-6.fc21 has been submitted as an update for Fedora 21. https://admin.fedoraproject.org/updates/mariadb-10.0.14-6.fc21
Package mariadb-10.0.14-6.fc21: * should fix your issue, * was pushed to the Fedora 21 testing repository, * should be available at your local mirror within two days. Update it with: # su -c 'yum update --enablerepo=updates-testing mariadb-10.0.14-6.fc21' as soon as you are able to. Please go to the following url: https://admin.fedoraproject.org/updates/FEDORA-2014-12832/mariadb-10.0.14-6.fc21 then log in and leave karma (feedback).
mariadb-10.0.14-6.fc21 has been pushed to the Fedora 21 stable repository. If problems still persist, please make note of it in this bug report.