Build Samba from Source: Difference between revisions
Mmuehlfeld (talk | contribs) (Face-lifting the page (structure, formattings, text changes, remove unneccessary text, etc.), also adapting the page to fit to all Samba builds (not only Samba AD DC)) |
Mmuehlfeld (talk | contribs) m (Updated link) |
||
(39 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
= Introduction = |
= Introduction = |
||
Most users are running [[Distribution-specific_Package_Installation|packages shipped with their distribution]] or from 3rd parties, such as SerNet ([http://www.samba.plus Samba+]/[http://www.samba.plus/older-packages/ Enterprise]). However, in some situations you decide to compile Samba yourself, like |
|||
This document describes how to build Samba from source. |
|||
* outdated packages are shipped with your distribution |
|||
* no packages are available for your distribution or OS |
|||
* you want to apply a patch from a developer to fix a problem before a new version is released |
|||
Compiling Samba requires only a few steps: |
|||
It can be used for any kind of Samba installation (Samba AD DC, Member Server, Samba PDC, etc.). |
|||
* Install all dependencies. See [[Package Dependencies Required to Build Samba]]. |
|||
* Download the sources from [https://www.samba.org samba.org] |
|||
* Extract the source package |
|||
* Run |
|||
:<code>./configure</code> |
|||
:<code>make</code> |
|||
:<code>sudo make install</code> |
|||
You can run most of the required steps in this documentation without root privileges. If root permissions are required, the command is prefixed with <code>sudo</code>. Please see the <code>sudo (8)</code> manual page and your distribution documentation how to set up <code>sudo</code>. |
|||
The following documentation is valid for every type of Samba installation, like an Active Directory (AD) domain controller (DC), a domain member (AD and NT4 domain), an NT4 PDC, and standalone server. |
|||
Line 11: | Line 25: | ||
= Samba Operating System Requirements = |
= Samba Operating System Requirements = |
||
To build Samba, install all required libraries and tools first. See [[Operating_System_Requirements|Operating System Requirements]]. |
|||
See [[OS_Requirements|OS Requirements]]. |
|||
Line 19: | Line 33: | ||
= Obtaining Samba = |
= Obtaining Samba = |
||
== Stable |
== Stable Version (Recommended) == |
||
Always download the latest version of Samba from https://www.samba.org/. |
|||
Samba maintains three series of minor versions. For a maximum of security and stability, the Samba team recommends that you only install the latest available version of a series. Older versions do not contain the latest bug and security fixes. For further information, see [[Samba_Release_Planning|Samba Release Planning]]. |
|||
It is always recommended that you install the latest version of the [[Samba_Release_Planning#Current_Stable_Release|current stable release]]. If you require to choose a previous series, always choose the last version out of the [[Samba_Release_Planning#Maintenance_Mode|Maintainance Mode series]] or at least from the [[Samba_Release_Planning#Security_Fixes_Only_Mode|Security Fixes Only Mode]]. Older version may not contain all improvements, bug- and security fixes. Also if you require help and ask e. g. on the [https://lists.samba.org/mailman/listinfo/samba Samba Mailing List], you typically will be told to try a recent version, to ensure that the problem isn't fixed in the meantime. |
|||
{{Imbox |
|||
Further information about Samba Release Plannings and Supported Release Lifetime, you can find at the [[Samba_Release_Planning|Samba Release Planning]] page. |
|||
| type = note |
|||
| text = In case if you are asking for help on the [https://lists.samba.org/mailman/listinfo/samba Samba Mailing List] and not running the latest version, the list members usually advice you to update your installation first to verify that the bug has not been fixed in the meantime. |
|||
}} |
|||
To download, use a tool like <code>wget</code>. For example: |
|||
$ wget <nowiki>https://download.samba.org/pub/samba/stable/samba-x.y.z.tar.gz</nowiki> |
|||
== Development versions == |
|||
=== samba-master === |
|||
== Development Versions == |
|||
'''Warning: Never install a development version in production! It may contain untested features and can cause damages to your installation! Development releases are for testing purposes only!''' |
|||
'''Do not use a development version in production!''' |
|||
„samba-master“ contains the source of the [[Samba_Release_Planning#Upcoming_Release|upcomming release series]]. |
|||
To download a development version, use <code>git</code> to clone the repository. For details, see [[Using Git for Samba Development]]. |
|||
To download the latest samba-master repository, run |
|||
Before a new major version is released, the Samba team publishes release candidates for testing purposes. You can download release candidates from https://download.samba.org/pub/samba/rc/ |
|||
$ git clone git://git.samba.org/samba.git samba-master |
|||
alternatively: |
|||
$ git clone http://gitweb.samba.org/samba.git samba-master |
|||
=== Development version of a specific branch === |
|||
= Extracting the Source Package = |
|||
The v*-test branches contain the latest changes and patches since the last official release of that source tree. |
|||
To extract the downloaded source package, run: |
|||
The following example demonstrate the checkout of the latest sources of Samba 4.1, scheduled for the next 4.1.x release: |
|||
$ tar -zxf samba-x.y.z.tar.gz |
|||
$ git clone -b v4-1-test git://git.samba.org/samba.git samba-v4-1-test |
|||
alternatively: |
|||
$ git clone -b v4-1-test http://git.samba.org/samba.git samba-v4-1-test |
|||
= configure = |
|||
Change into the directory with the extracted sources: |
|||
$ cd samba-x.y.z/ |
|||
The <code>configure</code> script is located in the root of the sources directory. The main purpose of the script is to create a <code>Makefile</code> which is used by the command <code>make</code>. The <code>configure</code> script enables you to set various options, like installation paths. If you do not want to [[#Customizing_the_Configure_Options|customize]] any paths, and enable or disable parts of Samba, run the following command without any option: |
|||
$ ./configure |
|||
If the command fails, read the error message and fix the problem. One common problem are missing dependencies. For details, see [[Operating_System_Requirements|Operating System Requirements]]. |
|||
The following example shows the output, if the <code>configure</code> script cannot find the GnuTLS headers: |
|||
Checking for gnutls >= 1.4.0 and broken versions : not found |
|||
/usr/src/samba-x.y.z/source4/lib/tls/wscript:37: error: Building the AD DC requires |
|||
GnuTLS (eg libgnutls-dev, gnutls-devel) for ldaps:// support and for the BackupKey protocol |
|||
If the <code>configure</code> script exits without an error, you see the following output: |
|||
'configure' finished successfully (1m2.432s) |
|||
Continue with the <code>[[#make|make]]</code> step, if no error has occurred. |
|||
== Customizing the Configure Options == |
|||
While running the <code>configure</code> script without any options is sufficient to build Samba, you can customize installation paths and enable or disable features. To display the list of options, run: |
|||
$ ./configure --help |
|||
The output shows two major kind of options: |
|||
* [[#enable.2Fdisable.2Fwith.2Fwithout_options|--enable/--disable and --with/--without options]] |
|||
* [[#Installation_directories|installation directories]] |
|||
=== enable/disable/with/without Options === |
|||
The <code>configure</code> script provides several <code>--enable-*</code> / <code>-disable-*</code> and <code>--with-*</code> / <code>--without-*</code> options. They allow you to enable and disable features. Each option you can turn to its opposite if you use <code>--enable</code> instead of <code>--disable</code>, <code>--with</code> instead of <code>--without</code>, and the other way around. |
|||
* <u>Example 1:</u> Disable CUPS support (enabled by default): |
|||
--enable-cups |
|||
Build with cups support (default=yes) |
|||
:If you do not require CUPS support, disable the feature passing the <code>--disable-cups</code> option to the <code>configure</code> command: |
|||
$ ./configure ... --disable-cups |
|||
* <u>Example 2:</u> Compile Samba without AD DC capabilities: |
|||
--without-ad-dc |
|||
disable AD DC functionality (enables Samba 4 client and Samba 3 code base). |
|||
: If you build Samba for a host that should not act as an AD DC, you can disable this feature passing the <code>--without-ad-dc</code> option to the <code>configure</code> command: |
|||
$ ./configure ... --without-ad-dc |
|||
* <u>Example 3:</u> Build Samba with debug information: |
|||
$ ./configure ... --enable-debug |
|||
'''Warning: Do not enable or disable features if you have not fully understood the cause of the option! Changing options can prevent your Samba installation from working as expected!''' |
|||
=== Installation Directories === |
|||
If you use the default settings, the binaries, configuration files, libraries, and other files are installed in the <code>/usr/local/samba/</code> directory. This enables you to keep the complete Samba installation in one location. However, you can specify individual paths. For example: |
|||
* To install the daemon binaries like <code>smbd</code> and <code>samba</code> in the <code>/sbin/</code> directory instead of </code>/usr/local/samba/sbin/</code>, run: |
|||
$ ./configure ... --sbindir=/sbin/ |
|||
* To set the default path to the </code>smb.conf</code> file to <code>/etc/samba/</code> instead of </code>/usr/local/samba/etc/</code>, run: |
|||
$ ./configure ... --sysconfdir=/etc/samba/ |
|||
* To store the Samba man pages in the <code>/usr/share/man/</code> directory, run: |
|||
$ ./configure ... --mandir=/usr/share/man/ |
|||
= make = |
|||
To start the compilation, run |
|||
$ make |
|||
The <code>make</code> command is able to run multiple jobs in parallel. For example, to run 2 <code>make</code> sub-tasks at the same time, run: |
|||
$ make -j 2 |
|||
If the compilation exits without an error, you see the following output: |
|||
Waf: Leaving directory `/usr/src/samba-x.y.z/bin' |
|||
'build' finished successfully (9m3.667s) |
|||
= make test (Optional) = |
|||
This optional step runs the Samba self test suite. |
|||
$ make test |
|||
{{Imbox |
|||
| type = note |
|||
| text = You can only run the self test suite, if you built Samba using the <code>--enable-selftest</code> option. |
|||
}} |
|||
= make install = |
|||
To install the compiled software, you require <code>root</code> permissions to write to the destination directories and set the correct permissions. |
|||
To install Samba, run: |
|||
$ sudo make install |
|||
=== Updating a local git repository === |
|||
If the installation exits without an error, you see the following output: |
|||
If you already have downloaded a development source tree via „git“ and want to update it to the latest version, run the following command out of your corresponding git source directory: |
|||
Waf: Leaving directory `/usr/src/samba-x.y.z/bin' |
|||
$ git pull |
|||
'install' finished successfully (18.243s) |
|||
If you receive the following error |
|||
fatal: Unable to create '[...]/.git/index.lock': File exists. |
|||
run |
|||
$ git clean -x -f -d |
|||
= Adding Samba Commands to the $PATH Variable = |
|||
to reset your tree. |
|||
If you built Samba, add the directories containing the commands to the beginning of your <code>$PATH</code> variable. For example: |
|||
export PATH=/usr/local/samba/bin/:/usr/local/samba/sbin/:$PATH |
|||
To permanently update your <code>$PATH</code>, see your distribution's documentation. |
|||
= Compile Samba = |
|||
To build Samba, run the following commands out of the root of your Samba source directory (Only for compiling a Samba 3.x version, run the commands in the subdirectory [...]/source3/): |
|||
$ ./configure |
|||
$ make |
|||
= Upgrading a Self-compiled Samba Installation = |
|||
The above command will setup Samba to install in /usr/local/samba/. |
|||
To update a self-compiled Samba installation, run the same steps like for a new installation while using the same <code>configure</code> options. |
|||
It's recommended to run |
|||
$ ./configure --help |
|||
= Applying a Patch = |
|||
to check out the possible configure options, to adapt your installation. |
|||
Some situations require that you apply a patch to Samba. For example, a bug has been fixed and you you cannot wait until the new Samba version is released. To apply the patch to the Samba sources, run: |
|||
If you are using a development version of Samba or require a build with extra debug information, that may help to diagnose in case of failure, add the following option to „configure“: |
|||
--enable-debug |
|||
* Change into the Samba sources directory. |
|||
To include the Samba selftest („make test“) in the build, add the following option to „configure“: |
|||
$ cd samba-x.y.z/ |
|||
--enable-selftest |
|||
* Download the patch. For example: |
|||
$ wget -O /tmp/patch.txt <nowiki>https://bugzilla.samba.org/attachment.cgi?id=...</nowiki> |
|||
* Apply the patch to the sources: |
|||
$ patch -p 1 < /tmp/patch.txt |
|||
* Recompile and install Samba. See [[Updating_Samba|Updating Samba]]. |
|||
= Install Samba = |
|||
To install Samba, run the following command in your Samba source directory as user „root“ (Only for installing a Samba 3.x version, run the command in the subdirectory [...]/source3/): |
|||
# make install |
|||
= Additional information = |
|||
== Viewing Built Options of an Existing Installation == |
|||
To display the options used to built Samba, run |
|||
= Upgrading a source version = |
|||
$ smbd -b |
|||
See [[Updating_Samba|Updating Samba]]. |
Revision as of 16:33, 27 April 2017
Introduction
Most users are running packages shipped with their distribution or from 3rd parties, such as SerNet (Samba+/Enterprise). However, in some situations you decide to compile Samba yourself, like
- outdated packages are shipped with your distribution
- no packages are available for your distribution or OS
- you want to apply a patch from a developer to fix a problem before a new version is released
Compiling Samba requires only a few steps:
- Install all dependencies. See Package Dependencies Required to Build Samba.
- Download the sources from samba.org
- Extract the source package
- Run
./configure
make
sudo make install
You can run most of the required steps in this documentation without root privileges. If root permissions are required, the command is prefixed with sudo
. Please see the sudo (8)
manual page and your distribution documentation how to set up sudo
.
The following documentation is valid for every type of Samba installation, like an Active Directory (AD) domain controller (DC), a domain member (AD and NT4 domain), an NT4 PDC, and standalone server.
Samba Operating System Requirements
To build Samba, install all required libraries and tools first. See Operating System Requirements.
Obtaining Samba
Stable Version (Recommended)
Always download the latest version of Samba from https://www.samba.org/.
Samba maintains three series of minor versions. For a maximum of security and stability, the Samba team recommends that you only install the latest available version of a series. Older versions do not contain the latest bug and security fixes. For further information, see Samba Release Planning.
In case if you are asking for help on the Samba Mailing List and not running the latest version, the list members usually advice you to update your installation first to verify that the bug has not been fixed in the meantime. |
To download, use a tool like wget
. For example:
$ wget https://download.samba.org/pub/samba/stable/samba-x.y.z.tar.gz
Development Versions
Do not use a development version in production!
To download a development version, use git
to clone the repository. For details, see Using Git for Samba Development.
Before a new major version is released, the Samba team publishes release candidates for testing purposes. You can download release candidates from https://download.samba.org/pub/samba/rc/
Extracting the Source Package
To extract the downloaded source package, run:
$ tar -zxf samba-x.y.z.tar.gz
configure
Change into the directory with the extracted sources:
$ cd samba-x.y.z/
The configure
script is located in the root of the sources directory. The main purpose of the script is to create a Makefile
which is used by the command make
. The configure
script enables you to set various options, like installation paths. If you do not want to customize any paths, and enable or disable parts of Samba, run the following command without any option:
$ ./configure
If the command fails, read the error message and fix the problem. One common problem are missing dependencies. For details, see Operating System Requirements.
The following example shows the output, if the configure
script cannot find the GnuTLS headers:
Checking for gnutls >= 1.4.0 and broken versions : not found /usr/src/samba-x.y.z/source4/lib/tls/wscript:37: error: Building the AD DC requires GnuTLS (eg libgnutls-dev, gnutls-devel) for ldaps:// support and for the BackupKey protocol
If the configure
script exits without an error, you see the following output:
'configure' finished successfully (1m2.432s)
Continue with the make
step, if no error has occurred.
Customizing the Configure Options
While running the configure
script without any options is sufficient to build Samba, you can customize installation paths and enable or disable features. To display the list of options, run:
$ ./configure --help
The output shows two major kind of options:
enable/disable/with/without Options
The configure
script provides several --enable-*
/ -disable-*
and --with-*
/ --without-*
options. They allow you to enable and disable features. Each option you can turn to its opposite if you use --enable
instead of --disable
, --with
instead of --without
, and the other way around.
- Example 1: Disable CUPS support (enabled by default):
--enable-cups Build with cups support (default=yes)
- If you do not require CUPS support, disable the feature passing the
--disable-cups
option to theconfigure
command:
$ ./configure ... --disable-cups
- Example 2: Compile Samba without AD DC capabilities:
--without-ad-dc disable AD DC functionality (enables Samba 4 client and Samba 3 code base).
- If you build Samba for a host that should not act as an AD DC, you can disable this feature passing the
--without-ad-dc
option to theconfigure
command:
$ ./configure ... --without-ad-dc
- Example 3: Build Samba with debug information:
$ ./configure ... --enable-debug
Warning: Do not enable or disable features if you have not fully understood the cause of the option! Changing options can prevent your Samba installation from working as expected!
Installation Directories
If you use the default settings, the binaries, configuration files, libraries, and other files are installed in the /usr/local/samba/
directory. This enables you to keep the complete Samba installation in one location. However, you can specify individual paths. For example:
- To install the daemon binaries like
smbd
andsamba
in the/sbin/
directory instead of /usr/local/samba/sbin/, run:
$ ./configure ... --sbindir=/sbin/
- To set the default path to the smb.conf file to
/etc/samba/
instead of /usr/local/samba/etc/, run:
$ ./configure ... --sysconfdir=/etc/samba/
- To store the Samba man pages in the
/usr/share/man/
directory, run:
$ ./configure ... --mandir=/usr/share/man/
make
To start the compilation, run
$ make
The make
command is able to run multiple jobs in parallel. For example, to run 2 make
sub-tasks at the same time, run:
$ make -j 2
If the compilation exits without an error, you see the following output:
Waf: Leaving directory `/usr/src/samba-x.y.z/bin' 'build' finished successfully (9m3.667s)
make test (Optional)
This optional step runs the Samba self test suite.
$ make test
You can only run the self test suite, if you built Samba using the --enable-selftest option. |
make install
To install the compiled software, you require root
permissions to write to the destination directories and set the correct permissions.
To install Samba, run:
$ sudo make install
If the installation exits without an error, you see the following output:
Waf: Leaving directory `/usr/src/samba-x.y.z/bin' 'install' finished successfully (18.243s)
Adding Samba Commands to the $PATH Variable
If you built Samba, add the directories containing the commands to the beginning of your $PATH
variable. For example:
export PATH=/usr/local/samba/bin/:/usr/local/samba/sbin/:$PATH
To permanently update your $PATH
, see your distribution's documentation.
Upgrading a Self-compiled Samba Installation
To update a self-compiled Samba installation, run the same steps like for a new installation while using the same configure
options.
Applying a Patch
Some situations require that you apply a patch to Samba. For example, a bug has been fixed and you you cannot wait until the new Samba version is released. To apply the patch to the Samba sources, run:
- Change into the Samba sources directory.
$ cd samba-x.y.z/
- Download the patch. For example:
$ wget -O /tmp/patch.txt https://bugzilla.samba.org/attachment.cgi?id=...
- Apply the patch to the sources:
$ patch -p 1 < /tmp/patch.txt
- Recompile and install Samba. See Updating Samba.
Additional information
Viewing Built Options of an Existing Installation
To display the options used to built Samba, run
$ smbd -b