[Yum] repoquery --whatprovides /usr/lib/python2.4 in rawhide

Panu Matilainen pmatilai at laiskiainen.org
Wed Nov 8 19:55:40 UTC 2006


On Tue, 2006-11-07 at 16:11 -0800, David Lutterkort wrote:
> When I run
>         repoquery --whatprovides /usr/lib/python2.4
> 
> against Fedora rawhide, I get
>         
>         kdebindings-0:3.5.5-0.1.fc6.i386
>         mailman-3:2.1.9-2.i386
>         python-0:2.4.4-1.fc7.i386
>         
> I understand python (expected) and kdebindings (packaging mistake), but
> can't find any reason why mailman would provide /usr/lib/python2.4. The
> closest I have found is that it owns
> '/usr/lib/mailman/pythonlib/lib/python2.4' .. is this a bug in
> repoquery ?

It's a bug alright, but actually in yum (3.0) itself, repoquery simply
calls yum methods here. sqlitesack.searchPrco() uses SQL "LIKE" in the
search instead of exact matching (unless the name contains % characters)
which seems to be the problem here.

To verify, the one-liner below disables using LIKE under any
circumstances and then only python and kdebindings (which has a
packaging bug) are left. Makes me wonder why is yum doing non-exact
matching in file provides? Doesn't seem like a very good idea to me :)

--- yum/sqlitesack.py.exact     2006-11-08 21:35:20.000000000 +0200
+++ yum/sqlitesack.py   2006-11-08 21:48:38.000000000 +0200
@@ -362,7 +362,7 @@
         for (rep,cache) in self.filelistsdb.items():
             cur = cache.cursor()
             (dirname,filename) = os.path.split(name)
-            if name.find('%') == -1: # no %'s in the thing safe to LIKE
+            if name.find('%') == None: # no %'s in the thing safe to LIKE
                 cur.execute("select packages.pkgId as pkgId,\
                     filelist.dirname as dirname,\
                     filelist.filetypes as filetypes,\

	- Panu -




More information about the Yum mailing list