rpm, yum and inconsistent dependencies

Andy Green andy at warmcat.com
Mon Sep 17 20:05:51 UTC 2007


Somebody in the thread at some point said:
>   just an observation -- i wanted to remove the mysql-related packages
> from my f8t1 system and, before i did that, i decided to check for
> dependencies.  one of the commands i ran:
> 
> # rpm -q --whatrequires mysql-libs
> mysql-5.0.45-4.fc8
> #
> 
>   however, i also noticed this:
> 
> # rpm -qR amarok
> ...
> libmysqlclient.so.15
> libmysqlclient.so.15(libmysqlclient_15)
> ...
> 
>   but "mysql-libs" *is* the package that supplies that shared library.
> shouldn't the rpm dependencies query be able to figure that out?

I think your database is probably quite consistent.  I installed amarok
and observed the same behaviour you described above, but I think the
reason is that you are asking two different questions.

--whatrequires mysql-libs is asking about other packages that named
mysql-libs in a Requires line in the spec.

Rpmbuild automatically lists all the touched dynamic libraries when it
builds the package, but it doesn't project from that which library
should satisfy it.  Therefore the RPMs contain a list of explicit
package names specified by the packager, and a buttload of library
sonames that were captured automatically.

It seems that amarok does NOT specify mysql-libs, but instead requires a
specific soname'd library.  RPM and yum figure out that it can satisfy
that requirement with mysql-libs.  But when you ask --whatrequires,
amarok doesn't show up because there is no specific requirement for
mysql-libs in amarok.

You can satisfy yourself that all is basically okay (and learn about the
rest of the hidden automatically determined requires mysql-libs is
satisfying) by attempting

# rpm -e mysql-libs
error: Failed dependencies:
        libmysqlclient.so.15 is needed by (installed)
mysql-5.0.37-2.fc7.i386
        libmysqlclient.so.15 is needed by (installed)
rekall-mysql-2.4.5-5.fc7.3.i386
        libmysqlclient.so.15 is needed by (installed)
perl-DBD-MySQL-3.0008-1.fc7.i386
        libmysqlclient.so.15 is needed by (installed)
mysql-server-5.0.37-2.fc7.i386
        libmysqlclient.so.15 is needed by (installed) php-mysql-5.2.2-3.i386
        libmysqlclient.so.15 is needed by (installed)
dovecot-1.0.3-14.fc7.i386
        libmysqlclient.so.15 is needed by (installed)
amarok-1.4.7-2.fc7.i386
        libmysqlclient.so.15(libmysqlclient_15) is needed by (installed)
mysql-5.0.37-2.fc7.i386
        libmysqlclient.so.15(libmysqlclient_15) is needed by (installed)
rekall-mysql-2.4.5-5.fc7.3.i386
        libmysqlclient.so.15(libmysqlclient_15) is needed by (installed)
perl-DBD-MySQL-3.0008-1.fc7.i386
        libmysqlclient.so.15(libmysqlclient_15) is needed by (installed)
mysql-server-5.0.37-2.fc7.i386
        libmysqlclient.so.15(libmysqlclient_15) is needed by (installed)
php-mysql-5.2.2-3.i386
        libmysqlclient.so.15(libmysqlclient_15) is needed by (installed)
dovecot-1.0.3-14.fc7.i386
        libmysqlclient.so.15(libmysqlclient_15) is needed by (installed)
amarok-1.4.7-2.fc7.i386
        libmysqlclient_r.so.15 is needed by (installed)
mysql-server-5.0.37-2.fc7.i386
        libmysqlclient_r.so.15 is needed by (installed)
mysql-query-browser-5.0r12-2.fc7.i386
        libmysqlclient_r.so.15 is needed by (installed)
mysql-administrator-5.0r12-2.fc7.i386
        libmysqlclient_r.so.15(libmysqlclient_15) is needed by
(installed) mysql-server-5.0.37-2.fc7.i386
        libmysqlclient_r.so.15(libmysqlclient_15) is needed by
(installed) mysql-query-browser-5.0r12-2.fc7.i386
        libmysqlclient_r.so.15(libmysqlclient_15) is needed by
(installed) mysql-administrator-5.0r12-2.fc7.i386
        mysql-libs = 5.0.37-2.fc7 is needed by (installed)
mysql-5.0.37-2.fc7.i386

-Andy




More information about the users mailing list