SAMBA Installation mit Qellcodes
Kompilieren:
Nach dem sie sich die Quellcodes von Samba,. woher auch immer, besorgt haben, muß die komprimierte Datei entpackt werden. Nehmen wir an, ein File “samba-2.0.7.tar.gz [1]” liegt im Verzeichnis “/tmp”
cd /tmp
tar -xvzf /tmp/samba-2.0.7.tar.gz
tar entpackt die Dateien in ein neues Verzeichnis “samba-2.0.7”, in dem sich weitere Unterverzeichnisse befinden, die für uns z. Z. weniger von Bedeutung sind.
Alle weiteren Arbeiten werden im Verzeichnis “/sources” (/tmp/samba-2.0.7/sources) ausgeführt.
Um seine Aufgaben, entsprechend der verwendeten Distribution (o. UNIX), richtig ausführen zu können, benötigt der Compiler (gcc)[2] eine ganze Menge Informationen. Diese Informationen, über die Zielverzeichnisse von Samba, evtl. benötigte Systemdateien oder Informationen wie Samba sich beim Start oder wären des Betriebs verhalten soll, stehen im sogenannten Makefile.
Sie müssen das “Makefile” natürlich nicht selber erstellen oder von Hand ändern. Das übernimmt GNU-autoconf mit dem Aufruf “./configure”.
Mit “./configure --help” erhält man eine Liste von Parametern, die configure beim erstellen des Makelies übergeben werden können. Kompliziert, wird es, wenn sie ein bereits bestehendes Samba updaten müssen. Hier muß auf eine korrekten Pfatangabe geachtet werden. Wen ein neuer Sambaserver aufgesetzt werden soll habe sie freie Hand.
cd /tmp/samba-2.0.7/sources
./configure
Nachdem das Makefile erstellt wurde, kann mit dem eigentlichen Kompilieren begonnen werden.
make
Jetzt haben wir die lang ersehnten Binärfiles vorliegen. Aber noch nicht da, wo sie hin gehören. Also kopieren wir die Dateien in die vorbestimmten Verzeichnisse.
make install
Im Verzeichnis “/usr/local/samba” sollten jetzt die Binärdateien von Samba liegen. Um Samba starten zu können, muß eine Konfiguratinsdatei “smb.conf” erstellt werden. Im, zuvor erstellten Quelldir “/tmp/samba-2.0.7/examples” liegt eine bereits erstellte “smb.conf.default” , die nur noch in’s Verzeichnis “/usr/local/samba/lib” kopiert werden muß.
cp /tmp/samba-2.0.7/examples/smb.conf.default /usr/local/samba/lib/smb.conf
Mehr über die einzelnen Parameter in “smb.conf” erfahren sie unter Einrichtung
Anschließend müssen folgende Eintrage in “/etc/services [4]” überprüft werden:
vi /etc/services
netbios-ns 137/tcp # NETBIOS Name Service
netbios-ns 137/udp
netbios-dgm 138/tcp # NETBIOS Datagram Service
netbios-dgm 138/udp
netbios-ssn 139/tcp # NETBIOS session service
netbios-ssn 139/udp
Wen nicht vorhanden , müssen diese noch eingetragen werden. Mit <Einf> wechselt man in den Eingabemodus. <Esc>,<:> und <q> beendet “vi” ohne die Datei zu speichern. <Esc>,<Z> und<Z> beendet “vi” mit dem Abspeichern der geöffneten Datei. Wer es “einfacher” mag verwendet “mc”.
Starten:
Bei vorkompilierten Paketen (rpm oder deb) werden währen der Installation die Konfigurations- und “““Startdateien” automatisch angelegt. Da wir hier einen anderen Weg gehen, müssen jetzt noch ein Startskript (z.B. smb.init) angelegt werden. Fertige Skripte liegen unter “/tmp/samab-2.0.7/packaging/meine_Distribution. Hier ein Beispiel :
#!/bin/sh
#
if [ ! -d /usr/bin ]; then
echo "The /usr file system is not mounted."
exit 1
# Start/stop processes required for samba server
case "$1" in
'start')
echo "Starting Samba"
/usr/local/samba/bin/smbd -D
/usr/local/samba/bin/nmbd -D
echo "Done."
;;
'stop')
killall -TERM smbd
killall -TERM nmbd
;;
*)
echo "Usage: /etc/init.d/samba.init [ start | stop ]"
;;
esac
exit 0
Dieses Skript muß ins Verzeichnis “/.../init.d” kopiert werden z.B.:
cp /tmp/samba-2.0.7/packagin/RedHat/smb.init /etc/rc.d/init.d/
Um das Skript beim Start ausführen zu lassen, müssen für die verschiedenen Runlevel [7], Links angelegt werden. Das Verzeichnis für Links zum Runlevel 3 heißt z.B. “/.../rc3.d”. Diese liegen bei den verschiedenen Distris auch an verschiedenen Orten (RH: “/etc/rc.d/rc3.d , Debian : “/etc/rc3.d”). Hier werden Links zum Start von Samba in Runlevel 3 und 4 (bei RedHat) angelegt
ln -s /tmp/samba-2.0.7/packaging/RedHat/smb.init /etc/rc.d/rc3.d/K01samba
ln -s /tmp/samba-2.0.7/packaging/RedHat/smb.init /etc/rc.d/rc3.d/S99samba
ln -s /tmp/samba-2.0.7/packaging/RedHat/smb.init /etc/rc.d/rc4.d/K01samba
ln -s /tmp/samba-2.0.7/packaging/RedHat/smb.init /etc/rc.d/rc4.d/S99samba
Das läßt sich natürlich auch unter “mc” bewerkstelligen.
Zu bedenken ist, daß sich bei so viel Handarbeit leicht Fehler einschleichen können. Wen wir dies ausschließen, sollte SAMBA beim nächsten Systemstart geladen werden.
Natürlich kann SAMBA zu Testzwecken auch “von Hand” gestartet werden:
/usr/local/samba/bin/smbd -D # startet SMB-Dämon
/usr/local/samba/bin/nmbd -D # startet netbios(Name-Server)-Dämon
killall smbd # beendet SMB
killall nmbd # beendet netbios-name-server
“smbd -h” bzw. “nmbd -h” gibt eine Liste mit interessanten Sartparametern zu den Dämonen aus.
[1] auch die Dateiendung “tgz” ist gängig (ein Tape-Archivierer-File mit gzip komprimiert)
[2] Kompiler ist ein Programm, das die Quellencodes der Programmiersprache (z.B. c++), in einen für den Computer lesbaren Code (Binär Dateien) umwandelt
[3] “./” sagt dem Unixsystem das der Befehl im aktuellen Verzeichnis ausgeführt werden soll
[4] hier wird den System mitgeteilt, welcher Dienst welchen Port benutzt
[5] je mach verwendeter Distri liegt hier einweiteres Unterverzeichnis (z.B. /tmp/samba-2.0.7/packaging/RedHat)
[6] “:::/init.d/” liegt nicht bei allen Distris am selben Ort (RedHat :/etc/rc.d/init.d Debian: /etc/init.d)
[7] Runlevel 0 : halt ; 1: Singel-User ; 2: Multi-User ohne NFS ; 3: Multi-User ; 4: mit X-Windows ; 5: frei ; 6: reboot