BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Teile des Portbaums nicht aktualisieren

Sowohl mit portsnap als auch mit csup ist es möglich, Kategorien des Portbaums nicht zu aktualisieren. Benutzer von portsnap können die Kategorien, die nicht aktualisiert werden sollen, in der /etc/portsnap.conf mit der Option REFUSE angeben:

REFUSE arabic chinese french hebrew hungarian japanese

Benutzer von csup können die Kategorien in einer refuse-Datei aufführen. Diese muss sich im base-Verzeichnis von csup befinden. Dieses wird in der Ports-sup-Datei konfiguriert:

# grep "default base" ports-supfile
*default base=/var/db

Nun kann die refuse-Datei im entsprechenden Verzeichnis angelegt werden:

# vi /var/db/sup/refuse
ports/arabic
ports/chinese
ports/french

Führt man nun das nächste Mal portsnap oder csup aus, werden die angegebenen Teile nicht mehr aktualisiert. Man sollte sich aber bewusst sein, dass ein nicht vollständiger oder nicht vollständig aktualisierter Portbaum offiziell nicht unterstützt wird. Sollte man also irgendwann auf Probleme mit dem Portbaum stossen, sollten die unvollständigen Teile zuerst wieder aktualisiert werden.

 Permalink

DNS Cache verwenden

Auf FreeBSD ist es möglich, DNS Abfragen lokal zwischenzuspeichern. Dazu kann ab FreeBSD 7.0 der nscd verwendet werden, welcher bereits im FreeBSD Basissystem vorhanden ist. Dieser muss zuerst in der /etc/rc.conf aktiviert werden:

# echo 'nscd_enable="YES"' >> /etc/rc.conf

Konfiguriert wird nscd in der /etc/nscd.conf. Falls man den nscd nur zum Zwischenspeichern von DNS Lookups verwenden möchte, kann man alle anderen Dienste auf no stellen:

enable-cache passwd no
enable-cache group no
enable-cache hosts yes
enable-cache services no
enable-cache protocols no
enable-cache rpc no
enable-cache networks n

Danach kann der nscd gestartet werden:

# /etc/rc.d/nscd start

Nun muss noch in der /etc/nsswitch.conf mit dem cache-Schlüsselwort angegeben werden, in welcher Reihenfolge DNS Lookups gemacht werden sollen. In folgendem Beispiel wird immer zuerst der DNS Cache abgefragt.

hosts: cache files dns

Falls man irgendwann die gespeicherten DNS Lookups löschen muss, kann die -i Option von nscd verwendet werden:

# nscd -i host 

Mehr Informationen zu nscd findet man in der Manpage nscd(8) und nscd.conf(5).

Comments (1)  Permalink

UFS Journaling auf neuer Festplatte aktivieren

Seit FreeBSD 7.0 besteht die Möglichkeit, ein UFS Dateisystem mit Journaling statt mit Softupdates zu betreiben. Möchte man nun eine neue Festplatte in ein bestehendes System einfügen und diese mit UFS Journaling versehen, so muss zuerst UFS Journaling für die neue Festplatte, in diesem Beispiel /dev/ad1, konfiguriert werden:

# gjournal label /dev/ad1

Danach kann das gjournal Kernelmodul wie folgt geladen werden:

# gjournal load
GEOM_JOURNAL: Journal 2439108283: ad1 contains data.
GEOM_JOURNAL: Journal 2439108283: ad1 contains journal.
GEOM_JOURNAL: Journal ad1 clean.

Nun kann die neue Festplatte mit UFS2 formatiert werden. Durch die -J Option wird das Journaling aktiviert:

# newfs -J /dev/ad1.journal

Nun kann das neue Dateisystem ins System gemountet werden. Mit UFS-Journaling ist es auch möglich das Dateisystem mit der async Option zu mounten, ohne dass man ein inkonsistentes Dateisystem zu befürchten hat.

# mkdir /mnt/backup
# mount -o async /dev/ad1.journal /mnt/backup

