BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

BIND-Konfiguration auf Fehler überprüfen

Möchte man seine Änderungen an der BIND-Konfiguration oder den Zonendateien auf Fehler überprüfen, kann dazu nslint verwendet werden. Im FreeBSD Portbaum findet man nslint unter dns/nslint:

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

Wird nslint aufgerufen, wird standardmässig die Konfiguration unter /etc/namedb/named.conf auf Fehler überprüft. Möchte man eine andere Datei überprüfen, so kann mit der -c Option der Pfad zur Datei angegeben werden:

# nslint
nslint: name referenced without other records: mail6.chruetertee.ch.
nslint: name referenced without other records: mail5.chruetertee.ch.
nslint: missing "ptr": www.chruetertee.ch. -> 217.150.245.53
nslint: 217.150.245.53 in use by chruetertee.ch. and www.chruetertee.ch.

Sind alle Fehler korrigiert, wird nslint keine Meldung ausgeben.

# nslint

Mehr Informationen zu nslint findet man in der Manpage nslint(8).

Comments (2)  Permalink

mergemaster-Konfigurationsdatei anlegen

Mit mergemaster können Dateien in /etc nach einem Update auf den neusten Stand gebracht werden. Dabei kann das Verhalten von mergemaster über eine Konfigurationsdatei gesteuert werden. Diese kann unter ~/.mergemasterrc oder global unter /etc/mergemaster.rc angelegt werden. Im folgenden Beispiel sollen Dateien, die auf dem System noch nicht existieren, automatisch installiert werden. Auch sollen Dateien, welche nicht verändert wurden, automatisch aktualisiert werden. Ersetzte Dateien werden unter /var/tmp/mergemaster/preserved-files-<Datum>-<Zeit>/ gesichert, wobei die /etc/motd nicht aktualisiert wird:

# Automatically install files that do not exist on the system already
AUTO_INSTALL=yes

# Automatically upgrade files that have not been user modified
AUTO_UPGRADE=yes

# Preserve files that you replace
PRESERVE_FILES=yes
PRESERVE_FILES_DIR=/var/tmp/mergemaster/preserved-files-`date +%y%m%d-%H%M%S`

# Files to always avoid comparing
IGNORE_FILES='/etc/motd'

Diese Optionen werden dann beim Aufruf von mergemaster automatisch verwendet:

# mergemaster

Mehr Informationen zu mergemaster und alle Optionen findet man in der Manpage mergemaster(8).

Comments (2)  Permalink

make buildworld/buildkernel ohne Befehlsausgabe

Baut man den Kernel oder die Welt mit make buildkernel oder make buildworld, werden die auszuführenden Befehle jeweils ausgegeben:

# make buildkernel
--------------------------------------------------------------
>>> Kernel build for GENERIC started on Sat Feb 28 10:41:51 CET 2009
--------------------------------------------------------------
===> GENERIC
mkdir -p /usr/obj/usr/src/sys

--------------------------------------------------------------
>>> stage 1: configuring the kernel
--------------------------------------------------------------
cd /usr/src/sys/i386/conf;  PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/tmp/legacy/usr/bin:/usr/obj/usr/src/tmp/legacy/usr/games:/usr/obj/usr/src/tmp/usr/sbin:/usr/obj/usr/src/tmp/usr/bin:/usr/obj/usr/src/tmp/usr/games:/sbin:/bin:/usr/sbin:/usr/bin  config  -d /usr/obj/usr/src/sys/GENERIC  /usr/src/sys/i386/conf/GENERIC
Kernel build directory is /usr/obj/usr/src/sys/GENERIC
Don't forget to do ``make cleandepend && make depend''

