Firefox
3, GTK and a downside of Enterprise Linux distros. So Firefox 3 is
released today. This is a Good Thing but also highlights a downside of
using an 'Enterprise' Linux distro. The Linux version of Firefox has a
dependency on the GTK toolkit and Firefox 3 requires GTK 2.10 or
higher. If you're using a Linux distro that has an older version of GTK
then Firefox pops up a message about how it needs GTK 2.10+ then exits.
Given that part of the point of Enterprise distros is that they don't
change things like library versions for years at a time, (thus
providing a stability lacking in distros that release a new version
every 6 months or so), this leaves anyone using a version of an
Enterprise distro that has GTK older than 2.10 with something of a
problem if they want Firefox 3. I am one such person as my main work
machine runs Novell's SUSE Linux Enterprise Desktop 10, which has GTK
2.8. There is of course a solution. (Aside from hoping that someone
will release Firefox 3 packages for the version of your distro you're
using, which for an Enterprise distro seems unlikley.) Get a new
version of GTK and point Firefox 3 at it. Except it may not be that
simple since GTK depends on various other libraries, possibly newer
versions of those libraries than a distro with a version of GTK older
than 2.10 includes. Anyway, this is how I got Firefox 3 running on SLED
10. It should be useful as a guide for other distros though some
adaption may be required.
Install some packages
You'll need the following packages installed: openssl-devel,
libjpeg-devel, libtiff-devel, libpng-devel. The versions that are
included with your distro should do. The names may be slightly
different if you're not using SLED 10. Debian and Ubuntu tend to use
-dev rather than -devel in package names for example. There's probably
other -devel packages you'll need apart from those I've listed and
which I already had installed, but you'll find out if that's the case
when you try and build stuff. Download source code for GTK and
dependencies. These are the versions I used.:
Glib -
http://ftp./pub/gnome/sources/glib/2.16/glib-2.16.3.tar.bz2
Cairo - http://www./releases/cairo-1.2.6.tar.gz Pango
-
http://ftp./pub/GNOME/sources/pango/1.20/pango-1.20.3.tar.bz2
ATK -
http://ftp./pub/gnome/sources/atk/1.22/atk-1.22.0.tar.bz2 GTK
- http://ftp./pub/gnome/sources/gtk+/2.12/gtk+-2.12.10.tar.bz2
I used Cairo 1.2.6 because it's new enough that Pango 1.20.3 will use
it and old enough that it didn't require me to also build pixman. Set
some environment variables
I found I had to set the following environment variables to get the
build to work. Note that the paths reflect where I installed the
libraries so change to where ever you decide to install stuff.
$ export PKG_CONFIG_PATH=/local/opt/lib/pkgconfig:$PKG_CONFIG_PATH
$ export LD_LIBRARY_PATH=/local/opt/lib:$LD_LIBRARY_PATH
$ export PATH=/local/opt/bin:$PATH
$ export CPPFLAGS="-I/local/opt/gtk/include"
$ export LDFLAGS="-L/local/opt/gtk/lib"
Build and install In the order they're listed above, unpack the source
code, build and install. The build command is the same for all:
$ ./configure --prefix=/local/opt && make && make
install
I installed the packages in to /local/opt since obviously I want to
keep it all separate to the libraries that come with SLED 10, that's
somewhere non-root users can write to and not doing this as root
eliminates the chance of a typo overwritting already installed
libaries. You may of course find some libraries don't build because you
don't have some package or other installed so you may find you have to
install a -devel package and try again. Edit: If something fails to
configure or build then read the errors. Look at what libraries are
mentioned then see if you have the -devel packages for those libraries
installed. If not install them then try again. If you get an error
about cups-config not being present then install the cups-devel
package. Also read the comments and see if someone else had the same
problem and a solution is suggested.
Make a wrapper script to run Firefox
You'll need to run Firefox via a wrapper script. This is what I use. If
you're not using SLED 10 remove or alter the MOZ_PLUGIN_DIR value as
appropriate. Replace /path-to-firefox/ with where you unpacked Firefox
3 and /local/opt with where ever you installed stuff. #!/bin/bash
export LD_LIBRARY_PATH=/local/opt/lib
export
MOZ_PLUGIN_PATH=/path-to-firefox/plugins:/usr/lib/browser-plugins
/path-to-firefox/firefox
Edit: I've just realised the MOZ_PLUGIN_DIR doesn't have any effect. I
could have sworn that it did. Will have to look in to that.
Edit: Sorted out how to make Firefox 3 uses plugins in
/usr/lib/browser-plugins and updated wrapper script.
|