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 RPM resource 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.
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
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.
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.