Cannot find package providing file my_global.h

I need to compile a framework using MySQL, in particular, there is a header my_global.h included.

In Leap, it was provided by a package libmysqlclient-devel. In Tumbleweed, there is no libmysqlclient-devel any more, and I could not find the file in question in any of mysql-related devel packages I’ve tried. AFAIK, there is no way in openSUSE to query which package owns a missing file.

I am not familiar with the way Tumbleweed packages MySQL- and MariaDB-related stuff. Could someone advice me what to do with missing my_global.h?

Try some zypper searches. I don’t have Tumbleweed to demonstrate. But the sort of thing you could play with is

zypper se --provides  abcde

and/or

zypper se --provides  --match-exact abcde

Have a look at man zypper to see the correct useage/usages

Actually, man zypper is big, so if you want to read it at leisure you could write the book out with this

man zypper ~/Desktop/ManZypper

then maybe search through the book for instances of --provides (or something like that).

I’ve read the manuals and tried some additional search on the web. Unfortunately, it seems zypper with --provides is able to find only stuff included in the package “Provides” list, and cannot help with files that are contained in the package but not mentioned in this list.

Looks like the file in question, my_globals.h, is not mentioned in the “Provides” list of any package. Besides, I’ve checked Leap 42.3 — there it is contained in libmysqlclient-devel, but not included in it’s “Provides” list as well.

And “zypper search --file-list” is able to find any file, but only for packages that are already installed, just like “rpm -qf /path/to/file”.

I’ve found some threads at openSUSE site, where people agree that zypper does not provide any functionality for searching a package that contains a particular file (in case neither the file is mentioned in the “Provides” list of the package nor the package is already installed). See, e.g., https://forums.opensuse.org/showthread.php/513940-Find-package-that-provides-file, https://forums.opensuse.org/showthread.php/431744-find-which-package-provides-a-particular-file, or https://features.opensuse.org/308437.

Looks like we need an advice of a person who is familiar with packaging of MySQL in Tumbleweed and just knows where this file is located. Or maybe there is some non-obvious way I’ve missed.

Currently I’ve had to switch to Leap 42.3, where I simply know that my_globals.h is included in libmysqlclient-devel.

First,
I’m pretty sure the file you want is “my_global.h” and not “my_globals.h”
Hope that isn’t affecting your search…

As for recommendations…

  • You can submit a “feature request” to have the missing package built for TW, but even if that were granted it might take awhile for the package to become available.
  • If all you need is that one file, you can try using the file you found in the LEAP package. Within each major version, the majority of files don’t change so the chances are the older file will still provide the functionality you need.
  • You can try downgrading your TW mysql client, and use the LEAP mysql client instead so that both the app and the development header files match.

HTH,
TSU

Hi
It was changed by the looks https://jira.mariadb.org/browse/MDEV-13773 you need to update your code.

Perhaps I am hijacking the thread, but I think I have a very similar problem and, even though I opened a specific thread, it has been very quiet so far.

The issue at first is the same, I cannot compile because ‘make’ reports that my_global.h is missing.
It gets stranger very quickly, because I am trying to compile PHP 7.1.28 (which was just the latest 7.1 version I’ve found at php.net).

From my searches, it seems indeed that my_global.h is nowhere to be found, for Leap 15.0.

I did find it inside the package libmysqlclient-devel-10.0.35-35.1, but that was release only for Leap 42.3.

I am puzzled because I cannot be the first one to try to compile PHP for 15.0… 15.0 has been around for a while now… how come these packages are not available (yet) ?

I looked at the Build service mentioned earlier, but I cannot see a way to request a certain package to be ported.

Can someone point my nose to the right page ?

Thanks for any clue
Dario

For me this works:

# zypper se --file-list gl3.h
Loading repository data...
Reading installed packages...

S  | Name                 | Summary                                | Type
---+----------------------+----------------------------------------+--------
i+ | Mesa-libGLESv3-devel | Файлы разработки для API OpenGL ES 3.x | package

However all of the above does not work if package containing the file is not installed:


# zypper se --file-list --match-substrings gl3.h
Loading repository data...
Reading installed packages...
No matching items found.

So if file not listed in provides section then no way to find it until package installed.

Your post may be valuable, but I doubt it is worth the effort to hang it at the end of a more then two years old thread.
Who (except for the always vigilant mods) will ever see it arrive?