summaryrefslogtreecommitdiff
path: root/docs/howto/Compiling.xml
diff options
context:
space:
mode:
Diffstat (limited to 'docs/howto/Compiling.xml')
-rw-r--r--docs/howto/Compiling.xml507
1 files changed, 507 insertions, 0 deletions
diff --git a/docs/howto/Compiling.xml b/docs/howto/Compiling.xml
new file mode 100644
index 0000000000..a74d2ebcd2
--- /dev/null
+++ b/docs/howto/Compiling.xml
@@ -0,0 +1,507 @@
+<chapter id="compiling">
+<chapterinfo>
+ &author.jelmer;
+ &author.jht;
+ &author.tridge;
+
+ <pubdate> 22 May 2001 </pubdate>
+ <pubdate> 18 March 2003 </pubdate>
+</chapterinfo>
+
+<title>How to Compile Samba</title>
+
+<para>
+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 <command>rsync</command>.
+</para>
+
+<sect1>
+<title>Access Samba Source Code via CVS</title>
+
+
+<sect2>
+<title>Introduction</title>
+
+<para>
+<indexterm><primary>CVS</primary></indexterm>
+Samba is developed in an open environment. Developers use
+Concurrent Versioning System (CVS) to <quote>checkin</quote> (also known as
+<quote>commit</quote>) new source code. Samba's various CVS branches can
+be accessed via anonymous CVS using the instructions
+detailed in this chapter.
+</para>
+
+<para>
+This chapter is a modified version of the instructions found at the
+<ulink noescape="1" url="http://samba.org/samba/cvs.html">Samba</ulink> web site.
+</para>
+
+</sect2>
+
+<sect2>
+<title>CVS Access to samba.org</title>
+
+<para>
+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:
+</para>
+
+<sect3>
+<title>Access via CVSweb</title>
+
+
+<para>
+<indexterm><primary>CVS</primary><secondary>web</secondary></indexterm>
+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.
+</para>
+
+<para>
+Use the URL:
+<ulink noescape="1" url="http://samba.org/cgi-bin/CVSweb">http://samba.org/cgi-bin/CVSweb</ulink>
+</para>
+</sect3>
+
+<sect3>
+<title>Access via CVS</title>
+
+<para>
+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.
+</para>
+
+<para>
+To download the latest CVS source code, point your
+browser at the URL :
+<ulink noescape="1" url="http://www.cyclic.com/">http://www.cyclic.com/</ulink>.
+and click on the <quote>How to get CVS</quote> 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.
+</para>
+
+<para>
+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.
+</para>
+
+<procedure>
+ <title>Retrieving Samba using CVS</title>
+
+ <step>
+ <para>
+ Install a recent copy of CVS. All you really need is a
+ copy of the CVS client binary.
+ </para>
+ </step>
+
+ <step>
+ <para>
+ Run the command:
+ </para>
+
+ <para>
+ <userinput>cvs -d :pserver:cvs@samba.org:/cvsroot login</userinput>
+ </para>
+ </step>
+
+ <step>
+
+ <para>
+ When it asks you for a password, type <userinput>cvs</userinput>.
+ </para>
+ </step>
+
+ <step>
+ <para>
+ Run the command
+ </para>
+
+ <para>
+ <userinput>cvs -d :pserver:CVS@samba.org:/cvsroot co samba</userinput>.
+ </para>
+
+ <para>
+ This will create a directory called <filename>samba</filename> containing the
+ latest Samba source code (i.e., the HEAD tagged CVS branch). This
+ currently corresponds to the 3.0 development tree.
+ </para>
+
+ <para>
+ CVS branches other then HEAD can be obtained by using the
+ <option>-r</option> and defining a tag name. A list of branch tag names
+ can be found on the <quote>Development</quote> 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:
+ </para>
+
+ <para>
+ <userinput>cvs -d :pserver:cvs@samba.org:/cvsroot co -r SAMBA_3_0 samba</userinput>.
+ </para>
+ </step>
+
+ <step>
+ <para>
+ Whenever you want to merge in the latest code changes, use
+ the following command from within the Samba directory:
+ </para>
+
+ <para>
+ <userinput>cvs update -d -P</userinput>
+ </para>
+ </step>
+</procedure>
+
+</sect3>
+</sect2>
+
+</sect1>
+
+<sect1>
+ <title>Accessing the Samba Sources via rsync and ftp</title>
+
+
+ <para>
+ <indexterm><primary>rsync</primary></indexterm>
+ <indexterm><primary>ftp</primary></indexterm>
+ <parameter>pserver.samba.org</parameter> also exports unpacked copies of most parts of the CVS
+ tree at the Samba <ulink noescape="1" url="ftp://pserver.samba.org/pub/unpacked">pserver</ulink>
+ location and also via anonymous rsync at the Samba
+ <ulink noescape="1" url="rsync://pserver.samba.org/ftp/unpacked/">rsync</ulink> server location.
+ I recommend using rsync rather than ftp.
+ See <ulink noescape="1" url="http://rsync.samba.org/">the rsync home-page</ulink> for more info on rsync.
+ </para>
+
+ <para>
+ The disadvantage of the unpacked trees is that they do not support automatic
+ merging of local changes like CVS does. <command>rsync</command> access is most convenient
+ for an initial install.
+ </para>
+</sect1>
+
+<sect1>
+<title>Verifying Samba's PGP Signature</title>
+
+<para>
+<indexterm><primary>GPG</primary></indexterm>
+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 tool-set in place of PGP.
+GPG can substitute for PGP.
+</para>
+
+
+<para>
+With that said, go ahead and download the following files:
+</para>
+
+<para><screen>
+&prompt;<userinput>wget http://us1.samba.org/samba/ftp/samba-3.0.0.tar.asc</userinput>
+&prompt;<userinput>wget http://us1.samba.org/samba/ftp/samba-pubkey.asc</userinput>
+</screen></para>
+
+
+<para>
+<indexterm><primary>PGP</primary></indexterm>
+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:
+</para>
+
+<screen>
+&prompt;<userinput>gpg --import samba-pubkey.asc</userinput>
+</screen>
+
+<para>
+and verify the Samba source code integrity with:
+</para>
+
+<screen>
+&prompt;<userinput>gzip -d samba-3.0.0.tar.gz</userinput>
+&prompt;<userinput>gpg --verify samba-3.0.0.tar.asc</userinput>
+</screen>
+
+<para>
+If you receive a message like, <quote>Good signature from Samba Distribution Verification Key...</quote>
+then all is well. The warnings about trust relationships can be ignored. An
+example of what you would not want to see would be:
+</para>
+
+<para><screen>
+ gpg: BAD signature from <quote>Samba Distribution Verification Key</quote>
+</screen></para>
+
+</sect1>
+
+<sect1>
+ <title>Building the Binaries</title>
+
+
+ <para>
+<indexterm><primary>configure</primary></indexterm>
+ To build the binaries, first run the program <userinput>./configure
+ </userinput> in the source directory. This should automatically
+ configure Samba for your operating system. If you have unusual
+ needs, then you may wish to run</para>
+
+<para><screen>&rootprompt;<userinput>./configure --help
+</userinput></screen></para>
+
+<para>first to see what special options you can enable. Now execute <userinput>./configure</userinput> with any arguments it might need:</para>
+
+<para><screen>&rootprompt;<userinput>./configure <replaceable>[... arguments ...]</replaceable></userinput></screen></para>
+
+ <para>Executing</para>
+
+
+ <para>
+<indexterm><primary>make</primary></indexterm>
+ <screen>&rootprompt;<userinput>make</userinput></screen></para>
+
+ <para>will create the binaries. Once it is successfully
+ compiled you can use</para>
+
+<para><screen>&rootprompt;<userinput>make install</userinput></screen></para>
+
+ <para>to install the binaries and manual pages. You can
+ separately install the binaries and/or man pages using</para>
+
+<para><screen>&rootprompt;<userinput>make installbin
+</userinput></screen></para>
+
+ <para>and</para>
+
+ <para><screen>&rootprompt;<userinput>make installman
+ </userinput></screen></para>
+
+ <para>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 <quote>.old</quote> extension. You
+ can go back to the previous version with</para>
+
+<para><screen>&rootprompt;<userinput>make revert
+</userinput></screen></para>
+
+ <para>if you find this version a disaster!</para>
+
+ <sect2>
+ <title>Compiling Samba with Active Directory Support</title>
+
+ <para>In order to compile Samba with ADS support, you need to have installed
+ on your system:</para>
+ <itemizedlist>
+
+ <listitem><para>The MIT or Heimdal Kerberos development libraries
+ (either install from the sources or use a package).</para></listitem>
+
+ <listitem><para>The OpenLDAP development libraries.</para></listitem>
+
+ </itemizedlist>
+
+ <para>If your Kerberos libraries are in a non-standard location, then
+ remember to add the configure option
+ <option>--with-krb5=<replaceable>DIR</replaceable></option>.</para>
+
+ <para>After you run configure, make sure that
+ <filename>include/config.h</filename> it generates contain lines like
+ this:</para>
+
+<para><programlisting>
+#define HAVE_KRB5 1
+#define HAVE_LDAP 1
+</programlisting></para>
+
+ <para>If it does not, configure did not find your KRB5 libraries or
+ your LDAP libraries. Look in <filename>config.log</filename> to figure
+ out why and fix it.</para>
+
+ <sect3>
+ <title>Installing the Required Packages for Debian</title>
+
+ <para>On Debian, you need to install the following packages:</para>
+ <para>
+ <itemizedlist>
+ <listitem>libkrb5-dev</listitem>
+ <listitem>krb5-user</listitem>
+ </itemizedlist>
+ </para>
+ </sect3>
+
+ <sect3>
+ <title>Installing the Required Packages for Red Hat Linux</title>
+
+ <para>On Red Hat Linux, this means you should have at least: </para>
+ <para>
+ <itemizedlist>
+ <listitem>krb5-workstation (for kinit)</listitem>
+ <listitem>krb5-libs (for linking with)</listitem>
+ <listitem>krb5-devel (because you are compiling from source)</listitem>
+ </itemizedlist>
+ </para>
+
+ <para>in addition to the standard development environment.</para>
+
+ <para>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.</para>
+
+ </sect3>
+
+ <sect3>
+ <title>SuSE Linux Package Requirements</title>
+
+ <para>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.
+ </para>
+
+ <para>SuSE Linux Samba RPMs support Kerberos. Please refer to the documentation for
+ your SuSE Linux system for information regarding 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.
+ </para>
+
+ </sect3>
+
+ </sect2>
+
+</sect1>
+
+<sect1>
+ <title>Starting the &smbd; and &nmbd;</title>
+
+
+ <para>
+ <indexterm><primary>inetd</primary></indexterm>
+ You must choose to start &smbd; and &nmbd; either
+ as daemons or from <application>inetd</application>. Don't try
+ to do both! Either you can put them in <filename>
+ inetd.conf</filename> and have them started on demand
+ by <application>inetd</application> or <application>xinetd</application>,
+ or you can start them as
+ daemons either from the command line or in <filename>
+ /etc/rc.local</filename>. 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.</para>
+
+ <para>The main advantage of starting &smbd;
+ and &nmbd; using the recommended daemon method
+ is that they will respond slightly more quickly to an initial connection
+ request.</para>
+
+ <sect2>
+ <title>Starting from inetd.conf</title>
+
+ <indexterm><primary>inetd</primary></indexterm>
+
+ <note>
+ <para>The following will be different if
+ you use NIS, NIS+ or LDAP to distribute services maps.</para>
+ </note>
+
+ <para>Look at your <filename>/etc/services</filename>.
+ What is defined at port 139/tcp? If nothing is defined,
+ then add a line like this:</para>
+
+ <para><programlisting>netbios-ssn 139/tcp</programlisting></para>
+
+ <para>Similarly for 137/udp, you should have an entry like:</para>
+
+ <para><programlisting>netbios-ns 137/udp</programlisting></para>
+
+ <para>Next, edit your <filename>/etc/inetd.conf</filename>
+ and add two lines like this:</para>
+
+ <para><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
+ </programlisting></para>
+
+ <para>The exact syntax of <filename>/etc/inetd.conf</filename>
+ varies between UNIXes. Look at the other entries in inetd.conf
+ for a guide. </para>
+
+ <para>
+ <indexterm><primary>xinetd</primary></indexterm>
+ Some distributions use xinetd instead of inetd. Consult the
+ xinetd manual for configuration information.</para>
+
+ <note><para>Some UNIXes already have entries like netbios_ns
+ (note the underscore) in <filename>/etc/services</filename>.
+ You must edit <filename>/etc/services</filename> or
+ <filename>/etc/inetd.conf</filename> to make them consistent.
+ </para></note>
+
+ <note><para>
+ <indexterm><primary>ifconfig</primary></indexterm>
+ On many systems you may need to use the
+ <smbconfoption><name>interfaces</name></smbconfoption> option in &smb.conf; to specify the IP
+ address and netmask of your interfaces. Run
+ <application>ifconfig</application>
+ as root if you do not know what the broadcast is for your
+ net. &nmbd; tries to determine it at run
+ time, but fails on some UNIXes.
+ </para></note>
+
+ <warning><para>Many UNIXes only accept around five
+ parameters on the command line in <filename>inetd.conf</filename>.
+ This means you shouldn't use spaces between the options and
+ arguments, or you should use a script and start the script
+ from <command>inetd</command>.</para></warning>
+
+ <para>Restart <application>inetd</application>, perhaps just send
+ it a HUP. </para>
+
+ <screen>
+ &rootprompt;<userinput>killall -HUP inetd</userinput>
+ </screen>
+
+ </sect2>
+
+ <sect2>
+ <title>Alternative: Starting &smbd; as a Daemon</title>
+
+
+ <para>
+ <indexterm><primary>daemon</primary></indexterm>
+ To start the server as a daemon, you should create
+ a script something like this one, perhaps calling
+ it <filename>startsmb</filename>.</para>
+
+ <smbfile name="startsmb.sh">
+ <para><programlisting>
+ #!/bin/sh
+ /usr/local/samba/bin/smbd -D
+ /usr/local/samba/bin/nmbd -D
+ </programlisting></para>
+ </smbfile>
+
+ <para>Make it executable with <command>chmod
+ +x startsmb</command></para>
+
+ <para>You can then run <command>startsmb</command> by
+ hand or execute it from <filename>/etc/rc.local</filename>.
+ </para>
+
+ <para>To kill it, send a kill signal to the processes
+ &nmbd; and &smbd;.</para>
+
+ <note><para>If you use the SVR4 style init system,
+ you may like to look at the <filename>examples/svr4-startup</filename>
+ script to make Samba fit into that system.</para></note>
+ </sect2>
+</sect1>
+
+</chapter>