BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Informationen zu einer FreeBSD-Installation auslesen

Mit Hilfe von sysinfo können Informationen zu einem FreeBSD-System ausgelesen werden. Im FreeBSD Portbaum findet man sysinfo unter sysutils/sysinfo:

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

Führt man sysinfo mit der -a Option aus, werden verschiedene Informationen zum Rechner und der FreeBSD-Installation angezeigt:

# sysinfo -a

Sollen zusätzliche Informationen angezeigt werden, kann die Option -v 1 verwendet werden:

# sysinfo -a -v 1

Soll die Ausgabe nicht farbig dargestellt werden, kann -c verwendet werden. So lässt sich die Ausgabe auch ohne Probleme in eine Textdatei umleiten:

# sysinfo -a -c -v 1 > /tmp/sysinfo

Das Verhalten von sysinfo lässt sich auch in der Datei /usr/local/etc/sysinfo.conf konfigurieren. Eine Beispielausgabe von sysinfo findet man hier.

 Permalink

RSS-Feed der zuletzt gebauten Ports einer Tinderbox

Seit der Tinderbox Version 3.1 können die zuletzt gebauten Ports auch als RSS-Feeds aboniert werden. Dazu kann folgende URL mit einem RSS-Reader aufgerufen werden. Ab sofort werden dann alle gebauten Ports und deren Status im RSS-Reader angezeigt: http://<Tinderbox URL>/tb/index.php?action=latest_buildports_rss

Related Entries:
Tinderbox aufräumen
Wartezeit von tinderd ändern
Quellcode in der Tinderbox speichern
Tinderbox-Jail ohne Kompilieren erstellen
Port-Optionen in der Tinderbox verwenden
 Permalink

Port-Optionen in der Tinderbox verwenden

Möchte man Optionen für Ports verwenden, so können diese entweder global, per Jail, per Portbaum oder per Build gesetzt werden. Dazu können die Optionen unter /usr/local/tinderbox/scrips/etc/env in die entsprechende Datei geschrieben werden. Für globale Optionen verwendet man die Datei GLOBAL. Für Optionen per Jail verwendet man die Datei jail.<Jailname>, für Optionen per Portbaum die Datei portstree.<Portsbaumname> oder für Optionen per Build die Datei build.<buildname>:

# cd /usr/local/tinderbox/scripts/etc/env && cat build.6-FreeBSD-NO
export NOPORTDOCS=yes
export NOPORTEXAMPLES=yes
export NOPORTDATA=yes

Nun werden die Ports mit den entsprechenden Optionen gebaut. Besitzt der zu bauende Port ein OPTIONS-Menü, so können diese Optionen aus dem Menü pro Port gesetzt werden. Dazu muss zuerst ein entsprechendes Verzeichnis pro Build erstellt werden:

# mkdir -p /usr/local/tinderbox/options/<Buildnamen>

Nun kann eine Datei mit den Portoptionen unter /usr/local/tinderbox/options/<Build>/<Port>/options erstellt werden:

# cat /usr/local/tinderbox/options/6-FreeBSD/swaks/options
_OPTIONS_READ=swaks-20061116.0
WITH_PERL_NET_DNS=true
WITH_PERL_NET_SSLEAY=true
WITH_PERL_AUTHEN_NTLM=true

Nun müssen die Optionen noch aktiviert werden. Dies muss allerdings nur das erste Mal gemacht werden. Danach werden die Ports automatisch mit den konfigurierten Optionen gebaut.

# cd /usr/local/tinderbox/scripts && ./tc configOptions -e
# ./tc configOptions -o /options

Mehr Informationen zur Tinderbox findet man auf der Homepage http://tinderbox.marcuscom.com/.

Related Entries:
Tinderbox aufräumen
Wartezeit von tinderd ändern
Quellcode in der Tinderbox speichern
Tinderbox-Jail ohne Kompilieren erstellen
RSS-Feed der zuletzt gebauten Ports einer Tinderbox
 Permalink

Ports testen und Pakete erstellen mit einer Tinderbox Version 3.2

Mit einer Tinderbox können FreeBSD Ports getestet und Pakete aus den Ports erstellt werden. Möchte man Ports für FreeBSD-7.1, FreeBSD 7-STABLE oder FreeBSD 8-CURRENT testen, muss man auch eine solche Version installiert haben, da sich Aufgrund von ABI Änderungen, diese Versionen nicht mit FreeBSD-6.x testen lassen. Die Tinderbox Version 3.2 findet man in den aktuellen 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
[X] WEBUI           Install web interface
[X] APACHE          Use Apache for web interface
[ ] LIGHTTPD        Use LightHTTPD for web interface
[X] CHECK_FOR_ROOT  Check it ./tc is run by uid 0 

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:

mysql_enable="YES"
apache_enable="YES"

Nun können mySQL und der Apache gestartet werden:

# /usr/local/etc/rc.d/apache.sh start
# /usr/local/etc/rc.d/mysql-server start

