[Yum] Bug in yum-skip-broken (was : yum doesn't look for provides on packages to be installed)

Tim Lauridsen tla at rasmil.dk
Thu Oct 11 10:50:10 UTC 2007


Fajar A. Nugraha wrote:
> Tim Lauridsen wrote:
>   
>> On Wed, 2007-10-10 at 09:10 +0700, Fajar A. Nugraha wrote:
>>   
>>     
>>> However, with skip-broken activated :
>>>
>>> # yum --skip-broken install MySQL-shared MySQL-shared-compat
>>> MySQL-client MySQL-server
>>> Loading "priorities" plugin
>>> Loading "installonlyn" plugin
>>> Loading "skip-broken" plugin
>>> logos                     100% |=========================|  951 B    00:00
>>> dag                       100% |=========================|  951 B    00:00
>>> centos                    100% |=========================|  951 B    00:00
>>> testing                   100% |=========================|  951 B    00:00
>>> base                      100% |=========================| 1.1 kB    00:00
>>> updates                   100% |=========================| 1.1 kB    00:00
>>> mysql                     100% |=========================|  951 B    00:00
>>> local                     100% |=========================|  951 B    00:00
>>> 3670 packages excluded due to repository priority protections
>>> Setting up Install Process
>>> Parsing package install arguments
>>> Resolving Dependencies
>>> **** Checking packages for dependency problems
>>> **** Checking for dep problems  : MySQL-client - 5.0.45-0.glibc23.x86_64
>>> --> Running transaction check
>>> ---> Package MySQL-client.x86_64 0:5.0.45-0.glibc23 set to be updated
>>> --> Processing Dependency: libmysqlclient.so.15()(64bit) for package:
>>> MySQL-client
>>> --> Processing Dependency: perl(DBI) for package: MySQL-client
>>> --> Processing Dependency:
>>> libmysqlclient.so.15(libmysqlclient_15)(64bit) for package: MySQL-client
>>> --> Running transaction check
>>> ---> Package mysql.x86_64 0:5.0.22-2.1.0.1 set to be updated
>>> ---> Package perl-DBI.x86_64 0:1.52-1.fc6 set to be updated
>>> --> Finished Dependency Resolution
>>> ****   OK : mysql.x86_64 0-5.0.22-2.1.0.1 - u
>>> ****   OK : perl-DBI.x86_64 0-1.52-1.fc6 - u
>>> ****   OK : MySQL-client.x86_64 0-5.0.45-0.glibc23 - u
>>> **** Checking for dep problems  : MySQL-shared-compat -
>>> 5.0.45-0.glibc23.x86_64
>>> --> Running transaction check
>>> ---> Package MySQL-shared-compat.x86_64 0:5.0.45-0.glibc23 set to be updated
>>> --> Finished Dependency Resolution
>>> ****   OK : MySQL-shared-compat.x86_64 0-5.0.45-0.glibc23 - u
>>> **** Checking for dep problems  : MySQL-server - 5.0.45-0.glibc23.x86_64
>>> --> Running transaction check
>>> ---> Package MySQL-server.x86_64 0:5.0.45-0.glibc23 set to be updated
>>> --> Processing Dependency: libmysqlclient.so.15()(64bit) for package:
>>> MySQL-server
>>> --> Processing Dependency:
>>> libmysqlclient.so.15(libmysqlclient_15)(64bit) for package: MySQL-server
>>> --> Processing Dependency: perl(DBI) for package: MySQL-server
>>> --> Running transaction check
>>> ---> Package mysql.x86_64 0:5.0.22-2.1.0.1 set to be updated
>>> ---> Package perl-DBI.x86_64 0:1.52-1.fc6 set to be updated
>>> --> Processing Conflict: mysql conflicts MySQL
>>> --> Finished Dependency Resolution
>>> ****   Failed
>>> ****     mysql conflicts with MySQL
>>> **** Packages with dependency resolving errors
>>> **** MySQL-server - 5.0.45-0.glibc23.x86_64
>>> ****   2
>>> **** End Checking packages for dependency problems
>>> --> Running transaction check
>>> ---> Package mysql.x86_64 0:5.0.22-2.1.0.1 set to be updated
>>> ---> Package perl-DBI.x86_64 0:1.52-1.fc6 set to be updated
>>> ---> Package MySQL-client.x86_64 0:5.0.45-0.glibc23 set to be updated
>>> ---> Package MySQL-shared-compat.x86_64 0:5.0.45-0.glibc23 set to be updated
>>> --> Finished Dependency Resolution
>>>
>>> Dependencies Resolved
>>>
>>> =============================================================================
>>>  Package                 Arch       Version          Repository        Size
>>> =============================================================================
>>> Installing:
>>>  MySQL-client            x86_64     5.0.45-0.glibc23  mysql            
>>> 350 k
>>> Installing for dependencies:
>>>  MySQL-shared-compat     x86_64     5.0.45-0.glibc23  mysql            
>>> 3.1 M
>>>  mysql                   x86_64     5.0.22-2.1.0.1   updates           3.0 M
>>>  perl-DBI                x86_64     1.52-1.fc6       base              605 k
>>>
>>> Transaction Summary
>>> =============================================================================
>>> Install      4 Package(s)
>>> Update       0 Package(s)
>>> Remove       0 Package(s)
>>>
>>>
>>> Adding --skip-broken --exclude mysql gives the same result as I posted
>>> earlier, in which it works, but MySQL-shared was also installed (It
>>> shouldn't have, since MySQL-shared-compat also provides MySQL-shared,
>>> but apparently no harm done)
>>>
>>> Regards,
>>>
>>> Fajar
>>> _______________________________________________
>>> Yum mailing list
>>> Yum at lists.dulug.duke.edu
>>> https://lists.dulug.duke.edu/mailman/listinfo/yum
>>>     
>>>       
>> Weird, what skip-broken does is run the yum depsolve with each package
>> in the transaction, skip the ones there don't depsolve without errors.
>>
>> I this case i looks like MySQL-server don't desolve alone.
>>
>> So 'yum install MySQL-server' should fail to.
>>
>>   
>>     
> You are correct. I didn't look closely at the packages being installed
> with --skip-broken. MySQL-server was indeed not there. Regardless, the
> problem is the same :
>
> - without --skip-broken, installation succeeded
> - with --skip-broken, MySQL-server was automatically removed from
> transaction, but installation still failed
> - with --skip-broken and --exclude mysql, installation succeeded
>
> I believe the problem is, as you say, "what skip-broken does is run the
> yum depsolve with each package in the transaction". Meaning :
> - skip-broken sees MySQL-client, try to depsolve it
> - skip-broken sees requirement for libmysqlclient.so.15()(64bit), try to
> find a package that provides it, found mysql. HOWEVER,
> - skip-broken didn't see that I also want to install
> MySQL-shared-compat, which also provides libmysqlclient.so.15()(64bit)
> and would've been able to be installed nicely, because it runs on each
> package without looking at the entire line of package to be installed.
>
> Is there a fix for this?
>
> Regards,
>
> Fajar
>   
Maybe, skip-broken should test if the whole transactions resolves fine 
and only do the checking of each package if it fails.
But normally user only use '--skipbroken' if there is something rotten 
in the state of Denmark :)
But the main issue here is: MySQL-server libmysqlclient.so.15()(64bit) 
that is provided by mysql & MySQL-shared-compat
Then the shortest one 'mysql' is selected, but that is a problem because 
MySQL-server conflict with mysql.

This will not work.
yum install MySQL-server

This should work.
yum install MySQL-shared-compat  MySQL-server

Maybe the yum depsolver should check for conflicts in case of multiple provides of the same dep ?.

Tim




-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.baseurl.org/pipermail/yum/attachments/20071011/23c48709/attachment-0001.htm 


More information about the Yum mailing list