Damit das Dateisystem bei einem Neustart des Systems automatisch gemountet werden kann, muss zuerst der entsprechende Eintrag in der /boot/loader.conf gemacht werden:

# echo 'geom_journal_load="YES"' >> /boot/loader.conf

Danach kann der Eintrag in der /etc/fstab erstellt werden:

/dev/ad1.journal        /mnt/backup     ufs     rw,async        2       2

Anschliessend wird das neue Dateisystem mit Journaling nach einem Neustart automatisch ins System eingebunden.

# mount
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad0s1e on /tmp (ufs, local, soft-updates)
/dev/ad0s1f on /usr (ufs, local, soft-updates)
/dev/ad0s1d on /var (ufs, local, soft-updates)
/dev/ad1.journal on /mnt/backup (ufs, asynchronous, local, gjournal)

Mehr Informationen zu UFS Journaling findet man in der Manpage gjournal(8).

Comments (2)  Permalink

DNS Konfiguration auf Fehler überprüfen

Mit Hilfe von doc kann die DNS Konfiguration einer Domain auf Fehler überprüft werden. doc findet man im FreeBSD Portbaum unter dns/doc:

# cd /usr/ports/dns/doc && make install clean

Nun kann der Domainname der Domain, welche überprüft werden soll, an doc übergeben werden:

# doc chruetertee.ch
Doc-2.2.3: doc chruetertee.ch
Doc-2.2.3: Starting test of chruetertee.ch. parent is ch.
Doc-2.2.3: Test date - Sa 28 Jun 2008 13:32:14 CEST
Summary:
No errors or warnings issued for chruetertee.ch.
Done testing chruetertee.ch. Sa 28 Jun 2008 13:32:30 CEST

Mit der -v Option können zusätzliche Informationen zu den durchgeführten Tests angezeigt werden:

# doc -v chruetertee.ch

Im Verzeichnis, in dem doc ausgeführt wurde, wird eine Logdatei mit allen Testausgaben erstellt:

# cat log.chruetertee.ch.

Eine Übersicht, welche Tests durchgeführt wurden, findet man in der Datei /usr/local/lib/doc/INFO. Mehr Informationen zu doc findet man in der Manpage doc(8).

 Permalink

MASTER_SITES aus bsd.sites.mk nach Antwortzeiten sortieren

In der Datei /usr/ports/Mk/bsd.sites.mk, sind die Server hinterlegt, von welchen über die Ports der Quellcode von größeren Softwareprojekten heruntergeladen werden kann. Ebenfalls ist die Reihenfolge, in welcher die Server angefragt werden, in dieser Datei hinterlegt. Diese Reihenfolge kann nun angepasst werden, so dass das Herunterladen zuerst von Servern versucht wird, welche bessere Antwortzeiten haben. Dazu kann das Skript fastest_sites verwendet werden, welches man im FreeBSD Portbaum unter ports-mgmt/fastest_sites findet:

# cd /usr/ports/ports-mgmt/fastest_sites && make install clean

Führt man das Skript aus, werden die Antwortzeiten der verschiedenen Server getestet. Die Ausgabe kann in eine Datei geschrieben werden:

# fastest_sites > /usr/local/etc/ports_sites.conf
=> Checking servers for MASTER_SITE_GENTOO (50 servers)
=> Checking servers for MASTER_SITE_TCLTK (6 servers)
=> Checking servers for MASTER_SITE_GET_E (6 servers)
=> Checking servers for MASTER_SITE_EASYSW (5 servers)
=> Checking servers for MASTER_SITE_PERL_CPAN (19 servers)
=> Checking servers for MASTER_SITE_PACKETSTORM (5 servers)
=> Checking servers for MASTER_SITE_GNUPG (14 servers)
[...]

Die erstellte Datei kann nun in /etc/make.conf eingebunden werden. Dazu kann einfach folgende Zeile an die Datei angehängt werden:

.include "/usr/local/etc/ports_sites.conf"
 Permalink

Terminalfenster unterteilen

Mit Hilfe von dvtm kann man ein Terminalfenster in mehrere Terminals aufteilen. Im FreeBSD Portbaum ist dvtm unter sysutils/dvtm vorhanden:

# cd /usr/ports/sysutils/dvtm && make install clean

Um dvtm anzupassen, kann die config.h Datei entsprechend geändert werden. Diese muss dann beim Kompilieren des Ports über die Variable DVTM_CONF angegeben werden:

# cd /usr/ports/sysutils/dvtm && make DVTM_CONF=/<Pfad zu eigener Konfig>/config.h install clean

Startet man nun dvtm, wird ein neues Terminal geöffnet:

# dvtm

Zum Ausführen von dvtm-Befehlen muss zuerst eine bestimmte Tastenkombination gedrückt werden. Standardmässig ist das Ctrl+g (Strg+g auf der deutschen Tastatur). Möchte man zum Beispiel das vorhandene Terminalfenster in zwei Terminals unterteilen, drückt man Ctrl+g und danach c.

Hat man nun mehrere Terminals geöffnet, kann die Anordnung der Terminals mit Ctrl+g Leertaste geändert werden. Alternativ kann auch direkt mit Ctrl+g b, Ctrl+g g oder Ctrl+g t die gewünschte Anordnung gewählt werden.

Nun kann mit Ctrl+g j oder Ctrl+g k das aktive Terminal gewechselt werden. Verwendet man dvtm auf einer X Oberfläche, kann mit der Maus in das gewünschte Fenster geklickt werden. Möchte man unter X Text mit der Maus markieren, um diesen in die Zwischenablage zu kopieren, oder Text aus der Zwischenablage in ein Terminal kopieren, muss dazu die Shift-Taste gedrückt werden.

Einzelne Terminals können mit Ctrl+g x geschlossen werden. dvtm beendet man mit Ctrl+g q.

Folgendes Bild zeigt dvtm mit fünf offenen Terminals, in denen mcabber, newsbeuter, mutt und screen laufen.

dvtm

Mehr Informationen zu dvtm und alle möglichen Tastenkombinationen findet man in der Manpage dvtm(1).

Comments (4)  Permalink

foreach-Schleife in der tcsh

Mit der foreach-Schleife können in der tcsh Operationen auf mehreren Dateien gleichzeitig ausgeführt werden. Startet man eine foreach-Schleife, muss eine Variable deklariert werden und angegeben werden, welche Dateien modifiziert werden sollen. Danach können die Befehle, die auf den Dateien angewendet werden sollen, angegeben werden. Anschliessend wird die Schleife mit end beendet. Im folgenden Beispiel wird allen Dateien der Suffix .orig angehängt:

#  ls
file0 file1 file2 file3
# foreach file (*)
foreach? mv $file $file.orig
foreach? end
# ls
file0.orig file1.orig file2.orig file3.orig

Nun können auf den Dateinamen Substitution Patterns der tcsh verwendet werden. So wird im folgenden Beispiel der Suffix .orig durch .test ersetzt:

# foreach file (*)
foreach? mv $file $file:s/.orig/.test/
foreach? end
# ls
file0.test file1.test file2.test file3.test

Soll der Suffix entfernt werden, kann dies mit $file:r gemacht werden:

# foreach file (*)
foreach? mv $file $file:r
foreach? end
# ls
file0 file1 file2 file3

Nun kann der erste Buchstabe des Dateinamens mit Hilfe von $file:u in einen Grossbuchstaben umgewandelt werden:

# foreach file (*)
foreach? mv $file $file:u
foreach? end
# ls
File0 File1 File2 File3

Umgekehrt kann der erste Buchstaben auch wieder in einen Kleinbuchstaben geändert werden:

# foreach file (*)
foreach? mv $file $file:l
foreach? end
# ls
file0 file1 file2 file3

Mehr Informationen zu der foreach-Schleife und den Substitution Patterns der tcsh findet man in der Manpage tcsh(1).

Related Entries:
Wort in der tcsh löschen
Programm mit which finden
Liste der besuchten Verzeichnisse merken
tcsh bei Inaktivität beenden
Vervollständigung in der tcsh
Comments (2)  Permalink
1-7/7