Kapitel 36. Wie man Samba kompiliert

Jelmer R. Vernooij

Samba Team

John H. Terpstra

Samba Team

Andrew Tridgell

Samba Team

Stefan G. Weichinger

Deutsche Übersetzung
German Samba-3-Docs-Translation Team

22 May 2001

18 March 2003

Inhaltsverzeichnis

Der Zugriff auf den Source-Code von Samba über Subversion
Einführung
Der Subversion-Zugriff auf samba.org
Zugriff auf die Samba-Quelltexte mit rsync und ftp
Überprüfen der PGP-Signatur von Samba
Kompilieren der Binärdateien
Das Kompilieren von Samba mit Active Directory Support
Starten von smbd und nmbd
Starten aus der inetd.conf
Alternative: smbd als Daemon starten

Der Source-Text von Samba kann von der Samba-Website bezogen werden. Um eine Entwicklerversion zu beziehen, können Sie Samba mit CVS oder rsync herunterladen.

Der Zugriff auf den Source-Code von Samba über Subversion

Einführung

Samba wird in einer offenen Umgebung entwickelt. Die Entwickler benutzen Subversion (SVN), um mit „checkin“ (das auch als „commit“ bekannt ist) neuen Quelltext einzufügen. Sie können auf die verschiedenen SVN-Zweige von Samba mit anonymem SVN zugreifen werden, wenn Sie die Anleitungen befolgen, die in diesem Kapitel enthalten sind.

Dieses Kapitel ist eine geänderte Fassung der Instruktionen, die Sie auf der Samba-Website finden.

Der Subversion-Zugriff auf samba.org

Die Maschine samba.org führt ein offen zugängliches Subversion-Repository aus. Damit ermöglicht sie den Zugriff auf den Quelltext mehrerer Packages, einschließlich Samba, rsync, distcc, ccache und jitterbug. Es gibt zwei hauptsächliche Arten, um auf den Subversion-Server auf diesem Host zuzugreifen:

Zugriff via SVNweb

Sie können unter Verwendung Ihres bevorzugten WWW-Browsers auf den Quelltext zugreifen. Auf diese Weise können Sie sowohl auf einzelne Dateien im Repository als auch auf den Verlauf der Revisionen und die Commit-logs der einzelnen Dateien zugreifen. Sie können damit auch diff-Listings zwischen zwei Versionen erstellen.

Verwenden Sie die URL http://svnweb.samba.org/

Zugriff via Subversion

Sie können auf den Quelltext auch mit einem normalen Subversion-Client zugreifen. Dies gibt Ihnen mehr Kontrolle darüber, was Sie mit dem Repository tun können, und erlaubt Ihnen, ganze Quelltext-Bäume mit checkout abzuholen und sie mittels normaler SVN-Befehle aktuell zu halten. Dies ist die bevorzugte Variante des Zugriffs, wenn Sie ein Entwickler und nicht nur ein gelegentlicher Besucher sind.

Um die Samba-Quelltexte von Subversion herunterladen zu können, brauchen Sie einen Subversion-Client. Ihre Distribution kann einen solchen enthalten, oder Sie laden sich die Quelltexte von http://subversion.tigris.org/ herunter.

Um einen anonymen Zugriff mit Subversion zu erlangen, führen Sie die folgenden Schritte durch. In diesem Beispiel wird angenommen, dass Sie eine Kopie des Samba-Quelltexts haben wollen. Für die anderen Quelltext-Repositories auf diesem System ersetzen Sie einfach den Package-Namen.

Prozedur 36.1. Samba über Subversion beziehen

  1. Installieren Sie eine aktuelle Version von Subversion. Sie brauchen dazu nur eine Kopie des Subversion-Client-Programms.

  2. Führen Sie folgenden Befehl aus:

    svn co svn://svnanon.samba.org/samba/trunk samba.

    Dies legt ein Verzeichnis namens samba an, das den neuesten Samba-Quellcode enthält (üblicherweise den Zweig, der zur nächsten Haupt-Release werden soll). Dies entspricht derzeit dem 3.1-Entwicklungsbaum.

    Subversion-Zweige, die nicht dem TRUNK entsprechen, können Sie durch Anhängen von branches/BRANCH_NAME an die URL auschecken. Eine Liste von Branch-Namen finden Sie auf der „Development“-Seite der Samba-Website. Eine gebräuchliche Anfrage ist die nach dem letzten 3.0-Release-Code. Dies könnte wie folgt geschehen:

    svn co svn://svnanon.samba.org/samba/branches/SAMBA_3_0 samba_3.

  3. Wenn Sie die letzten Code-Änderungen übernehmen wollen, verwenden Sie folgenden Befehl innerhalb des Samba-Verzeichnisses:

    svn update

Zugriff auf die Samba-Quelltexte mit rsync und ftp

