1<HTML> 2<HEAD> 3<TITLE> 4[Chapter 2] 2.2 Configuring Samba</title><META NAME="DC.title" CONTENT=""><META NAME="DC.creator" CONTENT=""><META NAME="DC.publisher" CONTENT="O'Reilly & Associates, Inc."><META NAME="DC.date" CONTENT="1999-11-05T21:29:05Z"><META NAME="DC.type" CONTENT="Text.Monograph"><META NAME="DC.format" CONTENT="text/html" SCHEME="MIME"><META NAME="DC.source" CONTENT="" SCHEME="ISBN"><META NAME="DC.language" CONTENT="en-US"><META NAME="generator" CONTENT="Jade 1.1/O'Reilly DocBook 3.0 to HTML 4.0"></head> 5<BODY BGCOLOR="#FFFFFF" TEXT="#000000" link="#990000" vlink="#0000CC"> 6<table BORDER="0" CELLPADDING="0" CELLSPACING="0" width="90%"> 7<tr> 8<td width="25%" valign="TOP"> 9<img hspace=10 vspace=10 src="gifs/samba.s.gif" 10alt="Using Samba" align=left valign=top border=0> 11</td> 12<td height="105" valign="TOP"> 13<br> 14<H2>Using Samba</H2> 15<font size="-1"> 16Robert Eckstein, David Collier-Brown, Peter Kelly 17<br>1st Edition November 1999 18<br>1-56592-449-5, Order Number: 4495 19<br>416 pages, $34.95 20</font> 21<p> <a href="http://www.oreilly.com/catalog/samba/">Buy the hardcopy</a> 22<p><a href="index.html">Table of Contents</a> 23</td> 24</tr> 25</table> 26<hr size=1 noshade> 27<!--sample chapter begins --> 28 29<center> 30<DIV CLASS="htmlnav"> 31<TABLE WIDTH="515" BORDER="0" CELLSPACING="0" CELLPADDING="0"> 32<TR> 33<TD ALIGN="LEFT" VALIGN="TOP" WIDTH="172"> 34<A CLASS="sect1" HREF="ch02_01.html" TITLE="2.1 Downloading the Samba Distribution"> 35<IMG SRC="gifs/txtpreva.gif" ALT="Previous: 2.1 Downloading the Samba Distribution" BORDER="0"></a></td><TD ALIGN="CENTER" VALIGN="TOP" WIDTH="171"> 36<B> 37<FONT FACE="ARIEL,HELVETICA,HELV,SANSERIF" SIZE="-1"> 38<A CLASS="chapter" REL="up" HREF="ch02_01.html" TITLE="2. Installing Samba on a Unix System"> 39Chapter 2<br> 40Installing Samba on a Unix System</a></font></b></td><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="172"> 41<A CLASS="sect1" HREF="ch02_03.html" TITLE="2.3 Compiling and Installing Samba"> 42<IMG SRC="gifs/txtnexta.gif" ALT="Next: 2.3 Compiling and Installing Samba" BORDER="0"></a></td></tr></table> <hr noshade size=1></center> 43</div> 44<blockquote> 45<div> 46<H2 CLASS="sect1"> 47<A CLASS="title" NAME="ch02-28558"> 482.2 Configuring Samba</a></h2><P CLASS="para">The source distribution of Samba 2.0 and above doesn't initially have a makefile. Instead, one is generated through a GNU <I CLASS="filename"> 49configure</i> script, which is located in the <I CLASS="filename"> 50samba-2.0.x /source/</i> directory. The <I CLASS="firstterm"> 51configure</i> script, which must be run as root, takes care of the machine-specific issues of building Samba. However, you still may want to decide on some global options. Global options can be set by passing options on the command-line:</p><PRE CLASS="programlisting"> 52# ./configure --with-ssl</pre><P CLASS="para"> 53For example, this will configure the Samba makefile with support for the Secure Sockets Layer (SSL) encryption protocol. If you would like a complete list of options, type the following:</p><PRE CLASS="programlisting"> 54# ./configure --help</pre><P CLASS="para">Each of these options enable or disable various features. You typically enable a feature by specifying the <CODE CLASS="literal"> 55--with-</code><CODE CLASS="replaceable"> 56<I> 57feature</i></code> option, which will cause the feature to be compiled and installed. Likewise, if you specify a <CODE CLASS="literal"> 58--without-</code><CODE CLASS="replaceable"> 59<I> 60feature</i></code> option, the feature will be disabled. As of Samba 2.0.5, each of the following features is disabled by default:</p><DL CLASS="variablelist"> 61<DT CLASS="term"> 62<CODE CLASS="literal"> 63--with-smbwrapper</code></dt><DD CLASS="listitem"> 64<P CLASS="para"> 65Include SMB wrapper support, which allows executables on the Unix side to access SMB/CIFS filesystems as if they were regular Unix filesystems. We recommend using this option. However, at this time this book went to press, there were several incompatibilities between the <I CLASS="filename"> 66smbwrapper</i> package and the GNU <I CLASS="filename"> 67libc</i> version 2.1, and it would not compile on Red Hat 6.0. Look for more information on these incompatibilities on the Samba home page.</p></dd><DT CLASS="term"> 68<CODE CLASS="literal"> 69--with-afs</code></dt><DD CLASS="listitem"> 70<P CLASS="para"> 71Include support of the Andrew Filesystem from Carnegie Mellon University. If you're going to serve AFS files via Samba, we recommend compiling Samba once first without enabling this feature to ensure that everything runs smoothly. Once that version is working smoothly, recompile Samba with this feature enabled and compare any errors you might receive against the previous setup.</p></dd><DT CLASS="term"> 72<CODE CLASS="literal"> 73--with-dfs</code></dt><DD CLASS="listitem"> 74<P CLASS="para"> 75Include support for DFS, a later version of AFS, used by OSF/1 (Digital Unix). Note that this is <EM CLASS="emphasis"> 76not</em> the same as Microsoft DFS, which is an entirely different filesystem. Again, we recommend compiling Samba once first without this feature to ensure that everything runs smoothly, then recompile with this feature to compare any errors against the previous setup.</p></dd><DT CLASS="term"> 77<CODE CLASS="literal"> 78--with-krb4</code>=<CODE CLASS="replaceable"><I>base-directory</i></code></dt><DD CLASS="listitem"> 79<P CLASS="para"> 80Include support for Kerberos version 4.0, explicitly specifying the base directory of the distribution. Kerberos is a network security protocol from MIT that uses private key cryptography to provide strong security between nodes. Incidentally, Microsoft has announced that Kerberos 5.0 will be the standard authentication mechanism for Microsoft Windows 2000 (NT 5.0). However, the Kerberos 5.0 authentication mechanisms are quite different from the Kerberos 4.0 security mechanisms. If you have Kerberos version 4 on your system, the Samba team recommends that you upgrade and use the <CODE CLASS="literal"> 81--with-krb5</code> option (see the next item). You can find more information on Kerberos at <a href="http://web.mit.edu/kerberos/www"><EM CLASS="emphasis">http://web.mit.edu/kerberos/www</a></em>.</p></dd><DT CLASS="term"> 82<CODE CLASS="literal"> 83--with-krb5</code>=<CODE CLASS="replaceable"><I>base-directory</i></code></dt><DD CLASS="listitem"> 84<P CLASS="para"> 85Include support for Kerberos version 5.0, explicitly specifying the base directory of the distribution. Microsoft has announced that Kerberos 5.0 will be the standard authentication mechanism for Microsoft Windows 2000 (NT 5.0). However, there is no guarantee that Microsoft will not extend Kerberos for their own needs in the future. Currently, Samba's Kerberos support only uses a plaintext password interface and not an encrypted one. You can find more information on Kerberos at its home page: <a href="http://web.mit.edu/kerberos/www"><EM CLASS="emphasis">http://web.mit.edu/kerberos/www</a></em>.</p></dd><DT CLASS="term"> 86<CODE CLASS="literal"> 87--with-automount</code></dt><DD CLASS="listitem"> 88<P CLASS="para"> 89Include support for automounter, a feature often used on sites that offer NFS. </p></dd><DT CLASS="term"> 90<CODE CLASS="literal"> 91--with-smbmount</code></dt><DD CLASS="listitem"> 92<P CLASS="para"> 93Include <EM CLASS="emphasis"> 94smbmount</em> support, which is for Linux only. This feature wasn't being maintained at the time the book was written, so the Samba team made it an optional feature and provided <EM CLASS="emphasis"> 95smbwrapper</em> instead. The <EM CLASS="emphasis"> 96smbwrapper</em> feature works on more Unix platforms than <EM CLASS="emphasis"> 97smbmount</em>, so you'll usually want to use <CODE CLASS="literal"> 98--with-smbwrapper</code> instead of this option.</p></dd><DT CLASS="term"> 99<CODE CLASS="literal"> 100--with-pam</code></dt><DD CLASS="listitem"> 101<P CLASS="para"> 102Include support for pluggable authentication modules (PAM), an authentication feature common in the Linux operating system.</p></dd><DT CLASS="term"> 103<CODE CLASS="literal"> 104--with-ldap</code></dt><DD CLASS="listitem"> 105<P CLASS="para"> 106Include support for the Lightweight Directory Access Protocol (LDAP). A future version of LDAP will be used in the Windows 2000 (NT 5.0) operating system; this Samba support is experimental. LDAP is a flexible client-server directory protocol that can carry information such as certificates and group memberships.[<A CLASS="footnote" HREF="#ch02-pgfId-943655">4</a>]</p><BLOCKQUOTE CLASS="footnote"> 107<DIV CLASS="footnote"> 108<P CLASS="para"> 109<A CLASS="footnote" NAME="ch02-pgfId-943655">[4]</a> By <EM CLASS="emphasis"> 110directory</em>, we don't mean a directory in a file system, but instead an indexed directory (such as a phone directory). Information is stored and can be easily retrieved in a public LDAP system.</p></div></blockquote></dd><DT CLASS="term"> 111<CODE CLASS="literal"> 112--with-nis</code></dt><DD CLASS="listitem"> 113<P CLASS="para"> 114Include support for getting password-file information from NIS (network yellow pages).</p></dd><DT CLASS="term"> 115<CODE CLASS="literal"> 116--with-nisplus</code></dt><DD CLASS="listitem"> 117<P CLASS="para"> 118Include support for obtaining password-file information from NIS+, the successor to NIS.</p></dd><DT CLASS="term"> 119<CODE CLASS="literal"> 120--with-ssl</code></dt><DD CLASS="listitem"> 121<P CLASS="para"> 122Include experimental support for the Secure Sockets Layer (SSL), which is used to provide encrypted connections from client to server. <a href="appa_01.html"><b>Appendix A, <CITE CLASS="appendix">Configuring Samba with SSL</cite></b></a>, describes setting up Samba with SSL support.</p></dd><DT CLASS="term"> 123<CODE CLASS="literal"> 124--with-nisplus-home</code></dt><DD CLASS="listitem"> 125<P CLASS="para"> 126Include support for locating which server contains a particular user's home directory and telling the client to connect to it. Requires <CODE CLASS="literal"> 127--with-nis</code> and, usually, <CODE CLASS="literal"> 128--with-automounter</code>. </p></dd><DT CLASS="term"> 129<CODE CLASS="literal"> 130--with-mmap</code></dt><DD CLASS="listitem"> 131<P CLASS="para"> 132Include experimental memory mapping code. This is not required for fast locking, which already uses mmap or System V shared memory.</p></dd><DT CLASS="term"> 133<CODE CLASS="literal"> 134--with-syslog</code></dt><DD CLASS="listitem"> 135<P CLASS="para"> 136Include support for using the SYSLOG utility for logging information generated from the Samba server. There are a couple of Samba configuration options that you can use to enable SYSLOG support; <a href="ch04_01.html"><b>Chapter 4, <CITE CLASS="chapter">Disk Shares </cite></b></a>, discusses these options.</p></dd><DT CLASS="term"> 137<CODE CLASS="literal"> 138--with-netatalk</code></dt><DD CLASS="listitem"> 139<P CLASS="para"> 140Include experimental support for interoperating with the (Macintosh) Netatalk file server.</p></dd><DT CLASS="term"> 141<CODE CLASS="literal"> 142--with-quotas</code></dt><DD CLASS="listitem"> 143<P CLASS="para"> 144Include disk-quota support.</p></dd></dl><P CLASS="para"> 145Because each of these options is disabled by default, none of these features are essential to Samba. However, you may want to come back and build a modified version of Samba if you discover that you need one at a later time.</p><P CLASS="para"> 146In addition, <A CLASS="xref" HREF="ch02_02.html#ch02-85125"> 147Table 2.1</a> shows some other parameters that you can give the <I CLASS="filename"> 148configure</i> script if you wish to store parts of the Samba distribution in different places, perhaps to make use of multiple disks or partitions. Note that the defaults sometimes refer to a prefix specified earlier in the table. </p><br> 149<TABLE CLASS="table" BORDER="1" CELLPADDING="3"> 150<CAPTION CLASS="table"> 151<A CLASS="title" NAME="ch02-85125"> 152Table 2.1: Additional Configure Options </a></caption><THEAD CLASS="thead"> 153<TR CLASS="row" VALIGN="TOP"> 154<TH CLASS="entry" ALIGN="LEFT" ROWSPAN="1" COLSPAN="1"> 155<P CLASS="para"> 156Option</p></th><TH CLASS="entry" ALIGN="LEFT" ROWSPAN="1" COLSPAN="1"> 157<P CLASS="para"> 158Meaning</p></th><TH CLASS="entry" ALIGN="LEFT" ROWSPAN="1" COLSPAN="1"> 159<P CLASS="para"> 160Default</p></th></tr></thead><TBODY CLASS="tbody"> 161<TR CLASS="row" VALIGN="TOP"> 162<TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 163<P CLASS="para"> 164<CODE CLASS="literal"> 165--prefix</code>=<CODE CLASS="replaceable"><I>directory</i></code></p></td><TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 166<P CLASS="para"> 167Install architecture-independent files at the base directory specified.</p></td><TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 168<P CLASS="para"> 169<I CLASS="filename"> 170/usr/local/samba</i></p></td></tr><TR CLASS="row" VALIGN="TOP"> 171<TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 172<P CLASS="para"> 173<CODE CLASS="literal"> 174--eprefix</code>=<CODE CLASS="replaceable"><I>directory</i></code></p></td><TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 175<P CLASS="para"> 176Install architecture-dependent files at the base directory specified.</p></td><TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 177<P CLASS="para"> 178<I CLASS="filename"> 179/usr/local/samba</i></p></td></tr><TR CLASS="row" VALIGN="TOP"> 180<TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 181<P CLASS="para"> 182<CODE CLASS="literal"> 183--bindir</code>=<CODE CLASS="replaceable"><I>directory</i></code></p></td><TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 184<P CLASS="para"> 185Install user executables in the directory specified.</p></td><TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 186<P CLASS="para"> 187<CODE CLASS="replaceable"> 188<I> 189eprefix</i></code><I CLASS="filename">/bin</i></p></td></tr><TR CLASS="row" VALIGN="TOP"> 190<TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 191<P CLASS="para"> 192<CODE CLASS="literal"> 193--sbindir</code>=<CODE CLASS="replaceable"><I>directory</i></code></p></td><TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 194<P CLASS="para"> 195Install administrator executables in the directory specified.</p></td><TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 196<P CLASS="para"> 197<CODE CLASS="replaceable"> 198<I> 199eprefix</i></code><I CLASS="filename">/bin</i></p></td></tr><TR CLASS="row" VALIGN="TOP"> 200<TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 201<P CLASS="para"> 202<CODE CLASS="literal"> 203--libexecdir</code>=<CODE CLASS="replaceable"><I>directory</i></code></p></td><TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 204<P CLASS="para"> 205Install program executables in the directory specified.</p></td><TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 206<P CLASS="para"> 207<CODE CLASS="replaceable"> 208<I> 209eprefix</i></code><I CLASS="filename">/libexec</i></p></td></tr><TR CLASS="row" VALIGN="TOP"> 210<TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 211<P CLASS="para"> 212<CODE CLASS="literal"> 213--datadir</code>=<CODE CLASS="replaceable"><I>directory</i></code></p></td><TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 214<P CLASS="para"> 215Install read-only architecture independent data in the directory specified.</p></td><TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 216<P CLASS="para"> 217<CODE CLASS="replaceable"> 218<I> 219prefix</i></code><I CLASS="filename">/share</i></p></td></tr><TR CLASS="row" VALIGN="TOP"> 220<TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 221<P CLASS="para"> 222<CODE CLASS="literal"> 223--libdir</code>=<CODE CLASS="replaceable"><I>directory</i></code></p></td><TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 224<P CLASS="para"> 225Install program libraries in the directory specified.</p></td><TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 226<P CLASS="para"> 227<CODE CLASS="replaceable"> 228<I> 229eprefix</i></code><I CLASS="filename">/lib</i></p></td></tr><TR CLASS="row" VALIGN="TOP"> 230<TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 231<P CLASS="para"> 232<CODE CLASS="literal"> 233--includedir</code>=<CODE CLASS="replaceable"><I>directory</i></code></p></td><TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 234<P CLASS="para"> 235Install package include files in the directory specified.</p></td><TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 236<P CLASS="para"> 237<CODE CLASS="replaceable"> 238<I> 239prefix</i></code><I CLASS="filename">/include</i></p></td></tr><TR CLASS="row" VALIGN="TOP"> 240<TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 241<P CLASS="para"> 242<CODE CLASS="literal"> 243--infodir</code>=<CODE CLASS="replaceable"><I>directory</i></code></p></td><TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 244<P CLASS="para"> 245Install additional information files in the directory specified.</p></td><TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 246<P CLASS="para"> 247<CODE CLASS="replaceable"> 248<I> 249prefix</i></code><I CLASS="filename">/info</i></p></td></tr><TR CLASS="row" VALIGN="TOP"> 250<TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 251<P CLASS="para"> 252<CODE CLASS="literal"> 253--mandir</code>=<CODE CLASS="replaceable"><I>directory</i></code></p></td><TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 254<P CLASS="para"> 255Install manual pages in the directory specified. </p></td><TD CLASS="entry" ROWSPAN="1" COLSPAN="1"> 256<P CLASS="para"> 257<CODE CLASS="replaceable"> 258<I> 259prefix</i></code><I CLASS="filename">/man</i></p></td></tr></tbody></table><P CLASS="para"> 260Again, before running the <I CLASS="filename"> 261configure</i> script, it is important that you are the root user on the system. Otherwise, you may get a warning such as:</p><PRE CLASS="programlisting"> 262configure: warning: running as non-root will disable some tests</pre><P CLASS="para"> 263You don't want any test to be disabled when the Samba makefile is being created; this leaves the potential for errors down the road when compiling or running Samba on your system.</p><P CLASS="para"> 264Here is a sample execution of the <I CLASS="filename"> 265configure</i> script, which creates a Samba 2.0.4 makefile for the Linux platform. Note that you must run the configure script in the <EM CLASS="emphasis"> 266source</em> directory, and that several lines from the middle of the excerpt have been omitted:</p><PRE CLASS="programlisting"> 267# cd samba-2.0.4b/source/ 268# ./configure | tee mylog 269 270loading cache ./config.cache 271checking for gcc... (cached) gcc 272checking whether the C compiler (gcc -O) works... yes 273checking whether the C compiler (gcc -O) is a cross-compiler... no 274checking whether we are using GNU C... (cached) yes 275checking whether gcc accepts -g... (cached) yes 276checking for a BSD compatible install... (cached) /usr/bin/install -c 277 278<EM CLASS="emphasis">...(content omitted)...</em> 279 280checking configure summary 281configure OK 282creating ./config.status 283creating include/stamp-h 284creating Makefile 285creating include/config.h</pre><P CLASS="para"> 286In general, any message from <I CLASS="filename"> 287configure</i> that doesn't begin with the words <CODE CLASS="literal"> 288checking</code> or <CODE CLASS="literal"> 289creating</code> is an error; it often helps to redirect the output of the configure script to a file so you can quickly search for errors, as we did with the <CODE CLASS="literal"> 290tee</code> command above. If there was an error during configuration, more detailed information about it can be found in the <I CLASS="filename"> 291config.log</i> file, which is written to the local directory by the <I CLASS="filename"> 292configure</i> script.</p><P CLASS="para"> 293If the configuration works, you'll see a <CODE CLASS="literal"> 294checking</code> <CODE CLASS="literal"> 295configure</code> <CODE CLASS="literal"> 296summary</code> message followed by a <CODE CLASS="literal"> 297configure</code> <CODE CLASS="literal"> 298OK</code> message and four or five file creation messages. So far, so good.... Next step: compiling. </p></div></blockquote> 299<div> 300<center> 301<hr noshade size=1><TABLE WIDTH="515" BORDER="0" CELLSPACING="0" CELLPADDING="0"> 302<TR> 303<TD ALIGN="LEFT" VALIGN="TOP" WIDTH="172"> 304<A CLASS="sect1" HREF="ch02_01.html" TITLE="2.1 Downloading the Samba Distribution"> 305<IMG SRC="gifs/txtpreva.gif" ALT="Previous: 2.1 Downloading the Samba Distribution" BORDER="0"></a></td><TD ALIGN="CENTER" VALIGN="TOP" WIDTH="171"> 306<A CLASS="book" HREF="index.html" TITLE=""> 307<IMG SRC="gifs/txthome.gif" ALT="" BORDER="0"></a></td><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="172"> 308<A CLASS="sect1" HREF="ch02_03.html" TITLE="2.3 Compiling and Installing Samba"> 309<IMG SRC="gifs/txtnexta.gif" ALT="Next: 2.3 Compiling and Installing Samba" BORDER="0"></a></td></tr><TR> 310<TD ALIGN="LEFT" VALIGN="TOP" WIDTH="172"> 3112.1 Downloading the Samba Distribution</td><TD ALIGN="CENTER" VALIGN="TOP" WIDTH="171"> 312<A CLASS="index" HREF="inx.html" TITLE="Book Index"> 313<IMG SRC="gifs/index.gif" ALT="Book Index" BORDER="0"></a></td><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="172"> 3142.3 Compiling and Installing Samba</td></tr></table><hr noshade size=1></center> 315</div> 316 317<!-- End of sample chapter --> 318<CENTER> 319<FONT SIZE="1" FACE="Verdana, Arial, Helvetica"> 320<A HREF="http://www.oreilly.com/"> 321<B>O'Reilly Home</B></A> <B> | </B> 322<A HREF="http://www.oreilly.com/sales/bookstores"> 323<B>O'Reilly Bookstores</B></A> <B> | </B> 324<A HREF="http://www.oreilly.com/order_new/"> 325<B>How to Order</B></A> <B> | </B> 326<A HREF="http://www.oreilly.com/oreilly/contact.html"> 327<B>O'Reilly Contacts<BR></B></A> 328<A HREF="http://www.oreilly.com/international/"> 329<B>International</B></A> <B> | </B> 330<A HREF="http://www.oreilly.com/oreilly/about.html"> 331<B>About O'Reilly</B></A> <B> | </B> 332<A HREF="http://www.oreilly.com/affiliates.html"> 333<B>Affiliated Companies</B></A><p> 334<EM>© 1999, O'Reilly & Associates, Inc.</EM> 335</FONT> 336</CENTER> 337</BODY> 338</html> 339