diff options
Diffstat (limited to 'docs/htmldocs/compiling.html')
-rw-r--r-- | docs/htmldocs/compiling.html | 220 |
1 files changed, 220 insertions, 0 deletions
diff --git a/docs/htmldocs/compiling.html b/docs/htmldocs/compiling.html new file mode 100644 index 0000000000..17aed45b4c --- /dev/null +++ b/docs/htmldocs/compiling.html @@ -0,0 +1,220 @@ +<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 36. How to Compile Samba</title><link rel="stylesheet" href="samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="SAMBA Project Documentation"><link rel="up" href="Appendixes.html" title="Part VI. Appendixes"><link rel="previous" href="Appendixes.html" title="Part VI. Appendixes"><link rel="next" href="Portability.html" title="Chapter 37. Portability"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 36. How to Compile Samba</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Appendixes.html">Prev</a> </td><th width="60%" align="center">Part VI. Appendixes</th><td width="20%" align="right"> <a accesskey="n" href="Portability.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="compiling"></a>Chapter 36. How to Compile Samba</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Jelmer</span> <span class="othername">R.</span> <span class="surname">Vernooij</span></h3><div class="affiliation"><span class="orgname">The Samba Team<br></span><div class="address"><p><tt class="email"><<a href="mailto:jelmer@samba.org">jelmer@samba.org</a>></tt></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">John</span> <span class="othername">H.</span> <span class="surname">Terpstra</span></h3><div class="affiliation"><span class="orgname">Samba Team<br></span><div class="address"><p><tt class="email"><<a href="mailto:jht@samba.org">jht@samba.org</a>></tt></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Andrew</span> <span class="surname">Tridgell</span></h3><div class="affiliation"><span class="orgname">Samba Team<br></span><div class="address"><p><tt class="email"><<a href="mailto:tridge@samba.org">tridge@samba.org</a>></tt></p></div></div></div></div><div><p class="pubdate"> 22 May 2001 </p></div><div><p class="pubdate"> 18 March 2003 </p></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="compiling.html#id2972995">Access Samba Source Code via CVS</a></dt><dd><dl><dt><a href="compiling.html#id2973003">Introduction</a></dt><dt><a href="compiling.html#id2973049">CVS Access to samba.org</a></dt></dl></dd><dt><a href="compiling.html#id2973311">Accessing the Samba Sources via rsync and ftp</a></dt><dt><a href="compiling.html#id2973389">Verifying Samba's PGP Signature</a></dt><dt><a href="compiling.html#id2973553">Building the Binaries</a></dt><dd><dl><dt><a href="compiling.html#id2973768">Compiling Samba with Active Directory Support</a></dt></dl></dd><dt><a href="compiling.html#id2973958">Starting the smbd and nmbd</a></dt><dd><dl><dt><a href="compiling.html#id2974066">Starting from inetd.conf</a></dt><dt><a href="compiling.html#id2974312">Alternative: Starting smbd as a Daemon</a></dt></dl></dd></dl></div><p> +You can obtain the Samba source from the +<ulink url="http://samba.org/">Samba Website.</ulink> To obtain a development version, +you can download Samba from CVS or using <b class="command">rsync</b>. +</p><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2972995"></a>Access Samba Source Code via CVS</h2></div></div><div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2973003"></a>Introduction</h3></div></div><div></div></div><p> +<a class="indexterm" name="id2973014"></a> +Samba is developed in an open environment. Developers use +Concurrent Versioning System (CVS) to “<span class="quote">checkin</span>” (also known as +“<span class="quote">commit</span>”) new source code. Samba's various CVS branches can +be accessed via anonymous CVS using the instructions +detailed in this chapter. +</p><p> +This chapter is a modified version of the instructions found at +<ulink url="http://samba.org/samba/cvs.html">http://samba.org/samba/cvs.html</ulink> +</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2973049"></a>CVS Access to samba.org</h3></div></div><div></div></div><p> +The machine samba.org runs a publicly accessible CVS +repository for access to the source code of several packages, +including Samba, rsync, distcc, ccache, and jitterbug. There are two main ways +of accessing the CVS server on this host: +</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2973065"></a>Access via CVSweb</h4></div></div><div></div></div><p> +<a class="indexterm" name="id2973076"></a> +You can access the source code via your favorite WWW browser. This allows you to access +the contents of individual files in the repository and also to look at the revision +history and commit logs of individual files. You can also ask for a diff +listing between any two versions on the repository. +</p><p> +Use the URL: +<ulink url="http://samba.org/cgi-bin/CVSweb">http://samba.org/cgi-bin/CVSweb</ulink> +</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2973106"></a>Access via CVS</h4></div></div><div></div></div><p> +You can also access the source code via a +normal CVS client. This gives you much more control over what you can +do with the repository and allows you to checkout whole source trees +and keep them up-to-date via normal CVS commands. This is the +preferred method of access if you are a developer and not +just a casual browser. +</p><p> +To download the latest CVS source code, point your +browser at the URL : +<ulink url="http://www.cyclic.com/">http://www.cyclic.com/</ulink>. +and click on the “<span class="quote">How to get CVS</span>” link. CVS is free software under +the GNU GPL (as is Samba). Note that there are several graphical CVS clients +that provide a graphical interface to the sometimes mundane CVS commands. +Links to theses clients are also available from the Cyclic Web site. +</p><p> +To gain access via anonymous CVS, use the following steps. +For this example it is assumed that you want a copy of the +Samba source code. For the other source code repositories +on this system just substitute the correct package name. +</p><div class="procedure"><p class="title"><b>Procedure 36.1. Retrieving Samba using CVS</b></p><ol type="1"><li><p> + Install a recent copy of CVS. All you really need is a + copy of the CVS client binary. + </p></li><li><p> + Run the command: + </p><p> + <b class="userinput"><tt>cvs -d :pserver:cvs@samba.org:/cvsroot login</tt></b> + </p></li><li><p> + When it asks you for a password, type <b class="userinput"><tt>cvs</tt></b>. + </p></li><li><p> + Run the command + </p><p> + <b class="userinput"><tt>cvs -d :pserver:CVS@samba.org:/cvsroot co samba</tt></b>. + </p><p> + This will create a directory called <tt class="filename">samba</tt> containing the + latest Samba source code (i.e., the HEAD tagged CVS branch). This + currently corresponds to the 3.0 development tree. + </p><p> + CVS branches other then HEAD can be obtained by using the + <tt class="option">-r</tt> and defining a tag name. A list of branch tag names + can be found on the “<span class="quote">Development</span>” page of the Samba Web site. A common + request is to obtain the latest 3.0 release code. This could be done by + using the following command: + </p><p> + <b class="userinput"><tt>cvs -d :pserver:cvs@samba.org:/cvsroot co -r SAMBA_3_0 samba</tt></b>. + </p></li><li><p> + Whenever you want to merge in the latest code changes, use + the following command from within the Samba directory: + </p><p> + <b class="userinput"><tt>cvs update -d -P</tt></b> + </p></li></ol></div></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2973311"></a>Accessing the Samba Sources via rsync and ftp</h2></div></div><div></div></div><p> + <a class="indexterm" name="id2973323"></a> + <a class="indexterm" name="id2973331"></a> + <i class="parameter"><tt>pserver.samba.org</tt></i> also exports unpacked copies of most parts of the CVS + tree at <ulink url="ftp://pserver.samba.org/pub/unpacked">ftp://pserver.samba.org/pub/unpacked</ulink> and also via anonymous rsync at + <ulink url="rsync://pserver.samba.org/ftp/unpacked/">rsync://pserver.samba.org/ftp/unpacked/</ulink>. I recommend using rsync rather than ftp. + See <ulink url="http://rsync.samba.org/">the rsync homepage</ulink> for more info on rsync. + </p><p> + The disadvantage of the unpacked trees is that they do not support automatic + merging of local changes like CVS does. <b class="command">rsync</b> access is most convenient + for an initial install. + </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2973389"></a>Verifying Samba's PGP Signature</h2></div></div><div></div></div><p> +<a class="indexterm" name="id2973401"></a> +It is strongly recommended that you verify the PGP signature for any source file before +installing it. Even if you're not downloading from a mirror site, verifying PGP signatures +should be a standard reflex. Many people today use the GNU GPG toolset in place of PGP. +GPG can substitute for PGP. +</p><p> +With that said, go ahead and download the following files: +</p><pre class="screen"> +<tt class="prompt">$ </tt><b class="userinput"><tt>wget http://us1.samba.org/samba/ftp/samba-2.2.8a.tar.asc</tt></b> +<tt class="prompt">$ </tt><b class="userinput"><tt>wget http://us1.samba.org/samba/ftp/samba-pubkey.asc</tt></b> +</pre><p> +<a class="indexterm" name="id2973459"></a> +The first file is the PGP signature for the Samba source file; the other is the Samba public +PGP key itself. Import the public PGP key with: +</p><pre class="screen"> +<tt class="prompt">$ </tt><b class="userinput"><tt>gpg --import samba-pubkey.asc</tt></b> +</pre><p> +and verify the Samba source code integrity with: +</p><pre class="screen"> +<tt class="prompt">$ </tt><b class="userinput"><tt>gzip -d samba-2.2.8a.tar.gz</tt></b> +<tt class="prompt">$ </tt><b class="userinput"><tt>gpg --verify samba-2.2.8a.tar.asc</tt></b> +</pre><p> +If you receive a message like, “<span class="quote">Good signature from Samba Distribution Verification Key...</span>” +then all is well. The warnings about trust relationships can be ignored. An +example of what you would not want to see would be: +</p><pre class="screen"> + gpg: BAD signature from “<span class="quote">Samba Distribution Verification Key</span>” +</pre></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2973553"></a>Building the Binaries</h2></div></div><div></div></div><p> +<a class="indexterm" name="id2973564"></a> + To build the binaries, first run the program <b class="userinput"><tt>./configure + </tt></b> in the source directory. This should automatically + configure Samba for your operating system. If you have unusual + needs, then you may wish to run</p><pre class="screen"><tt class="prompt">root# </tt><b class="userinput"><tt>./configure --help +</tt></b></pre><p>first to see what special options you can enable. Now execute <b class="userinput"><tt>./configure</tt></b> with any arguments it might need:</p><pre class="screen"><tt class="prompt">root# </tt><b class="userinput"><tt>./configure <i class="replaceable"><tt>[... arguments ...]</tt></i></tt></b></pre><p>Executing</p><p> +<a class="indexterm" name="id2973641"></a> + </p><pre class="screen"><tt class="prompt">root# </tt><b class="userinput"><tt>make</tt></b></pre><p>will create the binaries. Once it is successfully + compiled you can use</p><pre class="screen"><tt class="prompt">root# </tt><b class="userinput"><tt>make install</tt></b></pre><p>to install the binaries and manual pages. You can + separately install the binaries and/or man pages using</p><pre class="screen"><tt class="prompt">root# </tt><b class="userinput"><tt>make installbin +</tt></b></pre><p>and</p><pre class="screen"><tt class="prompt">root# </tt><b class="userinput"><tt>make installman + </tt></b></pre><p>Note that if you are upgrading from a previous version + of Samba you might like to know that the old versions of + the binaries will be renamed with an “<span class="quote">.old</span>” extension. You + can go back to the previous version with</p><pre class="screen"><tt class="prompt">root# </tt><b class="userinput"><tt>make revert +</tt></b></pre><p>if you find this version a disaster!</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2973768"></a>Compiling Samba with Active Directory Support</h3></div></div><div></div></div><p>In order to compile Samba with ADS support, you need to have installed + on your system:</p><div class="itemizedlist"><ul type="disc"><li><p>The MIT or Heimdal kerberos development libraries + (either install from the sources or use a package).</p></li><li><p>The OpenLDAP development libraries.</p></li></ul></div><p>If your kerberos libraries are in a non-standard location, then + remember to add the configure option + <tt class="option">--with-krb5=<i class="replaceable"><tt>DIR</tt></i></tt>.</p><p>After you run configure, make sure that + <tt class="filename">include/config.h</tt> it generates contain lines like + this:</p><pre class="programlisting"> +#define HAVE_KRB5 1 +#define HAVE_LDAP 1 +</pre><p>If it does not, configure did not find your KRB5 libraries or + your LDAP libraries. Look in <tt class="filename">config.log</tt> to figure + out why and fix it.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2973849"></a>Installing the Required Packages for Debian</h4></div></div><div></div></div><p>On Debian, you need to install the following packages:</p><p> + </p><div class="itemizedlist"><ul type="disc"><li>libkrb5-dev</li><li>krb5-user</li></ul></div><p> + </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2973878"></a>Installing the Required Packages for Red Hat Linux</h4></div></div><div></div></div><p>On Red Hat Linux, this means you should have at least: </p><p> + </p><div class="itemizedlist"><ul type="disc"><li>krb5-workstation (for kinit)</li><li>krb5-libs (for linking with)</li><li>krb5-devel (because you are compiling from source)</li></ul></div><p> + </p><p>in addition to the standard development environment.</p><p>If these files are not installed on your system, you should check the installation + CDs to find which has them and install the files using your tool of choice. If in doubt + about what tool to use, refer to the Red Hat Linux documentation.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2973928"></a>SuSE Linux Package Requirements</h4></div></div><div></div></div><p>SuSE Linux installs Heimdal packages that may be required to allow you to build + binary packages. You should verify that the development libraries have been installed on + your system. + </p><p>SuSE Linux Samba RPMs support Kerberos. Please refer to the documentation for + your SuSE Linux system for information regading SuSE Linux specific configuration. + Additionally, SuSE are very active in the maintenance of Samba packages that provide + the maximum capabilities that are available. You should consider using SuSE provided + packages where they are available. + </p></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2973958"></a>Starting the <span class="application">smbd</span> and <span class="application">nmbd</span></h2></div></div><div></div></div><p> + <a class="indexterm" name="id2973982"></a> + You must choose to start <span class="application">smbd</span> and <span class="application">nmbd</span> either + as daemons or from <span class="application">inetd</span>. Don't try + to do both! Either you can put them in <tt class="filename"> + inetd.conf</tt> and have them started on demand + by <span class="application">inetd</span> or <span class="application">xinetd</span>, + or you can start them as + daemons either from the command line or in <tt class="filename"> + /etc/rc.local</tt>. See the man pages for details + on the command line options. Take particular care to read + the bit about what user you need to have to start + Samba. In many cases, you must be root.</p><p>The main advantage of starting <span class="application">smbd</span> + and <span class="application">nmbd</span> using the recommended daemon method + is that they will respond slightly more quickly to an initial connection + request.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2974066"></a>Starting from inetd.conf</h3></div></div><div></div></div><a class="indexterm" name="id2974074"></a><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>The following will be different if + you use NIS, NIS+ or LDAP to distribute services maps.</p></div><p>Look at your <tt class="filename">/etc/services</tt>. + What is defined at port 139/tcp? If nothing is defined, + then add a line like this:</p><pre class="programlisting">netbios-ssn 139/tcp</pre><p>Similarly for 137/udp, you should have an entry like:</p><pre class="programlisting">netbios-ns 137/udp</pre><p>Next, edit your <tt class="filename">/etc/inetd.conf</tt> + and add two lines like this:</p><pre class="programlisting"> + netbios-ssn stream tcp nowait root /usr/local/samba/bin/smbd smbd + netbios-ns dgram udp wait root /usr/local/samba/bin/nmbd nmbd + </pre><p>The exact syntax of <tt class="filename">/etc/inetd.conf</tt> + varies between UNIXes. Look at the other entries in inetd.conf + for a guide. </p><p> + <a class="indexterm" name="id2974166"></a> + Some distributions use xinetd instead of inetd. Consult the + xinetd manual for configuration information.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>Some UNIXes already have entries like netbios_ns + (note the underscore) in <tt class="filename">/etc/services</tt>. + You must edit <tt class="filename">/etc/services</tt> or + <tt class="filename">/etc/inetd.conf</tt> to make them consistent. + </p></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p> + <a class="indexterm" name="id2974210"></a> + On many systems you may need to use the + <a class="indexterm" name="id2974219"></a><i class="parameter"><tt>interfaces</tt></i> option in <tt class="filename">smb.conf</tt> to specify the IP + address and netmask of your interfaces. Run + <span class="application">ifconfig</span> + as root if you do not know what the broadcast is for your + net. <span class="application">nmbd</span> tries to determine it at run + time, but fails on some UNIXes. + </p></div><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warning</h3><p>Many UNIXes only accept around five + parameters on the command line in <tt class="filename">inetd.conf</tt>. + This means you shouldn't use spaces between the options and + arguments, or you should use a script and start the script + from <b class="command">inetd</b>.</p></div><p>Restart <span class="application">inetd</span>, perhaps just send + it a HUP. </p><pre class="screen"> + <tt class="prompt">root# </tt><b class="userinput"><tt>killall -HUP inetd</tt></b> + </pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2974312"></a>Alternative: Starting <span class="application">smbd</span> as a Daemon</h3></div></div><div></div></div><p> + <a class="indexterm" name="id2974330"></a> + To start the server as a daemon, you should create + a script something like this one, perhaps calling + it <tt class="filename">startsmb</tt>.</p><pre class="programlisting"> + #!/bin/sh + /usr/local/samba/bin/smbd -D + /usr/local/samba/bin/nmbd -D + </pre><p>Make it executable with <b class="command">chmod + +x startsmb</b></p><p>You can then run <b class="command">startsmb</b> by + hand or execute it from <tt class="filename">/etc/rc.local</tt>. + </p><p>To kill it, send a kill signal to the processes + <span class="application">nmbd</span> and <span class="application">smbd</span>.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>If you use the SVR4 style init system, + you may like to look at the <tt class="filename">examples/svr4-startup</tt> + script to make Samba fit into that system.</p></div></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Appendixes.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="Appendixes.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="Portability.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part VI. Appendixes </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 37. Portability</td></tr></table></div></body></html> |