6.0.0-git
2024-04-19
Last Modified 2006-05-02 by Jan Schneider

Horde Administrator's FAQ

Obtaining and Installing Horde and Components

Where can I obtain Horde and its components?

Go to our Download Page.

All components which have never seen a stable release are available through CVS. Step-by-step directions for obtaining them with CVS are available on the Horde website.

(Please keep in mind that anything that hasn't seen a stable release hasn't seen it for a reason; while some of the components are functional at this point and may be capable of being used in production, they're still not quite ready in the eyes of the developers, and might be buggy in interesting and well-hidden ways.)

Nightly snapshots of all CVS modules are also available at Snapshot site in tar formats. Since these are unattended, automatted snapshots they may not always be stable or even work at all. They are mostly intended for those who need the CVS code but do not have access to CVS.

What version of Horde should I be using?

See Horde Version Compatibility.

What version of IMP should I be using?

See Horde Version Compatibility.

Can I install Horde and its components as precompiled packages?

On some Linux distributions, it is possible to install Horde and any of its stable components from precompiled packages.

The Horde Project no longer makes our own RPMs available (old packages can be found here).

Debian users can install IMP through their package manager as well; the IMP packages are available in the stable distribution.

How can I make Debian's PHP package use IMAP-SSL?

These instructions are quite old.

Jason Healy contributed these instructions for building PHP with IMAP-SSL support. He tested them on a Debian testing system (Woody) with PHP 4.0.5-2.

Find a nice quiet directory (replace /usr/local/src or your favorite source tree location):


mkdir /usr/local/src

cd /usr/local/src

Get the source to the PHP IMAP package (you must have deb-src: lines in your /etc/apt/sources.list for this to work)


apt-get source php4-imap

This will download and unpack the source to the php4 package.

Make sure that you have all the development tools necessary to build the php4 package. A list of them can be found in /usr/local/src/php4_VERSION.dscM. Install all of those packages with apt-get. Make sure to use libc-client-ssl2000 and libc-client-ssl2000-dev (in non-us) instead of plain libc-client.

Move into the source tree unpacked by Debian:


cd /usr/local/src/php4-VERSION/debian

Make these two changes: in the file rules, add the line


--with-imap-ssl  

directly under the line


--with-imap=shared  

and in the file libc-client.la, change the line


dependency_libs=' -lpam -ldl -lcrypt'

to read


dependency_libs=' -lpam -ldl -lcrypt -lc-client -lssl -lcrypto'

(and in case you're wondering, the added flags are given in /usr/share/doc/libc-client-ssl2000-dev/README.Debian).

Then move into the root of the unpacked source directory:


cd /usr/local/src/php4-VERSION

and build the package (the -us -uc options prevent you from trying to cryptographically sign the binaries):


dpkg-buildpackage -us -uc -rsudo

You can also use -rfakeroot, or whatever your favorite root enabler is.

Wait for the compile to finish. If it doesn't work, make sure you've installed all the devel packages you need, and then start making burnt offerings.

When the compile succeeds, move up to the root level of the source:


cd /usr/local/src

and then install all of the new debs that you've created. Note that you must install the new php4-VERSION.deb that is built, as all the modules are compiled against it. You cannot mix your newly-compiled php4 with any existing modules from the debian package system. So if you already have php4, php4-gd, and php4-imap on your system from Debian, you have to install php4, php4-gd, and php4-imap from your new source directory for everything to continue working. In the example above, you'd say (as root):


dpkg -i php4_VERSION.deb php4-imap_VERSION.deb php4-gd_VERSION.deb

Once that's all done, restart the webserver, and see if SSL works!

NOTES: If the compile breaks, check the package dependencies in the .dsc file and make sure you have them installed correctly. Also, make sure that the flags you add to the libc-client.la file match those specified in the libc-client-ssl README.

If your webserver refuses to restart, it's probably because you're mixing old and new PHP modules. You cannot just replace the IMAP module with your new compiled version; you must use your newly compiled php4 base, plus ALL the modules you compiled that match those already on your system. dpkg -i should replace the modules on your system with the newly compiled ones without causing any dependency problems.

How do I install from CVS?

Step-by-step directions for obtaining the software with CVS are available on the Horde website. In addition, please note the following issues which often come up:

  • When updating via CVS, it is critical that you watch for Conflicts as noted by the C flag in the output. Any conflicts must be resolved by manually editing the file.
    • When updating via CVS, make sure you check for any configuration files (config/*.php.dist or config/*.xml) which have been modified. You will need to manually merge any changes to these files into your working configuration files.
    • Before reporting an error with a CVS version of some software, make sure you have updated it so that you don't report errors which have already been fixed.
    • After some CVS updates, you may have to logout of your session, restart your browser, or even restart your web server for the changes to be seen.

How do I upgrade via patch files?

Upgrading from the patch files is an easy way to upgrade the code base. Note however that it is preferable to upgrade from the tar files or from CVS/rsync, as the patch files will only update the code and text files and not the binary files such as images, compiled translations, and so on.

How to upgrade via the provided patch files is operating system dependent. The following directions will work for most unix based systems. Consult your operating system software documentation for additional information or for information on using patch sets for other operating systems.

Please be aware that if any binary files were added or changed between patched versions that they will NOT be automatically updated. You will need to manually add or genenerate these binary files to your application directories. These are for example images, sounds or translations.

First, make sure you meet all the pre-requesites for the new version. See the appropriate section of this FAQ for more information.

Next, download the patch file into the directory where the software resides. For Horde use your Horde directory, for IMP use your IMP directory, and so on. The following examples will use IMP as an example, and assume you have already downloaded the patch file to the imp directory.

It is advisable, for various reasons, to stop your Horde web services before you do an upgrade, and restart them afterwards. While not always required, doing so may help provide a more successful upgrade.


cd imp

gunzip patch-imp-4.0.4-4.1.gz

patch -p1 < patch-imp-4.0.4-4.1

You can rebuild the compiled translations if you have all necessary packages installed:


cd po

/path/to/horde/po/translation.php make --module imp --no-compendium

See po/README for details.

As the upgrade process does not change your configuration files, but rather only operates on the *.php.dist files in the configuration directories. So you will need to manually compare your configuration files to their respective *.dist version, and merge in any changes or additions needed.

Be sure to check for a file called docs/UPGRADING or docs/UPDATE for additional information such as updates to database layouts or other changes which may be needed. This file will not always exist (if no additional steps are needed when upgrading) so don't panic if it isn't there!

If you shut down your web services, then restart them at this point. Even if you did not shut down your services before the upgrade, in some cases you may need to restart your web server at this point anyway.