Danach kann mit der Konfiguration der Tinderbox begonnen werden:

# cd /usr/local/tinderbox/scripts && ./tc Setup

Dabei müssen verschieden Angaben gemacht werden:

Welcome to the Tinderbox Setup script.  This script will guide you through
some of the automated Tinderbox setup steps.  Once this script completes ,
you should review the documentation in /usr/local/tinderbox/scripts/README
or on the web at http://tinderbox.marcuscom.com/ to complete your setup.

Hit <ENTER> to get started: <Enter>
INFO: Checking prerequisites ...
DONE.

INFO: Creating default configuration files ...
DONE.

INFO: Beginning database configuration.
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
Do you want to cache root's password, and pass it to subsequent database command calls (note: this presents a security risk) (y/N) ?y
Enter root's password : <Passwort>
Confirm password for root : <Passwort>
INFO: Checking for prerequisites for mysql database driver ...
DONE.

Enter the desired username for the Tinderbox database : <Benutzername>
Enter the desired password for tinderbox : <Passwort>
Confirm password for tinderbox : <Passwort>
Are these the settings you want:
    Database username      : tinderbox
    Database user password : ****
(y/N) y
INFO: Checking to see if database tinderbox already exists on localhost ...
The next prompt will be for root's password to the tinderbox database.
Enter password: <Passwort> INFO: Database tinderbox does not exist.  Creating tinderbox on localhost
...
INFO: Creating user tinderbox on host localhost (if required) ...
DONE.

The next prompt will be for root's password to the tinderbox database.
Enter password: <Passwort>
INFO: Loading Tinderbox schema into tinderbox ...
The next prompt will be for root's password to the tinderbox database.
Enter password: <Passwort>
INFO: Adding permissions to tinderbox for tinderbox ...
The next prompt will be for root's password to the tinderbox database.
Enter password: <Passwort>
DONE.

INFO: Database configuration complete.

Congratulations!  The scripted portion of Tinderbox has completed successfully.
You should now verify the settings in /usr/local/tinderbox/scripts/tinderbox.ph
are correct for your environment, then run "/usr/local/tinderbox/scripts/tc
init" to complete the setup.  Be sure to checkout
http://tinderbox.marcuscom.com/ for further instructions

In der Datei /usr/local/tinderbox/scripts/tinderbox.ph müssen noch einige Variablen ausgefüllt werden:

# Configurable options
$TINDERBOX_HOST  = '<URL der Tinderbox>';
$TINDERBOX_URI   = '/tb';
$SUBJECT         = '<Betreff einer Tinderbox Mail>';
$SENDER          = '<Senderadresse>';
$SMTP_HOST       = '<Mailserver>';

Danach müssen noch zwei PHP Scripts kopiert und angepasst werden:

# cp /usr/local/tinderbox/scripts/webui/inc_ds.php.dist /usr/local/tinderbox/scripts/webui/inc_ds.php
# cp /usr/local/tinderbox/scripts/webui/inc_tinderbox.php.dist /usr/local/tinderbox/scripts/webui/inc_tinderbox.php

Einträge in der /usr/local/tinderbox/scripts/webui/inc_ds.php:

$DB_DRIVER = 'mysql';
#$DB_DRIVER = 'pgsql';
$DB_HOST = '<DB Server>';
$DB_NAME = '<DB Name>';
$DB_USER = '<DB User>';
$DB_PASS = '<DB Passwort>';

Einträge in der /usr/local/tinderbox/scripts/webui/inc_tinderbox.php. Möchte man das paefchen-Webui-Frontend verwenden, so kann die template_dir-Variable auf 'paefchen' gesetzt werden:

$tinderbox_name  = '<Tinderbox Name>';
$tinderbox_title = '<Tinderbox Titel>';
[...]
# Comment out the next line, and uncomment the line after it to enable
# the paefchen frontend template.
#$template_dir   = 'default';
$template_dir   = 'paefchen'

Jetzt kann die Tinderbox initialisiert werden:

# cd /usr/local/tinderbox/scripts && ./tc init
Enter a default cvsup host [cvsup12.FreeBSD.org]: <CVSup Server>
Enter a default update type or command [CSUP]: Enter
Default update host and type have been set.  These can be changed later by
modifying /usr/local/tinderbox/scripts/etc/env/GLOBAL.

Möchte man die Tinderbox über das Web-GUI steuern, muss noch der tinderd Dienst aktiviert werden:

# echo 'tinderd_enable="YES"' >> /etc/rc.conf
# echo 'tinderd_directory="/usr/local/tinderbox/scripts"' >> /etc/rc.conf
# echo 'tinderd_flags="-nullfs"' >> /etc/rc.conf
# /usr/local/etc/rc.d/tinderbox start

Nun muss noch ein Benutzer für das Web-GUI erstellt werden:

