Feature changed by: Sebastian Wagner (sebix) Feature #308437, revision 30 Title: zypper search in package content openSUSE-11.3: Evaluation by product manager Priority Requester: Important openSUSE Distribution: Unconfirmed Priority Requester: Important Requested by: Michal Vyskocil (mvyskocil) Product Manager: Federico Lucifredi (flucifredi) Partner organization: openSUSE.org Description: Zypper search should be extended to search also in a filelist of package, which can make webpin or package pin obsolete. zypper search --search-content gpm.h Will return all packages matching 'gpm.h' string in a filelist. Discussion: #1: Roberto Mannai (robermann79) (2009-12-01 19:00:10) webpin still would allow searching inside a not installed package #2: Tim Edwards (tk83) (2010-01-27 16:19:50) This feature is especially important when you're compiling software. For example today I was building something and gcc complained that glibconfig.h was missing. There was no way to find out which of the hundreds of -devel packages provided this file, except for guessing (it was in glib2-devel). Many header files are much more difficult to find than glib ones. In Mandriva, which has this feature (see http://wiki.mandriva.com/en/Tools/urpmi#urpmf), I could've just done: urpmf glibconfig.h and it would've said 'glib2-devel' #3: Tino K (tk52) (2010-09-09 16:04:36) Very important feature, very much needed! zypper wp provides some of the functionality but is too crippled to be useful. For example zypper wp libpng12.so # No providers of 'libpng12.so' found. zypper wp libpng12.so.0 # finds libpng12-0 zypper wp libpng12.so.0.39.0 # No providers of 'libpng12.so.0.39.0' found. $ rpm -ql libpng12-0 /usr/lib64/libpng12.so.0 /usr/lib64/libpng12.so.0.39.0 $ rpm -ql libpng-devel | grep so /usr/lib64/libpng.so /usr/lib64/libpng12.so Even the man page is not quite correct as it says: The NAME component of a capability is not only a package name but any symbol provided by packages: /bin/vi, libcurl.so.3, ... However we get: zypper wp /bin/vim # No providers of '/bin/vim' found. I understand the reason for this behaviour is that zypper does not save the entire file list of each rpm package (rpm -ql) in the repodata directory but only what each package provides (rpm -q --provides). $ rpm -q --provides libpng12-0 libpng = 1.2.39-2.2 libpng12.so.0()(64bit) libpng12.so.0(PNG12_0)(64bit) libpng12.so.0(libpng12.so.0)(64bit) libpng12-0 = 1.2.39-2.2 libpng12-0(x86-64) = 1.2.39-2.2 $ rpm -q --provides libpng-devel libpng-devel = 1.2.39-2.2 libpng-devel(x86-64) = 1.2.39-2.2 I would very much recommend for zypper to save the entire file list (rpm -ql) of each package in the repodata directory /var/cache/zypp/raw/<repo name>/repodata/....xml.gz That will inflate the file sizes quite a bit but that's just a small price to pay for essential information. #4: Luis Medinas (lmedinas) (2010-09-09 16:25:04) I find this feature really important. See what urpmq (urpmi from mandriva) can do. This is really useful for developers and powerusers. This is just what zypper is missing. #5: Carlos Mafra (crmafra) (2011-03-01 13:34:50) Yes, this would save a lot of time when there is a missing header file in a failed compilation. I've just had this /usr/include/gnu/stubs.h:7: 27: error: gnu/stubs-32.h: Datei oder Verzeichnis nicht gefunden make [5]: *** [_muldi3.o] Fehler 1 In fact, this error motivated me to look for an option to 'zypper search' which would do the search in the file list, just to find out that there is none. Googling more about it and I found this feature request :-) #6: Harald Jagenteufel (n0s) (2011-05-10 13:09:19) any updates on this one? #7: Moqi Ba (bamoqi) (2011-07-16 08:56:32) Yes please add this feature. It is one very important feature to help newcomers to pick up openSUSE. #8: H.Merijn Brand (tuxcm) (2012-01-19 16:42:42) In the same line of querying, I'd realy like to see an option to show me what *repository* the current installed file came from. The package of course is important, but if 'zypper se package' doesn't show up anything on a fresh machine, I have to add repositories I already added to other boxes, and instead of just blindly adding all repositories that box has enabled, I'd like to just add what I need. Something like $ zypper wr /usr/bin/di di-4.31-4.1.x86_64 comes from http://packman.iu-bremen.de/suse/openSUSE_12.1 (http://packman.iu-bremen.de/suse/openSUSE_12.1) (Packman2) #9: Ruarí Ødegaard (ruario) (2012-01-20 12:54:20) This does seem like such an obvious missing feature, so it should be possible in openSUSE. Pretty much every major distro allows for something like this, e.g. Fedora = "yum provides '*/[file]'" Mandriva = "urpmf [file]" Debian based distros/APT = "apt-file search [file]" Slackware = "slackpkg file- search [file]" ArchLinux = "pkgfile -si '*/[file]'" ...etc. #10: Rizki Aulia Rachman (operamaniac) (2013-06-06 23:36:13) Very important feature, i think its a great idea. #11: Stefan Löwen (datamaan) (2016-06-06 17:11:15) As far as I know zypper still has no comparable feature is that right? I miss this quite often when I try to compile something and get something like "could not find XYZ.h" #12: Dominique Leuenberger (dimstar_suse) (2016-11-02 15:12:32) There exists zypper search --file-list So I think this feature request could be considered done and what is asked for is already possible Agreed? + #13: Sebastian Wagner (sebix) (2016-11-03 11:47:36) (reply to #12) + > Agreed? I disagree. zypper does only know of installed packages. + Do you know apt-file? After downloading the indices it allows searching + for all paths (or parts of paths) in all available packages. This is + very powerful and extremely helpful when searching for libraries, as + also noted above two times. -- openSUSE Feature: https://features.opensuse.org/308437