2 <!-- ============= Installation ============================== -->
4 <chapter id="sec_install">
5 <title>Installation</title>
7 <sect1 id="inst_from_src">
8 <title>Installing from sources</title>
10 <para>Currently, the only intended way to install &appname; is starting
11 from its source code. </para>
13 <sect2 id="get_source_code">
14 <title>Getting the source code</title>
16 <para>You can get the &appname; source code in two ways:
19 <listitem> <para> go to the <ulink type="http"
20 url="http://matita.cs.unibo.it/download.shtml">download
21 page</ulink> and get the <ulink type="http"
22 url="http://matita.cs.unibo.it/sources/matita-latest.tar.gz"
23 >latest released source tarball</ulink>;</para> </listitem>
25 <listitem> <para> get the development sources from <ulink type="http"
26 url="http://helm.cs.unibo.it/websvn/listing.php?repname=helm&path=%2F&sc=0">our
27 SVN repository</ulink>. You will need the
28 <application>components/</application> and
29 <application>matita/</application> directories from the
30 <filename>trunk/helm/software/</filename> directory, plus the
31 <filename>configure</filename> and <filename>Makefile*</filename>
32 stuff from the same directory. </para>
34 <para>In this case you will need to run
35 <command>autoconf</command> before proceding with the building
36 instructions below.</para> </listitem>
43 <sect2 id="build_requirements">
44 <title>Requirements</title>
46 <para>In order to build &appname; from sources you will need some
47 tools and libraries. They are listed below.
50 <title>Note for Debian users</title>
52 <para>If you are running a <ulink type="http"
53 url="http://www.debian.org">Debian GNU/Linux</ulink> distribution
54 you can have APT install all the required tools and libraries by
55 adding the following repository to your
56 <filename>/etc/apt/sources.list</filename>: <programlisting>
57 deb <ulink type="http"
58 url="http://people.debian.org/~zack">http://people.debian.org/~zack</ulink> unstable helm
59 </programlisting> and installing the
60 <application>helm-matita-deps</application> package.</para>
65 <title>Required tools and libraries</title>
69 <application> <ulink type="http"
70 url="http://caml.inria.fr">OCaml</ulink> </application>
73 <para> the Objective Caml compiler, version 3.09 or above </para>
79 <application> <ulink type="http"
80 url="http://www.ocaml-programming.de/packages/">Findlib</ulink>
84 <para> OCaml package manager, version 1.1.1 or above</para>
90 <application> <ulink type="http"
91 url="http://www.xs4all.nl/~mmzeeman/ocaml/">OCaml
92 Expat</ulink> </application>
95 <para>OCaml bindings for the <application><ulink type="http"
96 url="http://expat.sourceforge.net/">expat</ulink>
97 library</application> </para>
103 <application> <ulink type="http"
104 url="http://gmetadom.sourceforge.net/">GMetaDOM</ulink>
108 <para>OCaml bindings for the <application><ulink type="http"
109 url="http://gdome2.cs.unibo.it/">Gdome 2</ulink>
110 library</application></para>
116 <application> <ulink type="http"
117 url="http://www.bononia.it/~zack/ocaml-http.en.html">OCaml
118 HTTP</ulink> </application>
121 <para> OCaml library to write HTTP daemons (and clients) </para>
127 <application> <ulink type="http"
128 url="http://wwwfun.kurims.kyoto-u.ac.jp/soft/lsl/lablgtk.html">LablGTK</ulink>
132 <para> OCaml bindings for the <application> <ulink type="http"
133 url="http://www.gtk.org"> GTK+</ulink> library
134 </application>, version 2.6.0 or above </para>
140 <application> <ulink type="http"
141 url="http://helm.cs.unibo.it/mml-widget/">GtkMathView</ulink>
145 <application> <ulink type="http"
146 url="http://helm.cs.unibo.it/mml-widget/">LablGtkMathView</ulink>
150 <para> GTK+ widget to render <ulink type="http"
151 url="http://www.w3.org/Math/">MathML</ulink> documents and its
152 OCaml bindings </para>
158 <application> <ulink type="http"
159 url="http://gtksourceview.sourceforge.net/">GtkSourceView</ulink>
163 <application> <ulink type="http"
164 url="http://helm.cs.unibo.it/software/lablgtksourceview/">LablGtkSourceView</ulink>
168 <para> extension for the GTK+ text widget (adding the typical
169 features of source code editors) and its OCaml bindings </para>
174 <term> &MYSQL; </term>
176 <application> <ulink type="http"
177 url="http://raevnos.pennmush.org/code/ocaml-mysql/">OCaml
178 MySQL</ulink> </application>
181 <para> SQL database and OCaml bindings for its client-side library
183 <para> The SQL database itself is not strictly needed to run
184 &appname;, but we stronly encourage its use since a lot of
185 features are disabled without it. Still, the OCaml bindings of
186 the library are needed at compile time.</para>
192 <application> <ulink type="http"
193 url="http://ocamlnet.sourceforge.net/">Ocamlnet</ulink>
197 <para> collection of OCaml libraries to deal with
198 application-level Internet protocols and conventions </para>
204 <application> <ulink type="http"
205 url="http://www.cduce.org/download.html">ulex</ulink>
209 <para> Unicode lexer generator for OCaml </para>
215 <application> <ulink type="http"
216 url="http://cristal.inria.fr/~xleroy/software.html">CamlZip</ulink>
220 <para> OCaml library to access <filename>.gz</filename> files
225 </variablelist> </para>
229 <sect2 id="database_setup">
230 <title>Database setup</title>
232 <para> To fully exploit &appname; indexing and search capabilities you
233 will need a working &MYSQL; database. Detalied instructions on how to do
234 it can be found in the <ulink type="http"
235 url="http://dev.mysql.com/doc/">MySQL documentation</ulink>. Here you
236 can find a quick howto. </para>
238 <para> In order to create a database you need administrator permissions on
239 your MySQL installation, usually the root account has them. Once you
240 have the permissions, a new database can be created executing
241 <userinput>mysqladmin create matita</userinput>
242 (<emphasis>matita</emphasis> is the default database name, you can
243 change it using the <parameter>db.user</parameter> key of the
244 configuration file). </para>
246 <para> Then you need to grant the necessary access permissions to the
247 database user of &appname;, typing <userinput>echo "grant all privileges
248 on matita.* to helm;" | mysql matita</userinput> should do the trick
249 (<emphasis>helm</emphasis> is the default user name used by &appname; to
250 access the database, you can change it using the
251 <parameter>db.user</parameter> key of the configuration file).
255 <para> This way you create a database named <emphasis>matita</emphasis>
256 on which anyone claiming to be the <emphasis>helm</emphasis> user can
257 do everything (like adding dummy data or destroying the contained
258 one). It is strongly suggested to apply more fine grained permissions,
259 how to do it is out of the scope of this manual.</para>
264 <sect2 id="build_instructions">
265 <title>Compiling and installing</title>
267 <para> Once you get the source code the installations steps should be
268 quite familiar.</para>
270 <para> First of all you need to configure the build process executing
271 <userinput>./configure</userinput>. This will check that all needed
272 tools and library are installed and prepare the sources for compilation
273 and installation. </para>
275 <para> Quite a few (optional) arguments may be passed to the
276 <application>configure</application> command line to change build time
277 parameters. They are listed below, together with their
278 default values: </para>
281 <title> <application>configure</application> command line
286 <userinput>--with-runtime-dir=<replaceable>dir</replaceable></userinput>
290 (<emphasis>Default:</emphasis>
291 <filename>/usr/local/matita</filename>) Runtime base directory
292 where all &appname; stuff (executables, configuration files,
293 standard library, ...) will be installed
300 <userinput>--with-dbhost=<replaceable>host</replaceable></userinput>
304 (<emphasis>Default:</emphasis> localhost) Default SQL server
305 hostname. Will be used while building the standard library
306 during the installation and to create the default &appname;
307 configuration. May be changed later in configuration file.
314 <userinput>--enable-debug</userinput>
318 (<emphasis>Default:</emphasis> disabled) Enable debugging code.
319 Not for the casual user.
325 <para> Then you will manage the build and install process using
326 <application><ulink type="http"
327 url="http://www.gnu.org/software/make/">make</ulink></application>
328 as usual. Below are reported the targets you have to invoke in sequence
329 to build and install:
333 <title><application>make</application> targets</title>
336 <term><userinput>world</userinput></term>
338 <para>builds components needed by &appname; and &appname; itself
339 (in bytecode or native code depending
340 on the availability of the OCaml native code compiler) </para>
345 <term><userinput>install</userinput></term>
347 <para>installs &appname; related tools, standard library and the
348 needed runtime stuff in the proper places on the filesystem.
350 <para>As a part of the installation process the &appname;
351 standard library will be compiled, thus testing that the just
352 built <application>matitac</application> compiler works
354 <para>For this step you will need a working SQL database (for
355 indexing the standard library while you are compiling it). See
356 <ulink type="http" url="#database_setup">Database setup</ulink>
357 for instructions on how to set it up.
368 <sect1 id="matita.conf.xml">
369 <title>Configuring Matita</title>
371 The file <emphasis>matita.conf.xml</emphasis>...