--------------------------------------------------------------
>>> stage 2.1: cleaning up the object tree
--------------------------------------------------------------
cd /usr/obj/usr/src/sys/GENERIC; MAKEOBJDIRPREFIX=/usr/obj  MACHINE_ARCH=i386  MACHINE=i386  CPUTYPE=  GROFF_BIN_PATH=/usr/obj/usr/src/tmp/legacy/usr/bin  GROFF_FONT_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/groff_font  GROFF_TMAC_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/tmac  _SHLIBDIRPREFIX=/usr/obj/usr/src/tmp  VERSION="FreeBSD 8.0-CURRENT i386 800061"  INSTALL="sh /usr/src/tools/install.sh"  PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/tmp/legacy/usr/bin:/usr/obj/usr/src/tmp/legacy/usr/games:/usr/obj/usr/src/tmp/usr/sbin:/usr/obj/usr/src/tmp/usr/bin:/usr/obj/usr/src/tmp/usr/games:/sbin:/bin:/usr/sbin:/usr/bin NO_CTF=1 make KERNEL=kernel cleandir
rm -f *.o *.so *.So *.ko *.s eddep errs  kernel.debug kernel kernel.symbols  linterrs makelinks tags vers.c  vnode_if.c vnode_if.h vnode_if_newproto.h vnode_if_typedef.h  agp_if.c ata_if.c eisa_if.c miibus_if.c mmcbr_if.c mmcbus_if.c card_if.c power_if.c pci_if.c pcib_if.c ppbus_if.c uart_if.c usb_if.c g_part_if.c isa_if.c bus_if.c clock_if.c cpufreq_if.c device_if.c linker_if.c serdev_if.c acpi_if.c agp_if.h ata_if.h eisa_if.h miibus_if.h mmcbr_if.h mmcbus_if.h card_if.h power_if.h pci_if.h pcib_if.h ppbus_if.h uart_if.h usb_if.h g_part_if.h isa_if.h bus_if.h clock_if.h cpufreq_if.h device_if.h linker_if.h serdev_if.h acpi_if.h  acpi_quirks.h aicasm* y.tab.h aic7xxx_seq.h aic7xxx_reg.h  aic7xxx_reg_print.c aic79xx_seq.h aic79xx_reg.h  aic79xx_reg_print.c miidevs.h pccarddevs.h teken_state.h  usbdevs.h usbdevs_data.h  acpi_wakecode.h acpi_wakecode.o acpi_wakecode.bin
rm -f .depend machine
cd /usr/src/sys/modules; MAKEOBJDIRPREFIX=/usr/obj/usr/src/sys/GENERIC/modules KMODDIR=/boot/kernel DEBUG_FLAGS="-g" MACHINE=i386 KERNBUILDDIR="/usr/obj/usr/src/sys/GENERIC" make  cleandir
===> 3dfx (cleandir)
===> 3dfx_linux (cleandir)
===> aac (cleandir)
===> aac/aac_linux (cleandir)
rm -f export_syms aac_linux.ko aac_linux.kld aac_linux.o aac_linux.ko.debug aac_linux.ko.symbols
rm -f @ machine
rm -f .depend GPATH GRTAGS GSYMS GTAGS

Möchte man die Befehle in der Ausgabe unterdrücken, kann die -s Option von make verwendet werden, so dass die Befehle ausgeführt, aber nicht mehr angezeigt werden:

# make -s buildkernel
--------------------------------------------------------------
>>> Kernel build for GENERIC started on Sat Feb 28 10:14:10 CET 2009
--------------------------------------------------------------
===> GENERIC

--------------------------------------------------------------
>>> stage 1: configuring the kernel
--------------------------------------------------------------
Kernel build directory is /usr/obj/usr/src/sys/GENERIC
Don't forget to do ``make cleandepend && make depend''

