<chapter id="installation"><title>Compilation and Installation</title>
-
+
<sect1 id="installation-introduction"><title>Introduction</title>
<para>
The latest version of the software will generally be found at:
<para>
We have tried our best to keep the software portable, and on many
platforms, you should be able to compile everything with little or
- no changes.
+ no changes.
</para>
<para>
The software is regularly tested on
<ulink url="&url.debian;">Debian GNU/Linux</ulink>,
- <ulink url="&url.redhat;">Redhat Linux</ulink>,
+ <ulink url="&url.centos;">CentOS</ulink>,
<ulink url="&url.ubuntu;">Ubuntu Linux</ulink>,
<ulink url="&url.freebsd;">FreeBSD (i386)</ulink>,
<ulink url="&url.macosx;">MAC OSX</ulink>,
- <ulink url="&url.solaris;">SunOS 5.8 (sparc)</ulink>,
- <ulink url="&url.windows2000;">Windows 2000</ulink>,
- <ulink url="&url.windows2003server;">Windows 2003 server</ulink>.
+ <ulink url="&url.solaris;">Solaris</ulink>,
+ Windows 7, Windows XP.
</para>
-
+
<para>
Some versions have be known to work on HP/UX,
DEC Unix, <ulink url="&url.netbsd;">NetBSD</ulink>,
<literal>#ifdefs</literal> for individual platforms, and we'd
like to keep it that way as far as it makes sense.
</para>
-
+
<para>
We maintain a mailing-list for the purpose of announcing new releases and
- bug-fixes, as well as general discussion. Subscribe by
+ bug-fixes, as well as general discussion. Subscribe by
filling-in the form
<ulink url="&url.yaz.mailinglist;">here</ulink>.
- General questions and problems can be directed at
+ General questions and problems can be directed at
<ulink url="&url.yaz.mail;"/>, or the address given at the top of
this document.
</para>
-
+
</sect1>
<sect1 id="installation.unix"><title>UNIX</title>
<para>
- We provide
- <ulink url="&url.debian;">Debian GNU/Linux</ulink>
- and
- <ulink url="&url.redhat;">Redhat</ulink> packages for &yaz;.
- Only i386 binary packages are available. You should be able to
- create packages for other CPUs by building them from the source
- package.
+ We provide
+ <ulink url="&url.debian;">Debian GNU/Linux</ulink> (i386 and amd64),
+ <ulink url="&url.ubuntu;">Ubuntu</ulink> (i386 and amd64)
+ and
+ <ulink url="&url.centos;">CentOS</ulink> (amd64 only) packages for &yaz;.
+ You should be able to create packages for other CPUs by building
+ them from the source package.
+ </para>
+
+ <para>
+ YAZ is also part of several packages repositories. Some of them are
</para>
-
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ Solaris CSW: <ulink url="http://www.opencsw.org/packages/yaz/"/>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Solaris: <ulink url="http://unixpackages.com"/>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ FreeBSD: <ulink url="http://www.freshports.org/net/yaz"/>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Debian: <ulink url="http://packages.debian.org/search?keywords=yaz"/>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Ubuntu: <ulink url="https://launchpad.net/ubuntu/+source/yaz"/>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ NetBSD:
+ <ulink url="http://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/net/yaz/README.html"/>
+ </para>
+ </listitem>
+ </itemizedlist>
+
<sect2 id="installation.source.unix">
<title>Compiling from source on Unix</title>
-
+
<para>
Note that if your system doesn't have a native ANSI C compiler, you may
have to acquire one separately. We recommend
If you wish to use character set conversion facilities in &yaz; or if you
are compiling &yaz; for use with Zebra it is a good idea to ensure that
the iconv library is installed. Some Unixes today already have it
- - if not, we suggest
+ - if not, we suggest
<ulink url="&url.libiconv;">GNU libiconv</ulink>.
</para>
<para>
- YAZ 3.0.16 and later includes a wrapper for the
- <ulink url="%url.icu;">ICU</ulink>
+ YAZ 3.0.16 and later includes a wrapper for the
+ <ulink url="&url.icu;">ICU</ulink>
(International Components for Unicode).
In order to use this, the developer version of the ICU library
- must be available.
+ must be available. ICU support is recommended for applications
+ such as Pazpar2 and Zebra.
</para>
<para>
The <ulink url="&url.libxslt;">libxslt</ulink>,
<ulink url="&url.libxml2;">libxml2</ulink> librararies are required
- if &yaz; is to support SRU.
+ if &yaz; is to support SRU/Solr.
These libraries are very portable and should compile out-of-the
box on virtually all Unix platforms. It is available in binary
forms for Linux and others.
<ulink url="&url.libtool;">Libtool</ulink>
are used to generate Makefiles and configure &yaz; for the system.
You do <emphasis>not</emphasis> these tools unless you're using the
- CVS version of &yaz;.
+ Git version of &yaz;.
</para>
<para>
The CQL parser for &yaz; is built using
GNU <ulink url="&url.bison;">Bison</ulink>.
- This tool is only needed if you're using the CVS version of &yaz;.
+ This tool is only needed if you're using the Git version of &yaz;.
</para>
-
+
<para>
&yaz; includes a tiny ASN.1 compiler. This compiler is
written in <ulink url="&url.tcl;">Tcl</ulink>.
- But as for Bison you do not need it unless you're using CVS
+ But as for Bison you do not need it unless you're using Git
version of &yaz; or you're using the compiler to built own codecs
- for private ASN.1.
+ for private ASN.1.
</para>
-
+
<para>
Generally it should be sufficient to run configure without options,
like this:
</para>
-
+
<screen>
./configure
</screen>
-
+
<para>
The configure script attempts to use use the C compiler specified by
the <literal>CC</literal> environment variable. If not set, GNU C will be
Bourne-compatible shell you may pass something like this to use a
particular C compiler with optimization enabled:
</para>
-
+
<screen>
CC=/opt/ccs/bin/cc CFLAGS=-O ./configure
</screen>
-
+
<para>
To customize &yaz;, the configure script also accepts a set of options.
The most important are:
-
+
<variablelist>
<varlistentry><term>
<literal>--prefix</literal>=<replaceable>prefix</replaceable></term>
<refentrytitle>hosts_access</refentrytitle>
<manvolnum>5</manvolnum>
</citerefentry>
- and
+ and
<citerefentry>
<refentrytitle>tcpd</refentrytitle>
<manvolnum>8</manvolnum>
equivalent to <literal>--enable-static</literal>.
</para></listitem>
</varlistentry>
-
+
<varlistentry><term>
<literal>--with-iconv</literal>[=<replaceable>prefix</replaceable>]
</term>
<listitem><para>Compile &yaz; with iconv library in directory
<replaceable>prefix</replaceable>. By default configure will
search for iconv on the system. Use this option if it
- doesn't find iconv. Alternatively,
+ doesn't find iconv. Alternatively,
<literal>--without-iconv</literal>, can be uset to force &yaz;
not to use iconv.
</para></listitem>
<varlistentry><term>
<literal>--with-xslt</literal>[=<replaceable>prefix</replaceable>]
</term>
- <listitem><para>Compile &yaz; with
+ <listitem><para>Compile &yaz; with
<ulink url="&url.libxslt;">libxslt</ulink> in directory
- <replaceable>prefix</replaceable>.
+ <replaceable>prefix</replaceable>.
Use this option if you want XSLT and XML support.
By default, configure will
search for libxslt on the system. Use this option if it
- libxslt is not found automatically. Alternatively,
+ libxslt is not found automatically. Alternatively,
<literal>--without-xslt</literal>, can be used to force &yaz;
not to use libxslt.
</para>
<varlistentry><term>
<literal>--with-xml2</literal>[=<replaceable>prefix</replaceable>]
</term>
- <listitem><para>Compile &yaz; with
+ <listitem><para>Compile &yaz; with
<ulink url="&url.libxml2;">libxml2</ulink> in directory
- <replaceable>prefix</replaceable>.
- Use this option if you want &yaz; to use XML and support SRU.
+ <replaceable>prefix</replaceable>.
+ Use this option if you want &yaz; to use XML and support SRU/Solr.
By default, configure will
search for libxml2 on the system. Use this option if it
- libxml2 is not found automatically. Alternatively,
+ libxml2 is not found automatically. Alternatively,
<literal>--without-xml2</literal>, can be used to force &yaz;
not to use libxml2.
</para>
</varlistentry>
<varlistentry><term>
- <literal>--with-openssl</literal>[=<replaceable>prefix</replaceable>]
+ <literal>--with-gnutls</literal>[=<replaceable>prefix</replaceable>]
</term>
- <listitem><para>&yaz; will be linked with the OpenSSL libraries and
- an SSL COMSTACK will be provided. Note that SSL support is still
- experimental.
+ <listitem><para>&yaz; will be linked with the GNU TLS libraries and
+ an SSL COMSTACK will be provided. By default configure enables
+ SSL support for YAZ if the GNU TLS development libraries are found
+ on the system.
</para></listitem>
</varlistentry>
<varlistentry><term>
<literal>--with-icu</literal>[=<replaceable>prefix</replaceable>]
</term>
- <listitem><para>&yaz; will be linked the
+ <listitem><para>&yaz; will be linked the
<ulink url="&url.icu;">ICU</ulink> library in the prefix if given.
If prefix is not given, the libraries exposed by the script
<application>icu-config</application> will be used if found.
</para></listitem>
</varlistentry>
+ <varlistentry><term>
+ <literal>--with-libgcrypt</literal>[=<replaceable>prefix</replaceable>]
+ </term>
+ <listitem><para>&yaz; will be linked with
+ <ulink url="&url.libgcrypt;">Libgcrypt</ulink> in the prefix if given.
+ If prefix is not given, the libraries exposed by the script
+ <application>libgcrypt-config</application> will be used if found.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term>
+ <literal>--with-memcached</literal>
+ </term>
+ <listitem><para>&yaz; will be linked with
+ <ulink url="&url.libmemcached;">libMemcached</ulink> to allow
+ for result-set caching for ZOOM.
+ The prefix can not be given. Note that YAZ will only search
+ for libMemcached if Libgcrypt is also enabled.
+ </para></listitem>
+ </varlistentry>
+
</variablelist>
-
+
</para>
<para>
When configured, build the software by typing:
make
</screen>
</para>
-
+
<para>
The following files are generated by the make process:
<variablelist>
<listitem><para>
Main &yaz; library. This is no ordinary library. It's
a Libtool archive.
- By default, &yaz; creates a static library in
+ By default, &yaz; creates a static library in
<filename>lib/.libs/libyaz.a</filename>.
</para></listitem>
</varlistentry>
-
+
<varlistentry><term><filename>src/libyaz_server.la</filename></term>
<listitem><para>
Generic Frontend server. This is an add-on for libyaz.la.
- Code in this library uses POSIX threads functions - if they
- available on the platform.
+ Code in this library uses POSIX threads functions - if POSIX
+ threads are available on the platform.
+ </para></listitem>
+ </varlistentry>
+
+ <varlistentry><term><filename>src/libyaz_icu.la</filename></term>
+ <listitem><para>
+ Functions that wrap the ICU library.
</para></listitem>
</varlistentry>
-
+
<varlistentry><term><filename>ztest/yaz-ztest</filename></term>
- <listitem><para>Test Z39.50 server.
+ <listitem><para>Test Z39.50 server.
</para></listitem>
</varlistentry>
-
+
<varlistentry><term><filename>client/yaz-client</filename></term>
<listitem><para>Z39.50 client for testing the protocol.
See chapter <link linkend="yaz-client">
&yaz;.
</para></listitem>
</varlistentry>
-
+
<varlistentry><term><filename>util/yaz-asncomp</filename></term>
<listitem><para>The ASN.1 compiler for &yaz;. Requires the
Tcl Shell, <application>tclsh</application>, in
<literal>PATH</literal> to operate.
</para></listitem>
</varlistentry>
-
+
<varlistentry><term><filename>util/yaz-iconv</filename></term>
<listitem><para>This program converts data in one character set to
another. This command exercises the YAZ character set
conversion API.
</para></listitem>
</varlistentry>
-
+
<varlistentry><term><filename>util/yaz-marcdump</filename></term>
<listitem><para>This program parses ISO2709 encoded MARC records
and prints them in line-format or XML.
</para></listitem>
</varlistentry>
-
+
<varlistentry><term><filename>util/yaz-icu</filename></term>
<listitem><para>This program exposes the ICU wrapper library if that
is enabled for YAZ. Only if ICU is available this program is
useful.
</para></listitem>
</varlistentry>
-
+
+ <varlistentry><term><filename>util/yaz-url</filename></term>
+ <listitem><para>This program is a simple HTTP page fetcher ala
+ wget or curl.
+ </para></listitem>
+ </varlistentry>
+
<varlistentry><term><filename>zoom/zoomsh</filename></term>
<listitem><para>
- A simple shell implemented on top of the
+ A simple shell implemented on top of the
<link linkend="zoom">ZOOM</link> functions.
The shell is a command line application that allows you to enter
simple commands to perform ZOOM operations.
</para></listitem>
</varlistentry>
-
- <varlistentry><term><filename>zoom/zoomtst1</filename>,
+
+ <varlistentry><term><filename>zoom/zoomtst1</filename>,
<filename>zoom/zoomtst2</filename>, ..</term>
<listitem><para>
Several small applications that demonstrates the ZOOM API.
</para></listitem>
</varlistentry>
</variablelist>
-
+
</para>
-
+
<para>
- If you wish to install &yaz; in system directories
+ If you wish to install &yaz; in system directories
<filename>/usr/local/bin</filename>,
<filename>/usr/local/lib</filename> .. etc, you can type:
</para>
-
+
<screen>
make install
</screen>
-
+
<para>
You probably need to have root access in order to perform this.
You must specify the <literal>--prefix</literal> option for configure if
- you wish to install &yaz; in other directories than the default
+ you wish to install &yaz; in other directories than the default
<filename>/usr/local/</filename>.
</para>
-
+
<para>
If you wish to perform an un-installation of &yaz;, use:
</para>
-
+
<screen>
make uninstall
</screen>
-
+
<para>
This will only work if you haven't reconfigured &yaz; (and therefore
changed installation prefix). Note that uninstall will not
<screen>
#include <proto.h>
</screen>
- </para>
+ </para>
<para>
For Libtool users, the <filename>yaz-config</filename> script provides
a different variant of option <literal>--libs</literal>, called
</sect2>
</sect1>
<sect1 id="installation.win32"><title>WIN32</title>
-
+
<para>The easiest way to install YAZ on Windows is by downloading
- an installer from
+ an installer from
<ulink url="&url.yaz.download.win32;">here</ulink>.
The installer comes with source too - in case you wish to
- compile YAZ with different Compiler options etc.
+ compile YAZ with different compiler options, etc.
</para>
-
+
<sect2 id="installation.win32.source">
<title>Compiling from Source on WIN32</title>
<para>
&yaz; is shipped with "makefiles" for the NMAKE tool that comes
with <ulink url="&url.vstudio;">
- Microsoft Visual Studio</ulink>.
- Version 6 and .NET has been tested. We expect that &yaz; compiles
- with version 5 as well.
+ Microsoft Visual Studio</ulink>. It has been tested with
+ Microsoft Visual Studio 2003/2005/2008.
</para>
<para>
Start a command prompt and switch the sub directory
<filename>WIN</filename> where the file <filename>makefile</filename>
is located. Customize the installation by editing the
<filename>makefile</filename> file (for example by using notepad).
-
+
The following summarizes the most important settings in that file:
-
+
<variablelist>
<varlistentry><term><literal>DEBUG</literal></term>
<listitem><para>
<term><literal>HAVE_TCL</literal>, <literal>TCL</literal></term>
<listitem><para>
If <literal>HAVE_TCL</literal> is set to 1, nmake will
- use the ASN.1 compiler (Tcl based). You must set
- <literal>TCL</literal> to the full path of the Tcl
- interpreter.
+ use the ASN.1 compiler (<ulink url="&url.tcl;">Tcl</ulink> based).
+ You must set <literal>TCL</literal> to the full path of the Tcl
+ interpreter. A Windows version of Tcl is part of
+ <ulink url="&url.gitwindows;">Git for Windows</ulink>.
</para>
<para>
If you do not have Tcl installed, set
<term><literal>HAVE_BISON</literal>,
<literal>BISON</literal></term>
<listitem><para>
- If GNU Bison is present, you might set <literal>HAVE_ICONV</literal>
+ If GNU Bison is present, you might set <literal>HAVE_BISON</literal>
to 1 and specify the Bison executable in <literal>BISON</literal>.
- Bison is only required if you use the CVS version of
+ Bison is only required if you use the Git version of
YAZ or if you modify the grammar for CQL
(<filename>cql.y</filename>).
</para>
<para>
- A Windows version of GNU Bison is part of
- <ulink url="&url.unxutils;">unxutils</ulink>.
+ A Windows version of GNU Bison is part of
+ <ulink url="&url.gitwindows;">Git for Windows</ulink>.
</para></listitem>
</varlistentry>
<literal>ICONV_DIR</literal></term>
<listitem><para>
If <literal>HAVE_ICONV</literal> is set to 1, YAZ is compiled
- with iconv support. In this configuration, set
+ with iconv support. In this configuration, set
<literal>ICONV_DIR</literal> to the iconv source directory.
</para></listitem>
</varlistentry>
-
+
<varlistentry>
<term><literal>HAVE_LIBXML2</literal>,
<literal>LIBXML2_DIR</literal></term>
<listitem>
<para>
If <literal>HAVE_LIBXML2</literal> is set to 1, YAZ is compiled
- with SRU support. In this configuration, set
- <literal>LIBXML2_DIR</literal> to the
+ with SRU support. In this configuration, set
+ <literal>LIBXML2_DIR</literal> to the
<ulink url="&url.libxml2;">libxml2</ulink> source directory
and
<literal>ZLIB_DIR</literal> to the zlib directory.
<listitem>
<para>
If <literal>HAVE_LIBXSLT</literal> is set to 1, YAZ is compiled
- with XSLT support. In this configuration, set
- <literal>LIBXSLT_DIR</literal> to the
+ with XSLT support. In this configuration, set
+ <literal>LIBXSLT_DIR</literal> to the
<ulink url="&url.libxslt;">libxslt</ulink> source directory.
</para>
<para>
If <literal>HAVE_ICU</literal> is set to 1, YAZ is compiled
with <ulink url="&url.icu;">ICU</ulink> support.
- In this configuration, set
- <literal>ICU_DIR</literal> to the
+ In this configuration, set
+ <literal>ICU_DIR</literal> to the
<ulink url="&url.icu;">ICU</ulink> source directory.
</para>
</listitem>
</para>
<para>
The following files are generated upon successful compilation:
-
+
<variablelist>
- <varlistentry><term><filename>bin/yaz3.dll</filename> /
- <filename>bin/yaz3d.dll</filename></term>
+ <varlistentry><term><filename>bin/yaz&soversion;.dll</filename> /
+ <filename>bin/yaz&soversion;d.dll</filename></term>
<listitem><para>
&yaz; Release/Debug DLL.
</para></listitem></varlistentry>
-
- <varlistentry><term><filename>lib/yaz3.lib</filename> /
- <filename>lib/yaz3d.lib</filename></term>
+
+ <varlistentry><term><filename>lib/yaz&soversion;.lib</filename> /
+ <filename>lib/yaz&soversion;d.lib</filename></term>
+ <listitem><para>
+ Import library for <filename>yaz&soversion;.dll</filename> /
+ <filename>yaz&soversion;d.dll</filename>.
+ </para></listitem></varlistentry>
+
+ <varlistentry><term><filename>bin/yaz_cond&soversion;.dll</filename> /
+ <filename>bin/yaz_cond&soversion;d.dll</filename></term>
+ <listitem><para>
+ Release/Debug DLL for condition variable utilities (condvar.c).
+ </para></listitem></varlistentry>
+
+ <varlistentry><term><filename>lib/yaz_cond&soversion;.lib</filename> /
+ <filename>lib/yaz_cond&soversion;d.lib</filename></term>
<listitem><para>
- Import library for <filename>yaz3.dll</filename> /
- <filename>yaz3d.dll</filename>.
+ Import library for <filename>yaz_cond&soversion;.dll</filename> /
+ <filename>yaz_cond&soversion;d.dll</filename>.
</para></listitem></varlistentry>
-
- <varlistentry><term><filename>bin/yaz_icu3.dll</filename> /
- <filename>bin/yaz_icu3d.dll</filename></term>
+
+ <varlistentry><term><filename>bin/yaz_icu&soversion;.dll</filename> /
+ <filename>bin/yaz_icu&soversion;d.dll</filename></term>
<listitem><para>
Release/Debug DLL for the ICU wrapper utility.
Only build if HAVE_ICU is 1.
</para></listitem></varlistentry>
-
- <varlistentry><term><filename>lib/yaz_icu3.lib</filename> /
- <filename>lib/yaz_icu3d.lib</filename></term>
+
+ <varlistentry><term><filename>lib/yaz_icu&soversion;.lib</filename> /
+ <filename>lib/yaz_icu&soversion;d.lib</filename></term>
<listitem><para>
- Import library for <filename>yaz_icu3.dll</filename> /
- <filename>yaz_icu3d.dll</filename>.
+ Import library for <filename>yaz_icu&soversion;.dll</filename> /
+ <filename>yaz_icu&soversion;d.dll</filename>.
</para></listitem></varlistentry>
-
+
<varlistentry><term><filename>bin/yaz-ztest.exe</filename></term>
<listitem><para>
Z39.50 multi-threaded test/example server. It's a WIN32
console application.
</para></listitem></varlistentry>
-
+
<varlistentry><term><filename>bin/yaz-client.exe</filename></term>
<listitem><para>
&yaz; Z39.50 client application. It's a WIN32 console application.
See chapter <link linkend="yaz-client">YAZ client</link> for more
information.
</para></listitem></varlistentry>
-
+
<varlistentry><term><filename>bin/yaz-icu.exe</filename></term>
<listitem><para>This program exposes the ICU wrapper library if that
is enabled for YAZ. Only if ICU is available this program is
The application is a command line shell that allows you to enter
simple commands to perform ZOOM operations.
</para></listitem></varlistentry>
-
- <varlistentry><term><filename>bin/zoomtst1.exe</filename>,
+
+ <varlistentry><term><filename>bin/zoomtst1.exe</filename>,
<filename>bin/zoomtst2.exe</filename>, ..</term>
<listitem><para>
Several small applications that demonstrates the ZOOM API.
</para></listitem></varlistentry>
-
+
</variablelist>
-
+
</para>
</sect2>
<varlistentry><term>include path</term><listitem><para>
Set it to the <filename>include</filename> directory of &yaz;.
</para></listitem></varlistentry>
- <varlistentry><term>import library <filename>yaz3.lib</filename>
+ <varlistentry><term>import library <filename>yaz&soversion;.lib</filename>
</term><listitem><para>
- You must link with this library. It's located in the
+ You must link with this library. It's located in the
sub directory <filename>lib</filename> of &yaz;.
If you want to link with the debug version of &yaz;, you must
- link against <filename>yaz3d.lib</filename> instead.
+ link against <filename>yaz&soversion;d.lib</filename> instead.
</para></listitem></varlistentry>
- <varlistentry><term>dynamic link library <filename>yaz3.dll</filename>
+ <varlistentry><term>dynamic link library
+ <filename>yaz&soversion;.dll</filename>
</term><listitem><para>
This DLL must be in your execution path when you invoke
your application. Specifically, you should distribute this
</sect2>
</sect1>
</chapter>
-
+
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-namecase-general:t
End:
-->
-
+