Evolution

Evolution is an Open Source application that can function as an Exchange client. It operates differently from the Win32 MAPI-based client familiar to Windows users, but with a little coersion, it can be installed to provide the features and functionality required to make it a viable Linux alternative to Outlook.

It is installed by default by many Linux distributions, but many of those installations are incomplete or already out of date. In the case of Fedora Core 6, there are the typical missing devel packages but a bigger problem is the openldap package which is not built with the patch required to access the Exchange 2K/2K3 Global Address List.

As mentioned previously, technical documentation to help troubleshoot problems with compiling, installing and running Evolution is fairly sparse. To make matters worse, as of the writing of this page, the search function in the Evolution public list archives located here appears to be broken and evidently has been for some time.

So, we’ll fix all the issues and build the latest stable release in the process. As of this writing, the current stable build is 2.24.0. The main packages are linked on the Evolution project page, the complete list, including checksums is here. As always, verify the integrity of any downloads by using those checksums. You will need all of the following packages, but there may others as well. Use the link above, or go to a different Gnome mirror.

cairo-1.4.12

gtkhtml-3.16.2

glib-2.12.12

libsoup-2.2.104

evolution-data-server-1.12.2

evolution-webcal-2.12.0

evolution-2.12.2

evolution-exchange-2.12.2

You also need the openldap sources. As of this writing the latest is 2.3.39.

So much for the preliminaries. Explode the tarballs so we can get started.

Of course, we’ll also need to remove some or all of the following old rpms:

rpm -e –nodeps evolution

rpm -e –nodeps evolution-connector

rpm -e –nodeps evolution-data-server

rpm -e –nodeps evolution-data-server-devel

rpm -e –nodeps evolution-devel

rpm -e –nodeps evolution-sharp

rpm -e –nodeps evolution-webcal

Cairo

We need a very new version of the Cairo graphics libraries. Initially, I built 1.4.10 to support Evolution 2.10.3. Get the latest release here.

Download it, check the sha1 checksum and explode the tarball.
Change to the cairo-1.4.12 directory and configure the makefile. (This should be a single line when entered in a bash shell.)

./configure –prefix=/usr –mandir=/usr/share/man –infodir=/usr/share/info

Compile the software:

make

Lastly, install with:

make install

Evolution is not the only software that needs Cairo, so the shared libraries need to be correctly linked, but make install takes care of that. It will not remove the previous shared library (listed below as libcairo.so.2.11.5). It needs to be removed manually.

-rw-r–r– 1 root root 2954606 Dec 27 10:27 /usr/lib/libcairo.a
-rwxr-xr-x 1 root root 868 Dec 27 10:27 /usr/lib/libcairo.la
lrwxrwxrwx 1 root root 18 Dec 27 10:27 /usr/lib/libcairo.so -> libcairo.so.2.11.6
lrwxrwxrwx 1 root root 18 Dec 27 10:27 /usr/lib/libcairo.so.2 -> libcairo.so.2.11.6
-rwxr-xr-x 1 root root 2005097 Sep 13 16:05 /usr/lib/libcairo.so.2.11.5
-rwxr-xr-x 1 root root 2011501 Dec 27 10:27 /usr/lib/libcairo.so.2.11.6

GTKHTML 3

Evolution also needs a very current gtkhtml3. Remove any existing rpms with something like:

rpm -e –nodeps gtkhtml3

rpm -e –nodeps gtkhtml3-devel

Download the version of gtkhtml3 required by the Evolution release from the Gnome project page (linked near the top of this page)

Change to the gtkhtml-3.16.2 directory and configure the makefile. (This should be a single line when entered in a bash shell.)

./configure –prefix=/usr –localstatedir=/var –mandir=/usr/share/man –infodir=/usr/share/info

Compile the software:

make

Lastly, install with:

make install

Confusingly, this will install the read-only architecture independent data into /usr/share/gtkhtml-3.14. This is not really a problem, since in this case 3.14 is not the software version, but the API version.

Again, you will need to manually remove the previous shared library file, but the resulting installed shared libraries and symlinks should look like:

-rw-r–r– 1 root root 4556176 Dec 27 13:46 /usr/lib/libgtkhtml-3.14.a
-rwxr-xr-x 1 root root 1318 Dec 27 13:46 /usr/lib/libgtkhtml-3.14.la
lrwxrwxrwx 1 root root 25 Dec 27 13:46 /usr/lib/libgtkhtml-3.14.so -> libgtkhtml-3.14.so.19.1.0
lrwxrwxrwx 1 root root 25 Dec 27 13:46 /usr/lib/libgtkhtml-3.14.so.19 -> libgtkhtml-3.14.so.19.1.0
-rwxr-xr-x 1 root root 2710261 Sep 14 10:12 /usr/lib/libgtkhtml-3.14.so.19.0.0
-rwxr-xr-x 1 root root 2732713 Dec 27 13:46 /usr/lib/libgtkhtml-3.14.so.19.1.0

Glib2

Change to glib-2.12.12 and create the makefile:

./configure –prefix=/usr –sysconfdir=/etc –mandir=/usr/share/man –infodir=/usr/share/info

Build glib with:

make

backup two shell scripts:
cp /etc/profile.d/glib2.sh /etc/profile.d/glib2.sh.bak
cp /etc/profile.d/glib2.csh /etc/profile.d/glib2.csh.bak

remove previous glib2 rpms:
rpm -e –nodeps glib2
rpm -e –nodeps glib2-devel

Install the new glib with:
make install

Lastly, restore the scripts:
mv /etc/profile.d/glib2.sh.bak /etc/profile.d/glib2.sh
mv /etc/profile.d/glib2.csh.bak /etc/profile.d/glib2.csh

Libsoup 2

Libsoup requires glib >2.12.0 Configure it with:

./configure –prefix=/usr –mandir=/usr/share/man –infodir=/usr/share/info

Build and install with:

make

make install

The libraries and symlinks should look like:

-rw-r–r– 1 root root 855944 Dec 27 14:49 /usr/lib/libsoup-2.2.a
-rwxr-xr-x 1 root root 906 Dec 27 14:49 /usr/lib/libsoup-2.2.la
lrwxrwxrwx 1 root root 20 Dec 27 14:49 /usr/lib/libsoup-2.2.so -> libsoup-2.2.so.8.5.0
lrwxrwxrwx 1 root root 20 Dec 27 14:49 /usr/lib/libsoup-2.2.so.8 -> libsoup-2.2.so.8.5.0
-rwxr-xr-x 1 root root 199440 Oct 1 2006 /usr/lib/libsoup-2.2.so.8.4.0
-rwxr-xr-x 1 root root 595794 Dec 27 14:49 /usr/lib/libsoup-2.2.so.8.5.0

OpenLDAP

Change to the openldap-2.3.39 directory.

We first need to patch the openldap source with the Evolution Exchange NTLM patch. Use something similar to this command, making sure to correct the path:

patch -p0 < ~/evolution-exchange-2.12.2/docs/openldap-ntlm.diff

Next, configure the makefile. The following line configures only the LDAP client and not the server, you may want to adjust some of these options depending on your needs. Make sure this is a single line.

./configure –prefix=/usr –sysconfdir=/etc –mandir=/usr/share/man –infodir=/usr/share/info –disable-ipv6 –disable-slapd –disable-slurpd –enable-lmpasswd –enable-spasswd –enable-modules

Compile and install with:

make depend

make

make install

We need to recreate a few symlinks to make the next installs work:

cd /usr/lib
ln -s libgobject-2.0.so.0.1200.12 libgobject-2.0.so
ln -s libgmodule-2.0.so.0.1200.12 libgmodule-2.0.so
ln -s libgthread-2.0.so.0.1200.12 libgthread-2.0.so
ln -s libglib-2.0.so.0.1200.12 libglib-2.0.so

Evolution-Data-Server

Change to the evolution-data-server-1.12.2 directory and configure the makefile:

./configure –prefix=/usr –localstatedir=/var –mandir=/usr/share/man –infodir=/usr/share/info –enable-plugins=all –enable-profiling=yes –with-openldap=yes –enable-ipv6=no –enable-gtk-doc –with-e2k-debug –with-krb5=/usr/kerberos –with-krb5-libs=/usr/lib –with-krb5-includes=/usr/include/krb5

Compile and install with:

make

make install

Evolution WebCal

Change to the evolution-webcal-2.12.0 directory and configure the makefile:

./configure –prefix=/usr –sysconfdir=/etc –localstatedir=/var –mandir=/usr/share/man –infodir=/usr/share/info

make

make install
Evolution

Now for the main Evolution package. Change to the evolution-2.12.2 directory and configure the makefile:

./configure –prefix=/usr –sysconfdir=/etc –localstatedir=/var –mandir=/usr/share/man –infodir=/usr/share/info –enable-nss=yes –enable-smime=yes –with-openldap=yes –enable-ipv6=no –with-krb5=/usr/kerberos –with-krb5-libs=/usr/lib –with-krb5-includes=/usr/include/krb5 –enable-cairo-calendar=yes –enable-exchange=yes –enable-plugins=all

Compile and install with:

make

make install

Evolution-Exchange

Change to evolution-exchange-2.12.2, and configure the makefile with:

./configure –prefix=/usr –sysconfdir=/etc –localstatedir=/var –mandir=/usr/share/man –infodir=/usr/share/info –with-e2k-debug –with-openldap=yes –enable-ipv6=no –with-krb5=/usr/kerberos –with-krb5-libs=/usr/lib –with-krb5-includes=/usr/include/krb5 –enable-gtk-doc

Compile and install with:

make

make install

Finishing touches

The GNOME menu and panel links require the following symlink:

cd /usr/bin
ln -s evolution-2.10 evolution

The following symlink is required by the Gnome clock-applet (/usr/libexec/clock-applet).
Without it you get the following error when the Gnome Desktop starts, and anytime you try to add or change a panel applet:

The panel encountered a problem while loading “OAFIID:GNOME_ClockApplet”. Do you want to delete the applet from your configuration?

Fix it by adding the following in /usr/lib:

ln -s libedataserver-1.2.so.9.0.0 libedataserver-1.2.so.7

Leave a Reply