--------------------------------------------------------------
>>> stage 2.1: cleaning up the object tree
--------------------------------------------------------------
===> 3dfx (cleandir)
===> 3dfx_linux (cleandir)
===> aac (cleandir)
===> aac/aac_linux (clean)
===> aac/aac_linux (cleandepend)
===> aac/aac_linux (cleandir)
===> accf_data (cleandir)
===> accf_dns (cleandir)
===> accf_http (cleandir)
===> acpi (cleandir)
===> acpi/acpi (cleandir)
===> acpi/acpi_aiboost (cleandir)
===> acpi/acpi_asus (cleandir)
===> acpi/acpi_fujitsu (cleandir)
===> acpi/acpi_ibm (cleandir)
===> acpi/acpi_panasonic (cleandir)
===> acpi/acpi_sony (cleandir)
===> acpi/acpi_toshiba (cleandir)
===> acpi/acpi_video (cleandir)
===> acpi/acpi_dock (cleandir)

Mit Hilfe von whereintheworld aus den worldtools kann die Ausgabe von make buildworld noch übersichtlicher dargestellt werden.

 Permalink

Inhalt einer .doc-Datei auf der Kommandozeile ausgeben

Mit Hilfe von catdoc lässt sich eine .doc-Datei auf der Kommandozeile anzeigen, wie entsprechend normale Textdateien mit cat(1) angezeigt werden können. Im FreeBSD Portbaum findet man catdoc unter textproc/catdoc:

# cd /usr/ports/textproc/catdoc && make install clean

Nun kann die .doc-Datei mit catdoc angezeigt werden. Zeilen werden dabei automatisch nach 72 Zeichen umgebrochen:

# catdoc <Datei>.doc
Das ist ein Titel


Das ist ein Text der in einer .doc-Datei gespeichert wurde und nun auf
der Kommandozeile angezeigt wird.

Möchte man den automatischen Zeilenumbruch nach 72 Zeichen verhindern, so kann die -w Option verwendet werden:

# catdoc -w <Datei>.doc
Das ist ein Titel


Das ist ein Text der in einer .doc-Datei gespeichert wurde und nun auf der Kommandozeile angezeigt wird.

Mehr Informationen zu catdoc findet man in der Manpage catdoc(1).

Comments (3)  Permalink

Pastebin Service aus der Kommandozeile nutzen

Mit Hilfe von Pastebin-Services können auf einfache Art und Weise Fehlermeldungen oder Codefragmente ausgetauscht werden. Möchte man so einen Service aus der Kommandozeile nutzen, kann man dazu pastebinit benutzen, welches man unter misc/pastebinit im FreeBSD Portbaum findet:

# cd /usr/ports/misc/pastebinit && make install clean

Möchte man nun eine neue Meldung erstellen, kann pastebinit mit den entsprechenden Argumenten aufgerufen werden. Mit der -b Option kann ein Pastebin-Service angegeben werden, welcher verwendet werden soll. Mit der -i Option kann eine Datei angegeben werden, deren Inhalt hochgeladen werden soll. Ohne die -i Option wird die Eingabe der Standardeingabe hochgeladen. Ausgegeben wird die URL, unter welcher der hochgeladene Text erreichbar ist:

# pastebinit -i /tmp/pastebin.msg -b http://chruetertee.pastebin.com
http://chruetertee.pastebin.com/f44c5cb5d

Ausserdem kann, falls gewünscht, mit der -a Option ein alternativer Benutzername angegeben werden. Werden Codefragmente hochgeladen, kann mit der -f Option die Sprache angegeben werden, wodurch der Code entsprechend farbig dargestellt wird. Ruft man pastebinit ohne Optionen auf, werden alle verfügbaren Optionen angezeigt.

Comments (1)  Permalink

Apache Logdateien auf der Kommandozeile auswerten

Mit Hilfe von snowlog können Zugriffslogdateien des Apache Webservers auf der Kommandozeile ausgewertet werden. Im FreeBSD Portbaum findet man snowlog unter sysutils/snowlog:

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

Damit eine Logdatei ausgewertet werden kann, muss zuerst in der httpd.conf ein neues Logformat definiert und eine zusätzliche Logdatei konfiguriert werden. Für eine Standard-Apache 2 Konfiguration fügt man folgende zwei Zeilen zum Beispiel in eine vhost Konfiguration in /usr/local/etc/apache2/httpd.conf ein:

