Description:
I see in the online install documentation: "It is designed to run under the Gnome desktop, but you may also use other desktops, such as KDE, as long as GTK2 is installed."
My request is that you avoid using bleeding edge libraries for your apps. Otherwise, they simply don't run unless one has a very recent version of Linux. A big advantage of Linux is that one generally doesn't need to upgrade it all the time. You are forcing me to upgrade, which is expensive in terms of time and effort required. To get GTK2 onto my machine, I'll have to install an entire new release of Linux, otherwise I'll spend many hours dealing with one dependency after another. Here's my story:
Downloaded binaries for MySQL Administrator and they failed to run, with following error:
./mysql-administrator-bin: error while loading shared libraries: libgtkmm-2.0.so.1: cannot open shared object file: No such file or directory
Yet I do have /usr/lib/libgtk-1.2.so.0.9.1 (obviously not GTK2 though). So, I thought, "These nice guys provide the source too, so it should build on my machine - right?". Nope. Downloaded the source distribution and tried building mysql-gui-common first:
------------------------------------------------
[craigj@cr114970-c mysql-gui-common]$ ./configure
checking for a BSD-compatible install... /usr//bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking build system type... i686-redhat-linux-gnu
checking host system type... i686-redhat-linux-gnu
checking for gcc... gcc
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking for ranlib... ranlib
checking for pkg-config... /usr//bin/pkg-config
checking for libxml-2.0 >= 2.6.2 glib-2.0... Requested 'libxml-2.0 >= 2.6.2' but version of libXML is 2.5.11
configure: error: Library requirements (libxml-2.0 >= 2.6.2 glib-2.0) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.
-------------------------------------------------
So, ./configure requires libxml 2.6.2 but Mandrake 9.1 (a relatively recent version of Linux) only has libxml 5.2.11. Trying to upgrade libxml (or, even worse, GTK2) throws one into RPM hell. For example:
-------------------------------------------------
rpm -ivh libxml2-2.6.11-1.i386.rpm
Preparing... ########################################### [100%]
file /usr/bin/xmlcatalog from install of libxml2-2.6.11-1 conflicts with file from package libxml2-utils-2.5.4-1mdk
file /usr/bin/xmllint from install of libxml2-2.6.11-1 conflicts with file from package libxml2-utils-2.5.4-1mdk
file /usr/lib/libxml2.so.2 from install of libxml2-2.6.11-1 conflicts with file from package libxml2-2.5.11-1mdk
-------------------------------------------------
How to repeat:
Try to install and run MySQL Administrator binaries on Mandrake Linux 9.1. It won't run. Maybe you would get the same effect with Red Hat 8.0.
Try to install and build msql-gui-common on Mandrake Linux 9.1. The ./configure script will complain about old version of libxml. Maybe with Red Hat 8.0 you would get the same effect.
Suggested fix:
1.) Don't use the latest libraries available -- not everyone has them.
2.) Alternatively, use conditional compiling in the source code to permit the user to build with older libraries.
3.) Alternatively, supply pre-built versions for the latest libraries and also for older ones.