Rearrangement of the doc
[u/mrichter/AliRoot.git] / html / installation.html
CommitLineData
14c31136 1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
2 "http://www.w3.org/TR/REC-html40/loose.dtd">
3<HTML>
4<HEAD>
5<TITLE>Installation</TITLE>
6<link rev="made" href="mailto:Federico.Carminati@cern.ch">
7<STYLE>
8BODY {
9 background: #FFFFFF;
10 }
11
12COL, COLGROUP, TABLE, TBODY, TD, TR {
13 color: black;
14 text-decoration: none;
15 border-color: black;
16 border-style: none;
17 background: #FFFFFF;
18 }
19
20</STYLE>
21<link rel="stylesheet" href="http://www.w3.org/StyleSheets/Core/Swiss" type="text/css">
22</HEAD>
23
24<BODY background=#FFFFFF>
25<TABLE>
26<TR>
27<TD><img src="picts/MadHatter.gif" alt="ALICE Off-line Project Logo">
87ad6e14 28<TD><img src="picts/installation_name.gif" alt="Installation">
14c31136 29<TD><img src="picts/AliceLogo.gif" alt="ALICE Logo">
30</TR>
31</TABLE>
32
33<h2>Installation</h2>
34
35<ol>
36<p><li> Install <a href="http://root.cern.ch">ROOT</a> and define the
37necessary variables correctly.
38
39<p><li> Decide where the code will reside (from here on <i>directory</i>).
40
41<p><li>Define the following global variables in the login script
42
43<p><table align=centre borders=no>
44<tr><th align=left>variable</th><th align=left>value</th></tr>
45<tr><td width=30%>ALICE </td><td> <i>directory</i>
46<tr><td>ALICE_LEVEL </td><td> pro </td></tr>
47<tr><td>ALICE_ROOT </td><td> $ALICE/$ALICE_LEVEL </td></tr>
48<tr><td>ALICE_TARGET </td><td> `uname`
49(i.e. result of the Unix <b>uname</b> command)</td></tr>
50<tr><td colspan=2><i><center>on all systems but HP-UX</center></i></td></tr>
51<tr><td>LD_LIBRARY_PATH</td>
52<td>$ALICE_ROOT/lib/tgt_${ALICE_TARGET}\:$LD_LIBRARY_PATH</td></tr>
53<tr><td colspan=2><i><center>on HP-UX</center></i></td></tr>
54<tr><td>SHLIB_PATH</td>
55<td>$ALICE_ROOT/lib/tgt_${ALICE_TARGET}\:$SHLIB_PATH</td></tr>
56<tr><td>PATH</td>
57<td> $PATH\:$ALICE_ROOT/bin/tgt_${ALICE_TARGET} </td></tr>
58</table>
59
60<p>At this point you should logout, login again and check that the symbols
61are set correctly.
62
63<p><li> Retrieve the AliRoot code. There are two ways to do this:
64
65<ul>
66<p><li> <em>From a tar file</em>. This is the preferred way for those who
67do not have an internet connection to the <em>cvs</em> server from the
68machine where the code has to be installed. The <a
69href="ftp://pcepaip01.cern.ch/pub">files</a> containing the latest release
70should be brought on the target machine. Three files are offered:
71
72<p><table align=center borders=no>
73<tr><th align=left>File<th align=left>Content</tr>
74<tr><td align=center colspan=2><em>Either</em></tr>
75<tr><td>AliOffline<i>MM.mm-pp</i>.tar.gz
76<td>Code and the data files of ALICE Off-line</tr>
77<tr><td align=center colspan=2><em>Or</em></tr>
78<tr><td>AliLibs<i>MM.mm-pp</i>.tar.gz
79<td>Code and the data files of the auxiliary libraries</tr>
80<tr><td>AliRoot<i>MM.mm-pp</i>.tar.gz
81<td>All the code and the data files of the AliRoot system</tr>
82</table>
83
84<p> <i>MM.mm-pp</i> is the number of the latest <i>M</i>ajor and
85<i>m</i>inor version and the <i>p</i>atch number. Please refer to the
86README file found in this directory for further information on file
87content. The file(s) have to be unpacked into the $ALICE directory via the
88command:
89
90<p><pre>$ gtar xvfz Ali[...].tar.gz</pre>
91
92
93<p><li> <em>From cvs remote cvs server</em>. This method has the advantage
94that new patches can be incrementally retrieved and installed via internet.
95At the moment the problem is that the version of cvs currently installed at
96CERN (1.09) does not support well binary files. Therefore some data files
97will be missing with this download mechanism, and these will have to be
98fetched <em>by hand</em>. The setup of the access to the remote cvs server
99is described in the <a href="management.html">Code Management</a> section. The
100code is dowloaded via the command:
101
102<p><pre>
103$ cd $ALICE
104$ cvsa co -d pro AliRoot
105</pre>
106
107</ul>
108
109<p><li>install the CERN library part
110
111<p><pre>
112$ cd $ALICE_ROOT
113$ gmake cernlibs
114</pre>
115
116<p><li>Install the ALICE specific software
117
118<p><pre>
119$ cd $ALICE_ROOT
120$ gmake
121</pre>
122
123<p><li>Copy the file $ALICE_ROOT/.rootrc to your home directory
124
125<p><li>Change to your home directory and run the code
126
127<p>
128<pre>
129$ cd
130$ aliroot
131
132<output from aliroot>
133
134root [1] .x menu.C
135</pre>
136</ol>
137
87ad6e14 138<h2>Code development and user environment</h2>
139
140<p>If the ALICE environment is set up correctly, the
141<var>$ALICE_ROOT/lib/tgt_$ALICE_TARGET</var> directory is in the shared
142libraries load path, and the <var>$ALICE_ROOT/bin/tgt_$ALICE_TARGET</var>
143directory is in the PATH variable. This means that the command aliroot will
144in fact correspond to the file
145<var>$ALICE_ROOT/bin/tgt_$ALICE_TARGET/aliroot</var>.
146
147<p>This is convenient for the normal user, but as soon as the user wants to
148modify one or more directories, this arrangement becomes inefficient
149because if a local copy of one of the shared libraries is remade, the
150linker will always find the official unmodified one that sits in the above
151directory before the local one in the load library path. Moreover, and
152unless the full path is specified, the local version of the <b>aliroot</b>
153executable will be ignored and the official version executed.
154
155<p>Therefore in order to develop one or more packages locally
156(let's say the TPC) and make modifications, the following steps should be
157performed. We suppose here that the remote cvs server has been setup correctly
158as explained in the <a href="management.html">code management</a> section.
159
160<p><table>
161 <tr align=left>
162 <th width=30%>$ mkdir AliRoot
163 <td width=50%>create the working directory
164 <tr align=left>
165 <th>$ cd AliRoot
166 <td>set default to it
167 <tr align=left>
168 <th>$ mkdir pro
169 <td>create pro subdirectory
170 <tr align=left>
171 <th>$ cd pro
172 <td>set default to it
173 <tr align=left>
174 <th>$ ln -s $ALICE_ROOT/* ./
175 <td>link all files here
176 <tr align=left>
177 <th>$ rm lib
178 <td>remove link for library, we need a local file here to containing the new
179 TPC library
180 <tr align=left>
181 <th>$ rm bin
182 <td>remove link for bin directory, we need it to rebuild <b>aliroot</b> executable
183 <tr align=left>
184 <th>$ rm TPC
185 <td>remove link for TPC subdirectory, we need the real files here
186 <tr align=left>
187 <th>$ rm ALIROOT
188 <td>remove link to ALIROOT subdirectory, may be this is not really necessary
189 on all systems, but we do it just to be on the safe side
190 <tr align=left>
191 <th>$ cvsa co TPC
192 <td>get from the cvs server the TPC files to be modified
193 <tr align=left>
194 <th>$ cvsa co ALIROOT
195 <td>get from the server the ALIROOT files to recreate the executable
196 <tr align=left>
197 <th>$ mkdir -p lib/tgt_$ALICE_TARGET
198 <td>create library directory
199 <tr align=left>
200 <th>$ cd lib/tgt_$ALICE_TARGET
201 <td>set default to the lib directory
202 <tr align=left>
203 <th>$ ln -s $ALICE_ROOT/lib/* ./
204 <td>link all libraries here
205 <tr align=left>
206 <th>$ rm libTPC.sl
207 <td>remove link to TPC library, we need a real one
208 <tr align=left>
209 <th>$ changeRoot $HOME/AliRoot
210 <td>change the AliRoot root to $HOME/AliRoot
211 <tr align=left>
212 <th>$ rehash
213 <td>make sure that the new PATH is taken into account by the shell
214 <tr align=left>
215 <th>$ cd $ALICE_ROOT/TPC
216 <td>(1) set default to TPC directory
217 <tr align=left>
218 <th>$ make macroclean
219 <td>clean up all objects
220 <tr align=left>
221 <th>$ emacs AliTPCv1.cxx
222 <td>(2) edit all the files...
223 <tr align=left>
224 <th>$ make
225 <td>(3) recreate ../lib/libTPC.sl
226 <tr align=left>
227 <th>$ cd ../ALIROOT
228 <td>set default to ALIROOT directory
229 <tr align=left>
230 <th>$ make macroclean
231 <td>clean up object files
232 <tr align=left>
233 <th>$ make
234 <td>make new executable
235 <tr align=left>
236 <th>$ cd <em>directory</em>
237 <td>(4) set default elsewhere
238 <tr align=left>
239 <th>$ aliroot
240 <td>(5) run aliroot
241</table>
242
243<p>Steps 1-5 are the normal development cycle after the first pass through the
244procedure.
245
14c31136 246<hr>
247<address>
248 <script language="JavaScript">
249 document.write("Last modified "+ document.lastModified)
250 // end of script -->
251 </script>
252by <a href="mailto:Federico.Carminati@cern.ch">Federico Carminati</a>
253</address>
254</BODY>
255</HTML>