[SOLVED] Libgtk-3.so.0 missing

Hi All,
I installed a program called XOD in a toolbox with dnf. It installed okay but it won’t start as library libgtk-3.so.0 is missing. I have done every search I can think of in dnf but, while there seem to be a lot of programs that use gtk3, none seem to actually be it.

So I expanded my search and found a .rpm file that looked like it was the right one (from this page https://www.rpmfind.net/linux/rpm2html/search.php?query=libgtk-3.so.0), gtk3-3.24.8-1.fc30.i686.rpm. Downloaded and installed okay, but xod still produced the same error. So tried a couple more, gtk3-3.24.10-1.fc30.i686.rpm and gtk3-3.24.11-1.fc30.i686.rpm. Again installed fine but xod still fails.

What do I have to install to get this library?

Thanks, Ian

A plain old sudo dnf install gtk3 should work, did that not do the trick? If not, what does ldd the-app-binary say?

Hi @refi64,
I tried your suggestion, dnf told me package gtk3-3.24.11-1.fc30.i686 was already installed, but xod still complains that libgtk-3.s0.0 cannot be found. Could it be a path problem?
Not sure what the app binary is. To execute the program I enter “xod-client-electron” in the terminal. Is that the binary?
I tried ldd xod-client-electron and it told me it doesn’t exist. So I did a locate of xod-client-electron and found it in my /opt/XOD IDE folder. ldd /opt/XOD IDE/xod-client-electron didn’t work apparently because of the space in the directory name. I put the whole name in brackets and it worked!
It located a number of files that are not found. These are:

libgtk-3.so.0 => not found
libgdk-3.so.0 => not found
libX11-xcb.so.1 => not found
libasound.so.2 => not found

I tried locate libgtk-3.so.0 and there seems to be plenty of them. This is the output

⬢[ian@toolbox ~] locate libgtk-3.so.0 /usr/lib/libgtk-3.so.0 /usr/lib/libgtk-3.so.0.2404.7 /var/home/ian/.local/share/containers/storage/overlay/2d7a7ea56969d95acfc990f2052bed401955d3c67f129ad1cfc76c2e95aebe81/diff/usr/lib/.wh.libgtk-3.so.0.2404.4;5d72230b /var/home/ian/.local/share/containers/storage/overlay/2d7a7ea56969d95acfc990f2052bed401955d3c67f129ad1cfc76c2e95aebe81/diff/usr/lib/.wh.libgtk-3.so.0.2404.6;5d722496 /var/home/ian/.local/share/containers/storage/overlay/2d7a7ea56969d95acfc990f2052bed401955d3c67f129ad1cfc76c2e95aebe81/diff/usr/lib/.wh.libgtk-3.so.0.2404.7;5d7224c2 /var/home/ian/.local/share/containers/storage/overlay/2d7a7ea56969d95acfc990f2052bed401955d3c67f129ad1cfc76c2e95aebe81/diff/usr/lib/.wh.libgtk-3.so.0;5d72230b /var/home/ian/.local/share/containers/storage/overlay/2d7a7ea56969d95acfc990f2052bed401955d3c67f129ad1cfc76c2e95aebe81/diff/usr/lib/.wh.libgtk-3.so.0;5d722496 /var/home/ian/.local/share/containers/storage/overlay/2d7a7ea56969d95acfc990f2052bed401955d3c67f129ad1cfc76c2e95aebe81/diff/usr/lib/.wh.libgtk-3.so.0;5d7224c2 /var/home/ian/.local/share/containers/storage/overlay/2d7a7ea56969d95acfc990f2052bed401955d3c67f129ad1cfc76c2e95aebe81/diff/usr/lib/libgtk-3.so.0 /var/home/ian/.local/share/containers/storage/overlay/2d7a7ea56969d95acfc990f2052bed401955d3c67f129ad1cfc76c2e95aebe81/diff/usr/lib/libgtk-3.so.0.2404.7 /var/home/ian/.local/share/containers/storage/overlay/2d7a7ea56969d95acfc990f2052bed401955d3c67f129ad1cfc76c2e95aebe81/merged/usr/lib/libgtk-3.so.0 /var/home/ian/.local/share/containers/storage/overlay/2d7a7ea56969d95acfc990f2052bed401955d3c67f129ad1cfc76c2e95aebe81/merged/usr/lib/libgtk-3.so.0.2404.7 ⬢[ian@toolbox ~]

I’m no techhead (in case you hadn’t noticed…) so I’m really confused now. Why can’t the ap find the library? Is it a PATH problem?
:-\ Ian

Edit: I also tried a locate of the other two missing files, and they really are missing. Locate produced no results. :frowning:

Hmm, something just stuck out to me: are the system and program 32-bit or 64-bit? You currently have 32-bit GTK installed, so a 64-bit app won’t find it.

That would explain it. As far as I am aware everything is 64 bit. What do I have to do to install the correct libraries?

EDIT: Believe it or not I managed to solve this problem. Created a new toolbox (gotta love toolboxes!) and installed XOD. Then installed GTK3, and NSS, which only left libasount missing. That took a bit more sleuthing, but I eventually learned it is in alsa-lib.x86_64. Installed that, at voila! xod works! Barking frilliant!

Thanks for all your help yet again @refi64, much appreciated.

:slight_smile: Ian

Don’t forget, file names and paths are acceptable arguments to dnf.

dnf install libasound.so.2 and dnf install libgtk-3.so.0 are valid commands.

Thanks @pluto, I did not know that. That makes life MUCH easier!

:wink: Ian

You can do even crazier stuff like

dnf install 'pkgconfig(glib-2.0)' for when you get build errors and don’t want to Google package names

sudo dnf install 'perl(Text::CSV)' pretty self explanatory.

sudo dnf debuginfo-install package fetch debug-symbols, coredumpctl will even tell you what debug packages to get for better dumps.

Okay you’ve lost me now @pluto. I’m just a humble non-techhead end user, I don’t understand the inner workings deep in the bowels of Linux.

:wink: Ian

Basically, all RPM packages can declare a list of strings they “provide”.

For instance, all Perl packages in Fedora have perl(The::Package::Name) in their Provides list, so you can install a Perl module via dnf install 'perl(Text::CSV)' without actually knowing the full name, or find out what package it is via dnf whatprovides 'perl(Text::CSV)'.

This is also available for installing development libraries: any packages that contain a pkg-config file xyz.pc will have pkgconfig(xyz.pc) in their provides list. Compiling something and it says it can’t find ostree-1.0? Just dnf install 'pkgconfig(ostree-1.0)'.

Every file inside a package is also on its provide list, which is why dnf install /usr/lib64/libsomething.so works: dnf looks through the packages and finds the one that “provides” that file.