diff options
Diffstat (limited to 'docs/Samba3-HOWTO/TOSHARG-Compiling.xml')
-rw-r--r-- | docs/Samba3-HOWTO/TOSHARG-Compiling.xml | 530 |
1 files changed, 530 insertions, 0 deletions
diff --git a/docs/Samba3-HOWTO/TOSHARG-Compiling.xml b/docs/Samba3-HOWTO/TOSHARG-Compiling.xml new file mode 100644 index 0000000000..4473e60fbf --- /dev/null +++ b/docs/Samba3-HOWTO/TOSHARG-Compiling.xml @@ -0,0 +1,530 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> +<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 file from the +<ulink url="http://samba.org/">Samba Website.</ulink> To obtain a development version, +you can download Samba from Subversion or using <command>rsync</command>. +</para> + +<sect1> +<title>Access Samba Source Code via Subversion</title> + + +<sect2> +<title>Introduction</title> + +<para> +<indexterm><primary>Subversion</primary></indexterm> +Samba is developed in an open environment. Developers use a +Subversion to <quote>checkin</quote> (also known as +<quote>commit</quote>) new source code. Samba's various Subversion branches can +be accessed via anonymous Subversion 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/subversion.html">Samba</ulink> web site. +</para> + +</sect2> + +<sect2> +<title>Subversion Access to samba.org</title> + +<para> +The machine samba.org runs a publicly accessible Subversion +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 Subversion server on this host: +</para> + +<sect3> +<title>Access via SVNweb</title> + + +<para> +<indexterm><primary>SVN</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://svnweb.samba.org/">http://svnweb.samba.org/</ulink> +</para> +</sect3> + +<sect3> +<title>Access via Subversion</title> + +<para> +You can also access the source code via a +normal Subversion 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 Subversion commands. This is the +preferred method of access if you are a developer and not +just a casual browser. +</para> + +<para>In order to be able to download the Samba sources off Subversion, you need +a Subversion client. Your distribution might include one, or you can download the +sources from <ulink noescape="1" url="http://subversion.tigris.org/">http://subversion.tigris.org/</ulink>. +</para> + +<para> +To gain access via anonymous Subversion, use the following steps. +</para> + +<procedure> + <title>Retrieving Samba using Subversion</title> + + <step> + <para> + Install a recent copy of Subversion. All you really need is a + copy of the Subversion client binary. + </para> + </step> + + <step> + <para> + Run the command + </para> + + <para> + <userinput>svn co svn://svnanon.samba.org/samba/trunk samba</userinput>. + </para> + + <para> + This will create a directory called <filename>samba</filename> containing the + latest Samba source code (usually the branch that is going to be the next major release). This + currently corresponds to the 3.1 development tree. + </para> + + <para> + Subversion branches other then trunk can be obtained by adding branches/BRANCH_NAME + to the URL you check out. A list of branch 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>svn co svn://svnanon.samba.org/samba/branches/SAMBA_3_0 samba_3</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>svn update</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 Subversion + 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 Subversion 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.20.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.20.tar.gz</userinput> +&prompt;<userinput>gpg --verify samba-3.0.20.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>autogen.sh</primary></indexterm> + After the source tarball has been unpacked, the next step involves + configuration to match Samba to your operating system platform. + If your source directory does not contain the <command>configure</command> script + it is necessary to build it before you can continue. Building of + the configure script requires the correct version of the autoconf + tool kit. Where the necessary version of autoconf is present, + the configure script can be generated by executing the following: +<screen> +&rootprompt; cd samba-3.0.20 +&rootprompt; ./autogen.sh +</screen> + </para> + + + <para> + <indexterm><primary>configure</primary></indexterm> + To build the binaries, 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: +<screen> +&rootprompt;<userinput>./configure --help</userinput> +</screen> +</para> + + <para> + This will help you to see what special options can be enabled. Now execute + <userinput>./configure</userinput> with any arguments it might need: +<screen> +&rootprompt;<userinput>./configure <replaceable>[... arguments ...]</replaceable></userinput> +</screen> + </para> + + <para> + <indexterm><primary>make</primary></indexterm> + Execute the following create the binaries: +<screen> +&rootprompt; <userinput>make</userinput> +</screen> + Once it is successfully compiled you can execute the command shown here to + install the binaries and manual pages: +<screen> +&rootprompt; <userinput>make install</userinput> +</screen> + </para> + + <para> + Some people prefer to install binary files and man pages separately. If this is + your wish, the binary files can be installed by executing: +<screen> +&rootprompt; <userinput>make installbin</userinput> +</screen> + The man pages can be installed using this command: +<screen> +&rootprompt; <userinput>make installman</userinput> +</screen> + </para> + + <para> + Note that if you are upgrading from a previous version of Samba the old + versions of the binaries will be renamed with an <quote>.old</quote> extension. + You can go back to the previous version by executing: +<screen> +&rootprompt; <userinput>make revert</userinput> +</screen> + As you can see from this, building and installing Samba does not need to + result in 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: +<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><para>libkrb5-dev</para></listitem> + <listitem><para>krb5-user</para></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><para>krb5-workstation (for kinit)</para></listitem> + <listitem><para>krb5-libs (for linking with)</para></listitem> + <listitem><para>krb5-devel (because you are compiling from source)</para></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; &nmbd; and &winbindd;</title> + + + <para> + <indexterm><primary>inetd</primary></indexterm> + You must choose to start &smbd;, &winbindd; 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: +<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"/> 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 about 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, + like this: +<screen> +&rootprompt;<userinput>killall -HUP inetd</userinput> +</screen> + </para> + + </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/winbindd +/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> |