text: Standard Apache Version festlegen
  [ FreeBSD ] by Beat @ 30.11.2007 12:53 UTC
  Installiert man zur Zeit auf FreeBSD einen Port, welcher den Apache-Webserver als Abhängigkeit hat, so wird standardmässig ein Apache-1.3 installiert:
  # cd /usr/ports/www/mod_proxy_add_forward && make run-depends-list
  /usr/ports/www/apache13
  Möchte man nun aus irgend einem Grund die Standard-Version des Apaches ändern, kann dies durch das Setzen der APACHE_PORT Variablen in der /etc/make.conf gemacht werden. Folgendes Beispiel setzt den Apache 2.2 als Standard-Apache:
  # grep APACHE_PORT /etc/make.conf
  APACHE_PORT=  www/apache22
  URLs zu Port-Quelltexten anzeigen
  [ FreeBSD ] by Beat @ 29.11.2007 22:04 UTC
  Möchte man herausfinden, von welchen URLs FreeBSD versucht den Quellcode eines Ports herunterladen, so kann man ein make fetch-urlall-list im Portverzeichnis ausführen:
  # cd /usr/ports/ports-mgmt/portsopt/ && make fetch-urlall-list
  http://www.chruetertee.ch/files/download/portsopt-1.4.tar.gz
  ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/portsopt-1.4.tar.gz
  PDF-Datei in Textdatei umwandeln
  [ Befehl der Woche ] by Beat @ 24.11.2007 10:59 UTC
  Um eine PDF-Datei auf der Kommandozeile lesen zu können, kann diese mittels pdftotext in eine Textdatei umgewandelt werden. pdftotext wird mit xpdf ausgeliefert und befindet sich auf FreeBSD in graphics/xpdf Port. xpdf kann auch ohne graphische Unterstützung gebaut werden, so dass nur die Hilfsprogramme wie pdftotext und pdfinfo installiert werden, aber nicht xpdf selbst:
  # cd /usr/ports/graphics/xpdf && make -DWITHOUT_X11 install clean
  Nun kann die PDF-Datei umgewandelt werden. Damit die Formatierungen bestehen bleiben, was die Lesbarkeit verbessert, kann die Option -layout verwendet werden:
  # pdftotext -layout <PDF-Datei>
  Nun wird eine gleichnamige Textdatei mit der Endung txt im gleichen Verzeichnis erstellt.
  Möchte man die Metainformationen einer PDF-Datei auslesen, kann dazu pdfinfo, welches ebenfalls mit xpdf installiert wird, verwendet werden:
  # pdfinfo <PDF Datei>
  Mehr Informationen findet man in den Manpages pdftotext(1) und pdfinfo(1).
  Festplatten dauerhaft überwachen
  [ Befehl der Woche ] [ FreeBSD ] by Beat @ 17.11.2007 13:23 UTC
  Mit den smartmontools können nicht nur Festplatten auf Fehler überprüft, sondern mit der dazugehörigen smartd auch überwacht werden. Dazu müssen die smartmontools installiert sein. Diese findet man im FreeBSD Portbaum unter sysutils/smartmontools:
  Nun kann eine Konfigurationsdatei für den smartd erstellt werden. Dazu wird zuerst die Vorlage kopiert:
  In der smartd.conf kann nun angegeben werden, welche Laufwerke überwacht werden sollen. Mit folgendem Eintrag werden alle gefundenen Laufwerke überwacht und Fehler und Warnungen werden an die angegebene E-Mailadresse gesendet:
  DEVICESCAN -m <E-Mailadresse>
  Nun kann manuell geprüft werden, welche Laufwerke gefunden werden und ob es smartd möglich ist, die Laufwerke zu überwachen. Der Test kann mit Ctrl + \ wieder beendet werden:
  # /usr/local/sbin/smartd -d -c /usr/local/etc/smartd.conf
  smartd version 5.37 [i386-portbld-freebsd6.1] Copyright (C) 2002-6 Bruce Allen
  Drive: DEVICESCAN, implied '-a' Directive on line 23 of file /usr/local/etc/smartd.conf
  Device: /dev/ad4, opened
  Device: /dev/ad4, found in smartd database.
  Device: /dev/ad4, is SMART capable. Adding to "monitor" list.
  Device: /dev/ad6, opened
  Device: /dev/ad6, found in smartd database.
  Device: /dev/ad6, is SMART capable. Adding to "monitor" list.
  Monitoring 2 ATA and 0 SCSI devices
  ^\smartd received signal 3: Quit: 3
  Memory still allocated for devices at exit is 0 bytes.
  Damit smartd automatisch gestartet wird, muss folgender Eintrag in der /etc/rc.conf gemacht werden:
  Nun kann smartd gestartet werden:
  Alle Konfigurationsmöglichkeiten von smartd findet man in der Manpage smartd(8).
  FreeBSD auf ZFS installieren
  [ FreeBSD ] by Beat @ 17.11.2007 12:10 UTC
  Möchte man FreeBSD auf ZFS installieren, so ist das noch nicht über die Installationsroutine möglich. Unter http://www.ish.com.au/solutions/articles/freebsdzfs findet man ein Anleitung wie man FreeBSD trotzdem auf ZFS installieren kann. Hier eine kleine Zusammenfassung: Um FreeBSD auf ZFS zu installieren, muss man mindestens FreeBSD 7 einsetzen. Man erstellt zuerst mit sysinstall einen Slice über die ganze Festplatte und anschliessend ein Label so, dass die Partition a 512 MB gross ist, und als / gemountet wird. Auch die Swappartition wird bereits erstellt. Im Rest des Slices wird eine Partition gelabelt, welche nicht formatiert und gemountet wird. In / wird dann ein minimal FreeBSD installiert.
  Danach wird das installierte System im Single User Mode gestartet und die / Partition schreibend gemountet:
  # mount -w /
  Nun kann auf dem freien Speicherplatz ein ZFS-Pool erstellt werden:
  # zpool create tank /dev/ad0s1d
  Danach können die Dateisysteme für /usr, /var und /tmp erstellt werden:
  # zfs create tank/var
  # zfs create tank/tmp
  Mit folgendem Eintrag in der /etc/rc.conf wird das ZFS Kernelmodul beim Booten geladen:
  Nun kann der Inhalt der root-Partition auf das ZFS-Dateisystem verschoben werden:
  # find -x / | cpio -pmd /tank
  471416 blocks
  Da FreeBSD noch nicht von ZFS booten kann, muss die bestehende UFS-Partition als boot-Partition verwendet werden:
  # rm -rf /tank/boot
  # mkdir /tank/bootdir
  # cd /tank
  # ln -s bootdir/boot boot
  In der /tank/etc/fstab muss nun der Eintrag für die UFS boot-Partition geändert werden:
  /dev/ad4s1a  /bootdir        ufs     rw      1       1
  Nun muss in der /boot/loader.conf eingetragen werden, dass das ZFS root-Dateisystem beim Booten geladen werden soll:
  # echo 'zfs_load="YES"' >>  /boot/loader.conf
  # echo 'vfs.root.mountfrom="zfs:tank"'  >>  /boot/loader.conf
  Zum Schluss müssen noch die ZFS-Mountpoints für /usr, /var und /tmp konfiguriert werden und dabei sichergestellt werden, dass /tank nicht gemountet wird, da dies nun das root-Dateisystem ist:
  # zfs set mountpoint=/tmp tank/tmp
  # zfs set mountpoint=/var tank/var
  # zfs set mountpoint=legacy tank
  Jetzt sind alle Einstellungen gemacht und FreeBSD kann neu gestartet werden:
  Falls man möchte, können nun nicht gebrauchte Dateien aus der UFS boot-Partition gelöscht werden:
  # cd /bootdir
  # chflags noschg var/empty
  # rm -rf usr var tmp COPYRIGHT home compat media mnt proc bin cdrom dev dist etc lib libexec root sbin sys
  Mehr Informationen dazu findet man im FreeBSD wiki: http://wiki.freebsd.org/ZFSOnRoot
  Eine kleine Einführung in ZFS auf FreeBSD findet man hier: http://www.chruetertee.ch/blog/archive/2007/05/26/zfs-auf-freebsd.html
  Ports testen und Pakete erstellen mit einer Tinderbox
  [ Befehl der Woche ] [ FreeBSD ] by Beat @ 10.11.2007 18:00 UTC
  Mit einer Tinderbox können FreeBSD Ports getestet und Pakete aus den Ports erstellt werden. Möchte man Ports für FreeBSD-7.0 oder FreeBSD 8-CURRENT testen, muss man auch eine solche Version installiert haben, da sich Aufgrund von ABI Änderungen, diese Versionen nicht mit FreeBSD-5.x oder FreeBSD-6.x testen lassen (vielen Dank an miwi für diesen Hinweis!). Die Tinderbox findet man in den FreeBSD Ports unter ports-mgmt/tinderbox:
  # cd /usr/ports/ports-mgmt/tinderbox/ && make install clean
  Im Konfigurationsmenü kann danach ausgewählt werden, was für eine Datenbank und was für ein Webserver verwendet wird und ob cvsup oder csup zum Aktualisieren der Quelldateien verwendet werden soll. Im folgenden Beispiel wird mySQL als Datenbank und ein Apache Webserver verwendet.
  [ ] PGSQL     With pgsql
  [X] MYSQL     With mysql
  [X] CSUP      Use csup for updates
  [ ] CVSUP     Use cvsup for updates
  [ ] WEB       Install web interface
  [X] WEB_EXP   Install the new web interface
  [X] APACHE    Use Apache for web interface
  [ ] LIGHTTPD  Use LightHTTPD for web interface
  Ist noch kein Datenbank-Server installiert, muss dieser auch noch installiert werden:
  # cd /usr/ports/databases/mysql50-server && make install clean
  Nun kann die Webserverkonfiguration den eigenen Wünschen angepasst werden:
  # vi /usr/local/etc/apache/httpd.conf
  Sollen die Datenbank und der Webserver bei einem Systemstart automatisch gestartet werden, müssen die benötigten Einträge in /etc/rc.conf gemacht werden:
  Nun können mySQL und der Apache gestartet werden:
  # /usr/local/etc/rc.d/apache.sh start
  Danach kann mit der Konfiguration der Tinderbox begonnen werden:
  # /usr/local/tinderbox/scripts/setup.sh
  Dabei müssen verschieden Angaben gemacht werden:
  Enter database driver (mysql pgsql): mysql
  Does this host have access to connect to the Tinderbox database as a database administrator? (y/n)y
  Enter database admin user [root]:<Benutzer>
  Enter database host [localhost]:<DB Server>
  Enter database name [tinderbox]:<Datenbankname>
  Are these settings corrrect:
  Database Administrative User : root
  Database Host                : localhost
  Database Name                : tinderbox
  (y/n)y
  INFO: Checking to see if database tinderbox already exists on localhost ...
  INFO: The next prompt will be for the root's password on the database server
  Enter password:<Passwort>
  INFO: Database tinderbox does not exist.  Creating database tinderbox on localhost ...
  INFO: The next prompt will be for root's password on the database server localhost.
  INFO: Loading Tinderbox schema into tinderbox ...
  The next prompt will be for root's password to the tinderbox database.
  Enter the desired username for the Tinderbox database : <Benutzername>
  Enter the desired password for tinderbox : <Passwort>
  Are these the settings you want:
  Database username      : tinderbox
  Database user password : ****
  INFO: Adding permissions to tinderbox for tinderbox ...
  Enter password: <Passwort>
  INFO: Database configuration complete.
  Nun müssen noch einige Dateien kopiert und angepasst werden:
  # cp /usr/local/tinderbox/scripts/tinderbox.ph.dist /usr/local/tinderbox/scripts/tinderbox.ph
  In der Datei /usr/local/tinderbox/scripts/tinderbox.ph müssen noch einige Variablen ausgefüllt werden. Verwendet man die neue Weboberfläche, müssen die Variablen für www auskommentiert und jene für www-exp einkommentiert werden:
  $BUILD_ROOT      = '/usr/local/tinderbox';
  $SUBJECT         = '<Betreff einer Tinderbox Mail>';
  $SENDER          = '<Senderadresse>';
  $SMTP_HOST       = '<Mailserver>';
  $SERVER_HOST     = '<Tinderbox Server>';
  $TINDERBOX_URI           = '/tb';
  # for www:
  #$SHOWBUILD_URI           = $TINDERBOX_URI . '/showbuild.php?name=';
  #$SHOWPORT_URI            = $TINDERBOX_URI . '/showport.php?id=';
  # for www-exp:
  $SHOWBUILD_URI           = $TINDERBOX_URI . '/index.php?action=list_buildports&build=';
  $SHOWPORT_URI            = $TINDERBOX_URI . '/index.php?action=describe_port&id=';
  Danach müssen noch zwei PHP Scripts kopiert und angepasst werden:
  # cp /usr/local/tinderbox/scripts/www-exp/inc_ds.php.dist /usr/local/tinderbox/scripts/www-exp/inc_ds.php
  # cp /usr/local/tinderbox/scripts/www-exp/inc_tinderbox.php.dist /usr/local/tinderbox/scripts/www-exp/inc_tinderbox.php
  Einträge in der /usr/local/tinderbox/scripts/www-exp/inc_ds.php:
  $DB_HOST = '<DB Server>';
  $DB_USER = '<DB User>';
  $DB_PASS = '<DB Passwort>';
  Einträge in der /usr/local/tinderbox/scripts/www-exp/inc_tinderbox.php:
  $rootdir = '/usr/local/tinderbox';
  $wwwrooturi  = '/tb';
  $tinderbox_name  = '<Tinderbox Name>';
  $tinderbox_title = '<Tinderbox Titel>';
  Jetzt kann die Tinderbox initialisiert werden:
  # cd /usr/local/tinderbox/scripts && ./tc init
  Möchte man die Tinderbox über das Web-GUI steuern, muss noch der tinderd Dienst aktiviert werden:
  # cp /usr/local/tinderbox/scripts/etc/rc.d/tinderd.sh /usr/local/etc/rc.d/
  # chmod +x /usr/local/etc/rc.d/tinderd.sh
  # echo 'tinderd_enable="YES"' >> /etc/rc.conf
  # echo 'tinderd_directory="/usr/local/tinderbox/scripts"' >> /etc/rc.conf
  # echo 'tinderd_flags="-nullfs"' >> /etc/rc.conf
  Nun muss noch ein Benutzer für das Web-GUI erstellt werden:
  # cd /usr/local/tinderbox/scripts && ./tc addHost
  # ./tc addUser -u <Benutzername> -e <E-Mailadresse> -p <Passwort> -w
  # ./tc setWwwAdmin -u <Benutzername>
  Nun müssen noch die Einträge in der /usr/local/etc/apache/httpd.conf gemacht werden:
  Alias /tb/logs/ "/usr/local/tinderbox/logs/"
  Alias /tb/packages/ "/usr/local/tinderbox/packages/"
  Alias /tb/errors/ "/usr/local/tinderbox/errors/"
  Alias /tb/ "/usr/local/tinderbox/scripts/www-exp/"
  <Directory "/usr/local/tinderbox/">
  Danach kann der Apache neu gestartet werden:
  # /usr/local/etc/rc.d/apache.sh restart
  Als erstes wird ein Portbaum mit der Bezeichnung FreeBSD erstellt:
  # cd /usr/local/tinderbox/scripts
  # ./create PortsTree -p FreeBSD -d "FreeBSD ports tree" -w http://www.freebsd.org/cgi/cvsweb.cgi/ports/
  Mit einer Tinderbox können Packet für verschieden FreeBSD Versionen erstellt werden. Folgender Befehl erstellt eine Tinderbox-Jail für FreeBSD 6.2:
  # ./create Jail -j 6.2 -d "FreeBSD 6.2" -t RELENG_6_2
  Nun wird der Tinderbox-Jail dem Portbaum zugewiesen:
  # ./create Build -b 6.2-FreeBSD -j 6.2 -p FreeBSD -d "6.2-RELEASE with FreeBSD ports tree"
  Es können nun auch weiter Tinderbox-Jails mit anderen FreeBSD Versionen und unterschiedliche Portbäume erstellt werden.
  Danach können schon Ports, in diesem Beispiel www/fluxcms, getestet und Pakete dafür erstellt werden:
  # ./tc addPort -b 6.2-FreeBSD -d www/fluxcms -r
  # ./tinderbuild -nullfs -b 6.2-FreeBSD www/fluxcms
  Die Logdateien und die Pakete können ganz einfach über das Web-GUI gefunden werden. Dieses ist über http://tinderboxserver/tb/ erreichbar.
  Auch lassen sich bestehende Portbaume aktualisieren. Folgender Befehl aktualisiert den Portbaum welcher FreeBSD benannt wurde:
  # ./tc updatePortsTree -p FreeBSD
  Mehr Informationen zur Tinderbox findet man auf der Homepage http://tinderbox.marcuscom.com/.
  pkg_updating: ports/UPDATING Meldungen anzeigen
  [ Befehl der Woche ] [ FreeBSD ] by Beat @ 03.11.2007 08:26 UTC
  Gestern Abend wurde pkg_updating in 8.0-CURRENT commited. Damit können sich nun Benutzer eines aktuellen CURRENT's Einträge aus ports/UPDATING anzeigen lassen, die installierte Ports betreffen oder nach denen sie suchen. Folgender Befehl durchsucht ports/UPDATING nach allen Einträgen, die einen installierten Port betreffen:
  # pkg_updating
  Möchte man nur Einträge seit dem 01.01.2007 anzeigen lassen, die einen installierten Port betreffen, benutzt man die -d Option:
  # pkg_updating -d 20070101
  Auch kann man nach Einträgen eines bestimmten Ports suchen:
  # pkg_updating apache
  Oder gleich eine Liste von gewünschten Ports übergeben:
  # pkg_updating apache mysql perl
  Auch hier kann mit einem Datum die Suche eingegrenzt werden. Im folgenden Beispiel werden nur Einträge der übergebenen Ports seit dem 01.06.2007 angezeigt: