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