pserver.samba.org exportiert auch ungepackte Kopien der meisten Teile des CVS-Baums unter ftp://pserver.samba.org/pub/unpacked und auch mit anonymem rsync unter rsync://pserver.samba.org/ftp/unpacked/. Wir empfehlen, rsync statt ftp zu verwenden. Sehen Sie sich die rsync-Homepage an, um mehr Informationen zu rsync zu erhalten.

Der Nachteil der ungepackten Bäume ist, dass sie kein automatisches „Merging“ von lokalen Änderungen zulassen, wie es CVS tut. Der rsync-Zugriff ist das praktischste Verfahren bei einer frischen Installation.

Überprüfen der PGP-Signatur von Samba

Wir empfehlen, unbedingt die PGP-Signatur jeder Quelltext-Datei vor der Installation zu überprüfen. Selbst wenn Sie die Datei nicht von einem Mirror-Server laden, sollte das Prüfen der PGP-Signatur zum Reflex werden. Viele nutzen heute das GNU-GPG-Package anstelle von PGP. GPG kann statt PGP eingesetzt werden.

Nachdem wir dies geklärt haben, laden Sie nun bitte folgende Dateien aus dem Netz:

$ wget http://us1.samba.org/samba/ftp/samba-2.2.8a.tar.asc
$ wget http://us1.samba.org/samba/ftp/samba-pubkey.asc

Die erste Datei ist die PGP-Signatur für die Samba-Quelltext-Datei; die andere ist der öffentliche Samba-PGP-Schlüssel selbst. Importieren Sie den öffentlichen PGP-Schlüssel mit

$ gpg --import samba-pubkey.asc

und überprüfen Sie die Integrität des Samba-Quelltexts mit:

$ gzip -d samba-2.2.8a.tar.gz
$ gpg --verify samba-2.2.8a.tar.asc

Wenn Sie eine Meldung wie „Good signature from Samba Distribution Verification Key...“ erhalten, ist alles in Ordnung. Die Warnungen bezüglich „trust relationships“ können Sie ignorieren. Ein Beispiel für etwas, das Sie nicht sehen wollen, wäre:

     gpg: BAD signature from „Samba Distribution Verification Key

Kompilieren der Binärdateien

Um die Binärdateien mittels „build“ zu erhalten, führen Sie zuerst das Programm ./configure im Quellverzeichnis aus. Dies sollte Samba automatisch für Ihr Betriebssystem konfigurieren. Sollten Sie darüber hinausgehende Wünsche haben, dann können Sie Folgendes angeben:

root# ./configure --help

So sehen Sie, welche speziellen Optionen aktiviert werden können. Nun können Sie ./configure mit allen gewünschten Agrumenten ausführen:

root# ./configure [... arguments ...]

Das Ausführen von

root# make

wird die Binärdateien erstellen. Sobald diese erfolgreich kompiliert worden sind, können Sie

root# make install

verwenden, um die Binärdateien (= Programme) und Manpages zu installieren. Sie können Programme und Manpages separat installieren:

root# make installbin

und

root# make installman
	

Bitte beachten Sie: Beim Upgrade von einer vorigen Version werden die alten Programme umbenannt, und zwar durch das Anhängen von „.old“. Sie können dann mit

root# make revert

zur alten Version zurückkehren, wenn Sie die neue Version als Desaster empfinden!

Das Kompilieren von Samba mit Active Directory Support

Um Samba mit ADS-Support zu kompilieren, müssen Sie Folgendes auf Ihrem System installiert haben:

  • Die MIT- oder Heimdal-Kerberos-Entwickler-Bibliotheken (entweder selbst kompiliert oder aus einem Package)

  • Die OpenLDAP-Entwickler-Bibliotheken

Wenn Ihre Kerberos-Bibliotheken an einem vom Standard-Verzeichnis abweichenden Ort liegen, fügen Sie die Konfigurationsoption --with-krb5=DIR hinzu.

Nachdem Sie configure ausgeführt haben, prüfen Sie, ob die entstandene Datei include/config.h Zeilen wie diese enthält:

#define HAVE_KRB5 1
#define HAVE_LDAP 1

Falls dem nicht so ist, hat configure Ihre KRB5-Libraries oder LDAP-Libraries nicht gefunden. Konsultieren Sie config.log, um den Grund dafür zu finden und zu beheben.

Die Installation der für Debian erforderlichen Packages

Unter Debian müssen Sie folgende Packages installieren:

  • libkrb5-dev
  • krb5-user

Die Installation der für Red Hat Linux erforderlichen Packages

Unter Red Hat Linux brauchen Sie zusätzlich zur Standard-Entwicklungsumgebung zumindest Folgendes:

  • krb5-workstation (für kinit)
  • krb5-libs (für das Linken)
  • krb5-devel (weil Sie aus den Quellen kompilieren)

Wenn diese Dateien nicht auf Ihrem System installiert sind, sollten Sie die Installations-CDs überprüfen, um herauszufinden, wo diese Packages zu finden sind, und sie mit einem Werkzeug Ihrer Wahl installieren. Wenn Sie unsicher sind, welches Werkzeug zu verwenden ist, lesen Sie bitte die Red Hat Linux-Dokumentation.

