Das Grund System ist installiert und das Netzwerk funktioniert. Jetzt geht es daran das System einzurichten.
Für das weitere vorgehen braucht man die Namensauflösung. Von seinem Provider erhält man zusammen mit den IP Adressen und dem Gateway auch DNS Server die man verwenden kann. Diese tragen wir in die Datei /etc/resolv.conf ein. Sollte die Datei noch nicht existieren, darf man sie einfach anlegen. Für den Anfang reicht es wenn die resolv.conf folgenden Eintrag aufweist:
nameserver xxx.xxx.xxx.xxx
Später passt man die resolv.conf meistens noch einmal an die endgültigen Gegebenheiten an. Nun können wir uns dem Port System von FreeBSD zuwenden. Es dienst der Installation und Wartung des Grundsystems genauso wie der der Programme. Ich finde das System ausgereifter als das RPM System von Red Hat, aber das ist rein subjektiv. Objektiv betrachtet dürften die Systeme sehr ähnlich sein.
Als erstes brauchen wir das aktuelle Portsystem auf dem Server. Mittels "pkg_add -r cvsup-without-gui" holt man sich den Client auf den Server. Weiter wird die Konfiguration benötigt. Diese liegt normalerweise in der Datei /usr/src/stable-supfile, und hat z.b. folgenden Inhalt:
*default host=cvsup2.de.FreeBSD.org
*default base=/usr
*default prefix=/usr
*default release=cvs tag=RELENG_5_2
*default delete use-rel-suffix
default compress
src-all
ports-all tag=.
In der Datei wird unter anderem festgelegt, von welchem Server die Aktuellen Sourcen geholt werden sollen. Eine genaue Beschreibung ist im FreeBSD Online Handbuch zu finden, dessen Lektüre ich nur empfehlen kann
. Für die Bekwemlichkeit verwende ich normalerweise noch ein Script "cvsrun" das den Aufruf von cvsup mit Parametern macht und eine Kopfzeile für den e-Mail Versand erzeugt. Das ist vor allem später interessant, wenn man das Aktualisieren der Sourcen automatisieren möchte. Das Script lege ich unter /usr/local/bin ab.
#!/bin/sh
echo Subject: `hostname` cvsup run output
/usr/local/bin/cvsup -g -L 2 /usr/src/stable-supfile
Jetzt hat man alles zusammen um sich die Sourcen zu holen. Mit dem Befehl "/usr/local/bin/cvsrun" startet man das Aktualisieren der Sourcen. Die kann je nach Verbindung etwas Dauern. Auf jeden Fall sollte man für den ersten lauf ca. 1 Stunde einplanen. Immerhin werden ca. 920 MB Daten auf das System geholt. Wer möchte kann sich in cron die folgenden Zeilen eintragen:
### Jeden Morgen die System Sourcen Aktualisieren
45 4 /usr/local/bin/cvsrun
Dann werden jeden Morgen um 04:45 die Sourcen aktualisiert, und das Log davon an root per mail gesendet. Damit das Portsystem fertig aufgesetzt und man kann anfangen das System anzupassen. Für die Verwaltung und Aktualisierung der Installierten Programme sollte man aus dem Port System "portupgrade" installieren. Dazu wechselt man in das Verzeichnis /usr/ports/sysutils/portupgrade und mach hier ein "make install clean". Über das Portsystem wird jetzt automatisch der Source von dem Programm aus dem Internet geholt, das Programm Kompiliert und dann Installiert. Auch werden alle Pakete von denen portupgrade abhängig ist mit installiert. Bei portupgrade ist dies ruby und ruby-bdb.
Widmen wir uns der Shell. root hat momentan csh als Shell. Ich bevorzuge aber die BASH2 als Shell. Also installieren wir als nächstes die bash über das Portsystem. Nicht immer weis man wo in den Ports das Programm das man sucht "versteckt" ist. Dazu kann man in dem Porttree suchen. Mittels "make search name=bash" suchen wir ein Programm mit dem Namen bash. Als Ergebnis bekommt man eine Liste von 3 Programmen, wobei in unserem Fall das 3. das gesuchte ist. Unter "Path:" ist der Pfad zum dem Port gelistet. Nachdem man in das Verzeichnis gewechselt hat, führt man wieder "make install clean" zum installieren aus. Nun hat man auch bash als Shell zur Verfügung. Ich möchte sie aber auch als Standartshell haben. Den root User lasse ich aber die csh für den Fall das die bash nicht mehr startet. FreeBSD hat standardmäßig noch einen 2. root Account mit dem Namen toor. Diesen aktiviere ich und ändere bei ihm die Shell ab. Erst weise ich dem toor User mittels "passwd toor" ein Passwort zu, um dann mit "chsh toor" die Userinformationen zu ändern. Unter Shell: trägt man "/usr/local/bin/bash" ein um dem User die bash als Standartshell zu setzen. Wenn man über SSH arbeitet benutzt man ab jetzt nicht mehr "su -" für den root zugriff sondern "su - toor". Die bash alleine ist für mich aber nur die halbe Miete. Ich passe mir die bash noch ein bisschen an. Dazu füge ich an die Datei /root/.profile als letzte Zeile ". .bashrc" ein, und erstelle die beiden Dateien /root/.bashrc und /root/.inputrc. Der Inhalt von .bashrc :
PS1='\h:\w # '; export PS1
PS1='(\[$(tput md)\]\t <\w>\[$(tput me)\]) $(echo $?) \$ '
LS_OPTIONS='-a -N --color=tty -T 0'; export LS_OPTIONS
PACKAGES=''; export PACKAGES
alias ls='ls -G '
alias l='ls -Gal '
alias o='less -S '
alias ..='cd ..'
alias ...='cd ../..'
alias p='ps auxww'
alias vlog='cd /var/log'
alias pg='ps auxww | grep -v grep | grep '
alias md='mkdir '
Der Inhalt von .inputrc :
# My ~/.inputrc file is in -*- text -*- for easy editing with Emacs.
#
# Notice the various bindings which are conditionalized depending
# on which program is running, or what terminal is active.
#
# In all programs, all terminals, make sure this is bound.
"\C-x\C-r": re-read-init-file
# Hp terminals (and some others) have ugly default behaviour for C-h.
"\C-h": backward-delete-char
"\e\C-h": backward-kill-word
"\C-xd": dump-functions
# In xterm windows, make the arrow keys do the right thing.
$if TERM=xterm
"\e[A": history-search-backward
"\e[B": history-search-forward
#"\e[A": previous-history
#"\e[B": next-history
"\e[C": forward-char
"\e[D": backward-char
# alternate arrow key prefix
"\eOA": previous-history
"\eOB": next-history
"\eOC": forward-char
"\eOD": backward-char
# Under Xterm in Bash, we bind local Function keys to do something useful.
$if Bash
"\e[11~": "Function Key 1"
"\e[12~": "Function Key 2"
"\e[13~": "Function Key 3"
"\e[14~": "Function Key 4"
"\e[15~": "Function Key 5"
# I know the following escape sequence numbers are 1 greater than
# the function key. Don't ask me why, I didn't design the xterm terminal.
"\e[17~": "Function Key 6"
"\e[18~": "Function Key 7"
"\e[19~": "Function Key 8"
"\e[20~": "Function Key 9"
"\e[21~": "Function Key 10"
$endif
$endif
# For Bash, all terminals, add some Bash specific hacks.
$if Bash
"\C-xv": show-bash-version
"\C-x\C-e": shell-expand-line
# Here is one for editing my path.
"\C-xp": "$PATH\C-x\C-e\C-e\"\C-aPATH=\":\C-b"
# Make C-x r read my mail in emacs.
# "\C-xr": "emacs -f rmail\C-j"
$endif
# For FTP, different hacks:
$if Ftp
"\C-xg": "get \M-?"
"\C-xt": "put \M-?"
"\M-.": yank-last-arg
$endif
" ": self-insert
Damit ist das auch der 2. Teil abgeschlossen. Ab jetzt geht es darum bestimmte Serverprogramme zu installieren und richtig zu konfigurieren. Der nächsten Artikel werden daher immer ein bestimmtes Programm zum Thema haben. Die Dateien cvsrun, .bashrc und .inputrc gibt es auch unter Downloads zum herunterladen.