LogFormat "%a\t%l\t%u\t%{%s}t\t%r\t%>s\t%X\t%{Content-Type}o\t%b\t%{Referer}i\t%{User-Agent}i\t%V\t%{LogHint}e" parsable
CustomLog /var/log/httpd-access-parsable-vhost.log  parsable

Danach muss die Konfiguration neu eingelesen werden:

# /usr/local/etc/rc.d/apache2 configtest
Performing sanity check on apache2 configuration:
Syntax OK
# /usr/local/etc/rc.d/apache2 graceful

Mit der -f Option kann snowlog die Logdatei übergeben werden. Die in der Logdatei enthaltenen Anfragen werden nun nach IP-Adresse sortiert. Mit der Pfeil nach unten und der Pfeil nach oben Taste kann durch die einzelnen Anfragen navigiert werden. Dabei werden im unteren Teil des Terminals verschiedene Informationen zur Anfrage angezeigt:

# snowlog -f /var/log/httpd-access-parsable-vhost.log
* Snowlog 1.1.1
 xx.xx.102.187  -                                                                                                                      
   /                                                                                                                                   304
   /files/images/blog/kde4.png                                                                                                         200
   /                                                                                                                                   200
   /links/                                                                                                                             200
   /themes/2-cols/buttons/rss.png                                                                                                      200
   /themes/chrueterng/buttons/rss.png                                                                                                  200
   /files/images/chrueterteeBSD_hellgruen.png                                                                                          200
   /links/maintainer/                                                                                                                  200
   /freebsd/                                                                                                                           200
 xx.xx.144.157   http://www.google.com/reader/view/
   /files/images/blog/kde4_thumb.png                                                                                                   200
 xx.xx.231.88   Google: freebsd dbus_enable xorg 2009
   /blog/archive/2009/01/25/tastaturlayout-nach-aktualisieren-des-xorg-servers-auf-1-5-3-konfiguieren.html                             200
   /themes/chrueterng/css/mobile.css                                                                                                   200
   /themes/chrueterng/css/main_chrueter.css                                                                                            200
   /favicon.ico                                                                                                                        200
   //themes/chrueterng/buttons/freebsd.png                                                                                             200
   //themes/chrueterng/buttons/chruetertee.png                                                                                         200
   //themes/chrueterng/buttons/rss.png                                                                                                 200
   /themes/chrueterng/buttons/comments.png                                                                                             200
   /files/images/logo.jpg                                                                                                              200
   //themes/chrueterng/buttons/xhtml10.png                                                                                             200
   /dynimages/gravatar/5a3fde99fe127a44bec6d05cb9190975?gravatar_id=5edbb08fd0cd2ea894f67f801725b4c6&border=aaaaaa&rating=X&size=40    200
   /dynimages/gravatar/2b2e73a0b373fd724b7d9d726b4f052f?gravatar_id=a66a582a1fcacd1032b43ad670088e24&border=aaaaaa&rating=X&size=40    200
   /blog/freebsd/                                                                                                                      200
   /files/images/blog/kde4_thumb.png                                                                                                   200
   /blog/archive/2009/01/25/tastaturlayout-nach-aktualisieren-des-xorg-servers-auf-1-5-3-konfiguieren.html                             304
----------------------------------------------------------------------------------------------------------------------------------------------
 Line 423/646
 GET     /blog/archive/2009/01/25/tastaturlayout-nach-aktualisieren-des-xorg-servers-auf-1-5-3-konfiguieren.html                       200
 Sat Feb  7 16:20:09 2009                                                                                                  text/html, 5 KB
 Firefox/3.0.6 (Windows)
 www.chruetertee.ch
 http://www.google.de/search?hl=de&client=firefox-a&rls=org.mozilla%3Aen-GB%3Aofficial&hs=gs9&q=freebsd+dbus_enable+xorg+2009&btnG=Suche&meta=
----------------------------------------------------------------------------------------------------------------------------------------------
 557 requests from 89 hosts (11.16 MB). (H)elp.   