# cd /usr/local/tinderbox/scripts && ./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/webui/"
 <Directory "/usr/local/tinderbox/">
         Order allow,deny
         Allow from all
 </Directory>

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
# ./tc createPortsTree -p FreeBSD -u CSUP -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.4:

# ./tc createJail -j 6.4 -d "FreeBSD 6.4" -t RELENG_6_4

Nun wird der Tinderbox-Jail dem Portbaum zugewiesen:

# ./tc createBuild -b 6.4-FreeBSD -j 6.4 -p FreeBSD -d "6.4-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.4-FreeBSD -d www/fluxcms
# ./tc tinderbuild -nullfs -b 6.4-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/. Eine Installationsanleitung für die Tinderbox Version 2.4.x findet man hier: http://www.chruetertee.ch/blog/archive/2007/11/10/ports-testen-und-pakete-erstellen-mit-einer-tinderbox.html

Related Entries:
Tinderbox aufräumen
Wartezeit von tinderd ändern
Quellcode in der Tinderbox speichern
Tinderbox-Jail ohne Kompilieren erstellen
RSS-Feed der zuletzt gebauten Ports einer Tinderbox
 Permalink

Paket eines installierten Ports erstellen

Mit Hilfe von bpkg kann von einem installierten Port ein Paket erstellt werden. Im FreeBSD Portbaum findet man bpkg unter ports-mgmt/bpkg:

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

Nun kann mit der -b Option der installierte Port gewählt werden, von welchem ein Paket unter /var/tmp/bpkg erstellt werden soll:

# bpkg -b rsync
Creating backup package(s) rsync-3.0.3 in /var/tmp/bpkg/
Done.
# ls /var/tmp/bpkg/
rsync-3.0.3.tbz

Mehr Informationen zu bpkg findet man in der Manpage bpkg(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

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

Tastaturlayout nach Aktualisieren des Xorg-Servers auf 1.5.3 konfigurieren

Nach dem Aktualisieren des xorg-servers auf die Version 1.5.3 wird das in der /etc/X11/xorg.conf konfigurierte Tastaturlayout nicht mehr übernommen, da die Tastatur nicht mehr über die xorg.conf sondern über den HAL-Daemon konfiguriert wird. Dazu müssen folgende zwei Zeilen in der /etc/rc.conf eingefügt werden:

dbus_enable="YES"
hald_enable="YES"

Nun muss die Datei /usr/local/etc/hal/fdi/policy/99-x11-keyboard.fdi angelegt werden. Im folgenden Beispiel wird ein schweizerdeutsches Tastaturlayout konfiguriert:

<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
  <device>
    <match key="info.capabilities" contains="input.keyboard">
      <merge key="input.xkb.layout" type="string">ch</merge>
    </match>
  </device>
</deviceinfo>

Danach müssen der D-Bus und der HAL-Daemon gestartet werden:

# /usr/local/etc/rc.d/dbus start
# /usr/local/etc/rc.d/hald start

Anschliessend muss der X-Server neu gestartet werden. Danach ist das gewünschte Tastaturlayout wieder konfiguriert.

Comments (2)  Permalink

Festplatte mit recoverdisk kopieren

Mit Hilfe von recoverdisk lässt sich der Inhalt einer Festplatte auf eine andere Festplatte kopieren. Kann dabei ein Block nicht gelesen werden, wird der Block übersprungen, am Schluss jedoch nochmals mit einer kleineren Blockgrösse gelesen. Im folgenden Beispiel wird die Festplatte da2 auf da3 kopiert:

# recoverdisk /dev/da2 /dev/da3
        start    size     block-len state          done     remaining    % done
  36419141632  933376        933376     0   36420075008             0 100.00000
Completed

Auch lässt sich der Inhalt einer Partition in eine Datei kopieren. Dazu muss zuerste eine entsprechende Datei angelegt werden:

# touch /usr/ad4s3e.dump
# recoverdisk /dev/ad4s3e /usr/ad4s3e.dump
        start    size     block-len state          done     remaining    % done
    101711872 1048576     435159040     0     101711872     435159040  18.94531

Ist das Kopieren abgeschlossen, kann die in eine Datei kopierte Partition z.B. nur lesend ins System gemountet werden:

# recoverdisk /dev/ad4s3e /usr/ad4s3e.dump
        start    size     block-len state          done     remaining    % done
    535822336 1048576       1048576     0     536870912             0 100.00000
Completed
# mdconfig -a -t vnode -f /usr/ad4s3e.dump -u 0
# mount -o ro /dev/md0 /mnt

Werden die kopierten Daten nicht mehr benötigt, können diese wieder aus dem System entfernt werden:

# umount /mnt
# mdconfig -d -u 0

Seit FreeBSD 7.0 findet man recoverdisk im FreeBSD -Basissystem. Mehr Informationen zu recoverdisk findet man in der Manpage recoverdisk(1).

Related Entries:
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
FreeBSD-Portbaum auf Fehler überprüfen
 Permalink
Prev Next91-100/305