1 <chapter id="installation">
2 <!-- $Id: installation.xml,v 1.7 2004-04-23 16:25:17 adam Exp $ -->
3 <title>Installation</title>
5 You need a C++ compiler to compile and use YAZ proxy.
6 The software was implemented using
7 <ulink url="http://gcc.gnu.org/">GCC</ulink> so we know that works
8 well with YAZ proxy. From time to time the software has been
9 compiled on Windows using Visual C++. Other compilers should
10 work too. Let us know of portability problems, etc. with
14 YAZ proxy is built on top of the
15 <ulink url="http://indexdata.dk/yaz/">YAZ</ulink> and
16 <ulink url="http://indexdata.dk/yazplusplus/">YAZ++</ulink>
18 You need to install these first.
19 For some platforms there are binary packages available for YAZ/YAZ++.
22 We also highly recommend that
23 <ulink url="http://xmlsoft.org/">libxml2</ulink> and
24 <ulink url="http://xmlsoft.org/XSLT/">libXSLT</ulink> are installed.
25 YAZ must be configured with libxml2 support.
27 <ulink url="http://www.loc.gov/z3950/agency/zing/srw/">SRW/SRU</ulink>
29 The YAZ Proxy uses libXSLT for record conversions via XSLT.
32 <title>Building on Unix</title>
33 <para>On UNIX, the software is compiled as follows:
42 You can supply options for the <literal>configure</literal> script.
43 The most useful ones are:
46 <term><literal>--prefix </literal>directory</term>
48 Specifies installation prefix. By default
49 <literal>/usr/local</literal> is used.
53 <term><literal>--with-yazpp </literal>directory</term>
55 Specifies the location of <filename>yaz++-config</filename>.
56 The <filename>yaz++-config</filename> program is generated in
57 the source directory of YAZ++ as well as the binaries
58 directory when YAZ++ is installed (via make install).
61 If you don't supply this option, <literal>configure</literal> will
62 look for <filename>yaz++-config</filename> in directories of the
63 <envar>PATH</envar> environment - which is nearly always
68 <term><literal>--with-xslt </literal>directory</term>
70 Specifies prefix for libXSLT (and libxml2).
71 configure must be able to locate <command>xslt-config</command>
72 in PREFIX/bin. If this option is omitted, configure looks
73 for <command>xslt-config</command> in the current PATH.
77 For the whole list of <literal>configure</literal> options, refer
79 <literal>./configure --help</literal>.
82 Configure uses GCC's C/C++ compiler if available. To specify another
83 compiler, set <literal>CXX</literal>. To use other compiler flags,
84 specify <literal>CXXFLAGS</literal>. For example, to use
85 <literal>CC</literal> with debugging do:
87 CXXFLAGS="-g" CXX=CC ./configure
91 This is what you have after successful compilation:
94 <term><literal>src/yazproxy</literal></term>
96 The YAZ Proxy program.
97 It gets installed in your binaries directory
98 (<parameter>prefix</parameter><literal>/bin</literal>).
103 <term><literal>src/libyazproxy.la</literal></term>
105 The YAZ proxy library. This library gets installed in
106 the libraries directory
107 (<parameter>prefix</parameter><literal>/lib</literal>).
112 <term><literal>include/yazproxy/*.h</literal></term>
114 C++ header files, which you'll need for YAZ proxy
115 development. All these are installed in the header files area
116 (<parameter>prefix</parameter><literal>/include/yazproxy</literal>).
121 <term><literal>etc</literal></term>
123 Various files such as
124 configuration files, XSLT files, CQL to RPN conversion files,
125 a sample start/stop control script
126 <filename>yazproxy.ctl.sh</filename> that can be used as
127 template for an <filename>/etc/init.d</filename> script.
128 These files are installed in the YAZ proxy's data area
129 (<parameter>prefix</parameter><literal>/share/yazproxy</literal>).
136 <section id="windows">
137 <title>Building on Windows</title>
139 YAZ++ is shipped with "makefiles" for the NMAKE tool that comes
140 with <ulink url="http://msdn.microsoft.com/vstudio/">
141 Microsoft Visual Studio</ulink>.
142 Version 6 and .NET has been tested. We expect that YAZ++ compiles
143 with version 5 as well.
147 The YAZ proxy has never been used in production on Windows. Although
148 it compiles and runs, doesn't mean it scale on that platform.
150 YAZ proxy currently doesn't run as a Service - only as a Console
155 Start a command prompt and switch the sub directory
156 <filename>WIN</filename> where the file <filename>makefile</filename>
157 is located. Customize the installation by editing the
158 <filename>makefile</filename> file (for example by using notepad).
160 The following summarizes the most important settings in that file:
163 <varlistentry><term><literal>DEBUG</literal></term>
165 If set to 1, the software is
166 compiled with debugging libraries (code generation is
167 multi-threaded debug DLL).
168 If set to 0, the software is compiled with release libraries
169 (code generation is multi-threaded DLL).
173 <varlistentry><term><literal>YAZ_DIR</literal></term>
175 This must be set to the home of the YAZ source directory.
179 <varlistentry><term><literal>YAZPP_DIR</literal></term>
181 This must be set to the home of the YAZ++ source directory.
186 <term><literal>HAVE_XSLT</literal>,
187 <literal>LIBXSLT_DIR</literal></term>
190 If <literal>HAVE_LIBXSLT</literal> is set to 1, the proxy is compiled
191 with XSLT and XML support. In this configuration, set
192 <literal>LIBXSLT_DIR</literal> to the
193 <ulink url="http://www.xmlsoft.org/">libXSLT</ulink> source
199 If you enable libXSLT you have to enable libxml2 and its
200 sub components zlib and iconv as well.
205 Windows versions of libXSLT, libxml2, zlib and iconv can be found
206 <ulink url="http://www.zlatkovic.com/libxml.en.html">
213 <term><literal>HAVE_ICONV</literal>,
214 <literal>ICONV_DIR</literal></term>
216 If <literal>HAVE_ICONV</literal> is set to 1, the proxy is
217 compiled with iconv support. In this configuration, set
218 <literal>ICONV_DIR</literal> to the iconv source directory.
223 <term><literal>HAVE_LIBXML2</literal>,
224 <literal>LIBXML2_DIR</literal></term>
227 If <literal>HAVE_LIBXML2</literal> is set to 1, the proxy is compiled
228 with XML support. In this configuration, set
229 <literal>LIBXML2_DIR</literal> to the
230 <ulink url="http://www.xmlsoft.org/">libxml2</ulink> source directory
232 <literal>ZLIB_DIR</literal> to the zlib directory.
237 YAZ++ is not using ZLIB. But libxml2 is.
246 When satisfied with the settings in the makefile, type
253 If the <filename>nmake</filename> command is not found on your system
254 you probably haven't defined the environment variables required to
255 use that tool. To fix that, find and run the batch file
256 <filename>vcvars32.bat</filename>. You need to run it from within
257 the command prompt or set the environment variables "globally";
258 otherwise it doesn't work.
262 If you wish to recompile YAZ++ - for example if you modify
263 settings in the <filename>makefile</filename> you can delete
264 object files, etc by running.
270 The following files are generated upon successful compilation:
273 <varlistentry><term><filename>bin/yazproxy.dll</filename></term>
276 </para></listitem></varlistentry>
278 <varlistentry><term><filename>lib/yazproxy.lib</filename></term>
280 Import library for <filename>yazproxy.dll</filename>.
281 </para></listitem></varlistentry>
283 <varlistentry><term><filename>bin/yazproxy.exe</filename></term>
285 YAZ proxy. It's a WIN32 console application.
286 </para></listitem></varlistentry>
294 <!-- Keep this comment at the end of the file
299 sgml-minimize-attributes:nil
300 sgml-always-quote-attributes:t
303 sgml-parent-document: "yazproxy.xml"
304 sgml-local-catalogs: nil
305 sgml-namecase-general:t