In der Datei ~/.snowlog/filters können verschiedene Filter definiert werden. Der Name des Filters wird dabei in eckigen Klammern angegeben. Folgendes Beispiel definiert einen Filter, der alle Anfragen bis auf Anfragen von XML-Dateien anzeigt und einen weiteren Filter, der alle Anfragen anzeigt, welche den HTTP-Statuscode 404 hatten. Drückt man nun in snowlog die Taste f, werden alle Filter angezeigt. Durch Auswählen der entsprechenden Filternummer wird der Filter angewendet:

[without RSS feeds]
request     !xml

[404]
httpstatus  =404

Befinden sich zum Beispiel Refferer-Spamer unter den Anfragen, navigiert man mit den Pfeiltasten zu der entsprechenden Anfrage und drückt die s-Taste. Dadurch werden alle Anfragen der Absender-IP-Adresse und des Refferers nicht mehr angezeigt. Durch das Drücken der q Taste verlässt man snowlog wieder. Mehr Informationen zu snowlog und den Filtermöglichkeiten findet man in der Manpage snowlog(1).

 Permalink

KDE 4.2 auf FreeBSD

Seit kurzem ist KDE 4.2 als Testversion für FreeBSD vorhanden. Zum Installieren von KDE 4.2 muss zuerst der Portbaum, zum Beispiel mit portsnap, auf den neusten Stand gebracht werden:

# portsnap fetch update

Da KDE 4.2 noch nicht im offiziellen Portbaum vorhanden ist, muss es mit Subversion heruntergeladen werden. Dazu muss ggf. zuerst Subversion installiert werden:

# cd /usr/ports/devel/subversion-freebsd && make install clean

Nun können die benötigten Dateien mit Subversion in ein Verzeichnis, in diesem Fall /usr/area51, heruntergeladen werden:

# svn co https://kf.athame.co.uk/kde-freebsd/trunk/area51/ /usr/area51

Anschliessend können die Ports, welche für KDE 4.2 benötigt werden, z.B. mit UnionFS über den offiziellen Portbaum gelegt werden:

# mount -t unionfs /usr/area51 /usr/ports
# mount
/dev/ad4s3a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad4s3d on /tmp (ufs, local, soft-updates)
/dev/ad4s3f on /usr (ufs, local, soft-updates)
/dev/ad4s3e on /var (ufs, local, soft-updates)
<above>:/usr/area51 on /usr/ports (unionfs, local)

Alternativ dazu kann auch das kdemerge-Script verwendet werden, welches sich unter /usr/area51/Tools/scripts/kdemerge befindet. Im Skript müssen zuerst die KDEDIR und PORTSDIR-Variablen angepasst werden:

# Path to the KDE ports without the trailing /. 
KDEDIR="/usr/area51"  
# Path to the official ports collection.
PORTSDIR="/usr/ports"

Nun können die für KDE 4.2 benötigten Ports mit dem Portbaum verbunden werden:

# /usr/are51/Tools/scripts/kdemerge
===> Merging files from area51 to the ports directory
/usr/area51 --> /usr/ports

You can now run "portupgrade -a" or "portmaster -a" to upgrade your ports
tree. Please read /usr/home/beat/ports/UPDATING-area51 before you run
portupgrade or portmaster. We suggest that you backup your ~/.kde4
configuration dir and start with a clean config.

Danach kann KDE 4.2 über den Portbaum installiert werden:

# cd /usr/ports/x11/kde4
# make install clean

Möchte man eine frühere Version von KDE 4 aktualisieren, so sollte man zuerst die Datei /ust/ports/UPDATING-area51 lesen. Anschliessend können die Ports gemäss der Anleitung in /ust/ports/UPDATING-area51 aktualisiert werden.

Verwendet man UnionFS kann es sein, dass Patches aus den aktuellen, im Portbaum vorhandenen KDE Ports noch sichtbar sind, welche mit KDE 4.2 nicht mehr benötigt werden:

===>   Returning to build of kdebase-runtime-4.2.0
===>   kdebase-runtime-4.2.0 depends on file: /usr/local/bin/cmake - found
===>   kdebase-runtime-4.2.0 depends on shared library: intl - found
===>   kdebase-runtime-4.2.0 depends on shared library: kimproxy.5 - not found
===>    Verifying install for kimproxy.5 in /usr/ports/x11/kdelibs4
===>  Vulnerability check disabled, database not found
=> kdelibs-4.2.0.tar.bz2 doesn't seem to exist in /usr/ports/distfiles/KDE.
=> Attempting to fetch from http://mirrors.isc.org/pub/kde/stable/4.2.0/src/.
kdelibs-4.2.0.tar.bz2                         100% of 9797 kB  369 kBps 00m00s
===>  Extracting for kdelibs-4.2.0
=> MD5 Checksum OK for KDE/kdelibs-4.2.0.tar.bz2.
=> SHA256 Checksum OK for KDE/kdelibs-4.2.0.tar.bz2.
/bin/mkdir -p /usr/ports/x11/kdelibs4/work/kdelibs-4.2.0/build
===>  Patching for kdelibs-4.2.0
===>  Applying FreeBSD patches for kdelibs-4.2.0
1 out of 3 hunks failed--saving rejects to
../cmake/modules/FindKDE4Internal.cmake.rej
=> Patch patch-FindKDE4Internal.cmake failed to apply cleanly.
*** Error code 1

Stop in /usr/ports/x11/kdelibs4.
*** Error code 1

Stop in /usr/ports/x11/kdebase4-runtime.
*** Error code 1

Stop in /usr/ports/x11/kdebase4-runtime.
*** Error code 1

Stop in /usr/area51/x11/kde4.
*** Error code 1

Stop in /usr/area51/x11/kde4.

In solch einem Fall können die vorhandenen Patches gelöscht und nochmals mit SVN heruntergeladen werden:

# cd /usr/ports/x11/kdelibs4/files/
# rm patch-*
# svn up

Danach kann die Installation erneut gestartet werden:

# cd /usr/ports/x11/kde4
# make clean install clean

Sind alle benötigten Ports installiert, kann KDM (KDE Login Manager) in der Datei /etc/ttys eingetragen werden:

#ttyv8  "/usr/local/bin/xdm -nodaemon"  xterm   on  secure
ttyv8   "/usr/local/kde4/bin/kdm -nodaemon"     xterm on secure

Falls noch nicht vorhanden müssen D-Bus und der HAL-Daemon in der Datei /ect/rc.conf aktiviert werden:

dbus_enable="YES"
hald_enable="YES"

Danach wird bei einem Systemstart automatisch KDM für die Anmeldung gestartet und KDE 4.2 kann verwendet werden.

KDE4

Folgende Punkte sollten bei der Verwendung von KDE 4.2 beachtet werden:

  •  Der FreeBSD Support für Systeminformationen in Plasma fehlt zur Zeit noch, das heisst, es werden keine Informationen zum Prozessor und den Temperaturen angezeigt.
  •  Die Beschriftung der Tabs in der Konsole fehlen und müssen manuell gesetzt werden.
  •  In ksysguard wird die Prozessoranzeige nicht richtig angezeigt. Das ist jedoch abhängig vom Systemboard.
  •  Dem FAM-Subsystem fehlt zur Zeit noch die FreeBSD-Unterstützung und ist deshalb abgeschaltet, dadurch kann es hier teilweise zu Geschwindigkeitseinbussen kommen.

Damit KDE 4.2 möglichst fehlerfrei in den Portbaum gebracht werden kann, werden weiterhin Tester gesucht. Probleme und Erfolgsmeldungen können an die Mailingliste kde-freebsd gesendet werden.

Vielen Dank an Martin für seine Hilfe beim Erstellen dieses Artikels. 

Comments (5)  Permalink
1-7/7