Package-Anforderungen in SuSE Linux

SuSE Linux installiert Heimdal-Packages, die erforderlich sein könnten, um Binary-Packages erstellen zu können. Sie sollten überprüfen, ob diese Entwickler-Bibliotheken auf Ihrem System installiert worden sind.

SuSE Linux-Samba-RPMs unterstützen Kerberos. Bitte sehen sie in die Dokumentation Ihres SuSE Linux-Systems, wenn Sie Informationen zur SuSE-spezifischen Konfiguration brauchen. Außerdem ist SuSE sehr aktiv, was die Pflege von Samba-Packages betrifft, die alle verfügbaren Fähigkeiten von Samba bereitstellen. Sie sollten die Verwendung von SuSE-Samba-Packages in Erwägung ziehen, falls dies möglich ist.

Starten von smbd und nmbd

Sie müssen sich entscheiden, smbd und nmbd entweder als „Daemons“ oder mit inetd zu starten. Versuchen Sie nicht, beides zu tun! Sie können sie entweder in inetd.conf eintragen und bei Bedarf von inetd oder xinetd starten lassen, oder sie als Daemons entweder von der Befehlszeile oder in /etc/rc.local starten. Lesen Sie die Manpages für Details zu den Befehlsoptionen. Lesen Sie im Besonderen den Abschnitt über den Benutzer, den Sie brauchen, um Samba zu starten. In vielen Fällen müssen Sie dazu root sein.

Der hauptsächliche Vorteil des Startens von smbd und nmbd mit der empfohlenen Daemon-Methode ist, dass sie dann etwas schneller auf die erste Verbindungsanfrage reagieren werden.

Starten aus der inetd.conf

Anmerkung

Das Folgende ist unterschiedlich, je nachdem, ob Sie NIS, NIS+ oder LDAP zur Verteilung Ihrer Dienst-Listen verwenden.

Sehen Sie sich /etc/services an. Was ist für Port 139 (TCP) definiert? Wenn nichts definiert ist, fügen Sie eine Zeile wie diese hinzu:

netbios-ssn     139/tcp

Ähnliches gilt für Port 137 (UDP). Sie sollten einen Eintrag haben wie:

netbios-ns	137/udp

Als Nächstes editieren Sie Ihre /etc/inetd.conf und fügen zwei Zeilen wie diese hinzu:

netbios-ssn stream tcp nowait root /usr/local/samba/bin/smbd smbd
		netbios-ns dgram udp wait root /usr/local/samba/bin/nmbd nmbd 
		

Die exakte Syntax von /etc/inetd.conf variiert zwischen den einzelnen UNIX-Varianten. Nehmen Sie sich einfach andere Einträge in der inetd.conf zur Vorlage.

Manche Distributionen verwenden xinetd anstatt von inetd. Konsultieren Sie das xinetd-Manual für Informationen zur Konfiguration.

Anmerkung

Manche UNIX-Varianten haben bereits Einträge wie netbios_ns (beachten Sie den Unterstrich) in /etc/services. Sie müssen /etc/services oder /etc/inetd.conf editieren, um beide konsistent zu halten.

Anmerkung

Auf vielen Systemen müssen Sie eventuell die Option interfaces in smb.conf verwenden, um die IP-Adresse und die Netzmaske Ihrer Netz-Interfaces anzugeben. Führen Sie ifconfig als root aus, wenn Sie die Broadcast-Adresse Ihres Netzes nicht kennen. nmbd versucht diese bei seiner Ausführung zu bestimmen, scheitert aber auf manchen UNIX-Varianten.

Warnung

Viele UNIX-Varianten akzeptieren nur ungefähr fünf Parameter auf der Befehlszeile in inetd.conf. Das bedeutet, dass Sie keine Leerzeichen zwischen Optionen und Argumenten verwenden sollten bzw. dass Sie ein Skript verwenden und dies mit inetd starten sollten.

Starten Sie inetd neu bzw. senden Sie das Signal HUP.

root# killall -HUP inetd

Alternative: smbd als Daemon starten

Um den Server als Daemon zu starten, sollten Sie ein Skript wie das Folgende anlegen, zum Beispiel mit dem Namen startsmb:

		#!/bin/sh
		/usr/local/samba/bin/smbd -D 
		/usr/local/samba/bin/nmbd -D 
		

Machen Sie es mit chmod +x startsmb ausführbar.

Dann können Sie startsmb von Hand oder in der Datei /etc/rc.local starten.

Um die Daemons zu beenden, senden Sie ein KILL-Signal an die Prozesse nmbd und smbd.

Anmerkung

Wenn Sie das init-System in der Art von SVR4 verwenden, wollen Sie vielleicht das Beispiel-Skript examples/svr4-startup lesen, um Samba an Ihr System anzupassen.