5.3. Building from source

5.3.1. Prerequisites

If you can install any or all of the following through the package manager for your system, all the better. Especially Qt is a very big piece of software, but you will most probably be able to find a binary package.

You may have to compile Xapian but this is easy.

The shopping list:

  • C++ compiler. Up to Recoll version 1.13.04, its absence can manifest itself by strange messages about a missing iconv_open.

  • Development files for Xapian core.

    Important

    If you are building Xapian for an older CPU (before Pentium 4 or Athlon 64), you need to add the --disable-sse flag to the configure command. Else all Xapian application will crash with an illegal instruction error.

  • Development files for Qt 4 . Recoll has not been tested with Qt 5 yet. Recoll 1.15.9 was the last version to support Qt 3. If you do not want to install or build the Qt Webkit module, Recoll has a configuration option to disable its use (see further).

  • Development files for X11 and zlib.

  • You may also need libiconv. On Linux systems, the iconv interface is part of libc and you should not need to do anything special.

Check the Recoll download page for up to date version information.

5.3.2. Building

Recoll has been built on Linux, FreeBSD, Mac OS X, and Solaris, most versions after 2005 should be ok, maybe some older ones too (Solaris 8 is ok). If you build on another system, and need to modify things, I would very much welcome patches.

Configure options: 

  • --without-aspell will disable the code for phonetic matching of search terms.

  • --with-fam or --with-inotify will enable the code for real time indexing. Inotify support is enabled by default on recent Linux systems.

  • --with-qzeitgeist will enable sending Zeitgeist events about the visited search results, and needs the qzeitgeist package.

  • --disable-webkit is available from version 1.17 to implement the result list with a Qt QTextBrowser instead of a WebKit widget if you do not or can't depend on the latter.

  • --disable-idxthreads is available from version 1.19 to suppress multithreading inside the indexing process. You can also use the run-time configuration to restrict recollindex to using a single thread, but the compile-time option may disable a few more unused locks. This only applies to the use of multithreading for the core index processing (data input). The Recoll monitor mode always uses at least two threads of execution.

  • --disable-python-module will avoid building the Python module.

  • --disable-xattr will prevent fetching data from file extended attributes. Beyond a few standard attributes, fetching extended attributes data can only be useful is some application stores data in there, and also needs some simple configuration (see comments in the fields configuration file).

  • --enable-camelcase will enable splitting camelCase words. This is not enabled by default as it has the unfortunate side-effect of making some phrase searches quite confusing: ie, "MySQL manual" would be matched by "MySQL manual" and "my sql manual" but not "mysql manual" (only inside phrase searches).

  • --with-file-command Specify the version of the 'file' command to use (ie: --with-file-command=/usr/local/bin/file). Can be useful to enable the gnu version on systems where the native one is bad.

  • --disable-qtgui Disable the Qt interface. Will allow building the indexer and the command line search program in absence of a Qt environment.

  • --disable-x11mon Disable X11 connection monitoring inside recollindex. Together with --disable-qtgui, this allows building recoll without Qt and X11.

  • --disable-pic will compile Recoll with position-dependant code. This is incompatible with building the KIO or the Python or PHP extensions, but might yield very marginally faster code.

  • Of course the usual autoconf configure options, like --prefix apply.

Normal procedure:

        cd recoll-xxx
        ./configure
        make
        (practices usual hardship-repelling invocations)
      

There is little auto-configuration. The configure script will mainly link one of the system-specific files in the mk directory to mk/sysconf. If your system is not known yet, it will tell you as much, and you may want to manually copy and modify one of the existing files (the new file name should be the output of uname -s).

5.3.2.1. Building on Solaris

We did not test building the GUI on Solaris for recent versions. You will need at least Qt 4.4. There are some hints on an old web site page, they may still be valid.

Someone did test the 1.19 indexer and Python module build, they do work, with a few minor glitches. Be sure to use GNU make and install.

5.3.3. Installation

Either type make install or execute recollinstall prefix, in the root of the source tree. This will copy the commands to prefix/bin and the sample configuration files, scripts and other shared data to prefix/share/recoll.

If the installation prefix given to recollinstall is different from either the system default or the value which was specified when executing configure (as in configure --prefix /some/path), you will have to set the RECOLL_DATADIR environment variable to indicate where the shared data is to be found (ie for (ba)sh: export RECOLL_DATADIR=/some/path/share/recoll).

You can then proceed to configuration.