syslog.warten.de

Deutsche Übersetzung Der LPI-Fragen Fehlerhaft

Letzte Woche habe ich an einer LPI-Zertifizierungsprüfung teilgenommen. Qualität und Schwierigkeitsgrad der Fragen waren wie erwartet.

Enttäuscht war ich von der Qualität der deutschen Übersetzungen. Über einfache Rechtschreibfehler (wie etwa “Prufüng” im Prüfungszeugnis) kann ich hinwegsehen. Mindestens eine der Multiple-Choice-Prüfungsfragen war jedoch aufgrund der fehlerhaften Übersetzung nicht lösbar. Glücklicherweise war es möglich, sich die englische Originalfrage anzeigen zu lassen. Es war eine Frage zur maximalen Anzahl von Festplatten an einem SCSI-1-Bus. Bei den deutschen Antworten waren devices und hard disks jeweils mit “Platten” übersetzt worden, mit der Folge, dass keine der deutschen Antworten richtig war.

Verunsichert durch diesen Fehler habe ich manche der weiteren Fragen erst nach Prüfung der englischen Fragen beantwortet. Für die nächste Prüfung überlege ich nun, gleich den englischen Test zu machen.

Debian Linux Mit Debootstrap Auf Host Europe VPS Installieren

[EDIT: December 8, 2007 9:45 PM: Das nachfolgend beschriebene Vorgehen führt zu Fehlern beim Restore eines über das Virtuozzo Control Panel erstellten Backups. Es ist daher nicht zu empfehlen, wenn die Backup-Funktionalität des Control Panels genutzt werden soll. Weitere Informationen zur Beeinträchtigung finden Sie in diesem Artikel.]

Das Debian-Image der VPS Linux bei Host Europe hat mehr Pakete vorinstalliert als für manche Zwecke notwendig sind. Diese könnten natürlich einfach entfernt werden. In diesem Fall soll jedoch ein Debian Linux mit debootstrap auf dem virtuellen Server komplett neu installiert werden. Das Vorgehen orientiert sich weitgehend an der Installationsanleitung der Debian-Entwickler. Durch die Virtualisierungstechnik sind jedoch einige Besonderheiten zu beachten.

Zu Beginn ist der Server über das Virtuozzo Power Panel im Menüpunkt VPS Management > Maintenance in den Repair Mode zu versetzen. Das Virtuozzo Power Panel ist über https://VPS-IP:4643/ aufzurufen. Im Repair Mode ist das Dateisystem der VPS nach /repair gemountet.

Das Dateisystem der VPS wird komplett gelöscht, danach debootstrap installiert und ausgeführt.

# rm -rf /repair/*  
# mkdir /tmp/work  
# cd /tmp/work/  
# wget http://ftp.hosteurope.de/mirror/ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap\_1.0.7\_all.deb  
# ar -xf debootstrap\_1.0.7\_all.deb  
# cd /  
# zcat /tmp/work/data.tar.gz | tar xv  
# /usr/sbin/debootstrap –arch i386 etch /repair http://ftp.hosteurope.de/mirror/ftp.debian.org/debian/ 

Nachdem das Basissystem installiert ist, müssen ein paar Anpassungen vorgenommen werden. In der Regel können die Konfigurationsdateien aus dem Repair Mode mit cp -a /etc/filename /repair/etc/filename übernommen werden. Es werden die Pseudo-Dateisysteme in fstab hinzugefügt, …

# vi /repair/etc/fstab 

proc  /proc       proc    defaults    0    0  
none  /dev/pts    devpts  rw          0    0 

… ein Template für die Netzwerkkonfiguration hinterlegt, …

# vi /repair/etc/network/interfaces.template 

auto lo  
iface lo inet loopback  
       address 127.0.0.1  
       netmask 255.0.0.0  
       broadcast 127.255.255.255  
       up ip route replace 127.0.0.0/8 dev lo 

… die sources.list erweitert, …

# vi /repair/etc/apt/sources.list 

#Host Europe server:  
deb http://ftp.hosteurope.de/mirror/ftp.debian.org/debian etch main  
deb http://ftp.hosteurope.de/mirror/ftp.debian.org/debian-security etch/updates main 
deb http://security.debian.org etch/updates main  
deb-src http://security.debian.org/ etch/updates main

#deb http://ftp.de.debian.org/debian/ etch main contrib non-free  
#deb-src http://ftp.de.debian.org/debian etch main contrib non-free  
… die hosts-Datei angepasst und …

# vi /repair/etc/hosts 

127.0.0.1     localhost localhost.localdomain  
10.20.30.40   example.com 

… in der inittab werden die Konsolen einkommentiert, da sie auf dem VPS nicht nutzbar sind.

# vi /repair/etc/inittab   
[...]  
# Note that on most Debian systems tty7 is used by the X Window System,  
# so if you want to add more getty’s go ahead but skip tty7 if you run X.  
#  
#1:2345:respawn:/sbin/getty 38400 tty1  
#2:23:respawn:/sbin/getty 38400 tty2  
#3:23:respawn:/sbin/getty 38400 tty3  
#4:23:respawn:/sbin/getty 38400 tty4  
#5:23:respawn:/sbin/getty 38400 tty5  
#6:23:respawn:/sbin/getty 38400 tty6  
[...] 

Es wird eine chroot-Umgebung aufgebaut, damit zusätzliche Pakete installiert und das neue System bearbeitet und konfiguriert werden können.

# LANG=C chroot /repair /bin/bash 

Zuerst wird die Zeitzone eingestellt.

# tzconfig 

Dann muss der sshd installiert werden. Außerdem werden locales und console-data installiert, um Sprach- und Lokalisierungsanpassungen vornehmen zu können. Um beispielsweise ein englischsprachiges System mit einer deutschen Tastaturbelegung zu nutzen, wird bei den locales “en_US.UTF-8″ und in console_data die Keymap “pc / qwertz / German / Standard / latin1″ ausgewählt.

# aptitude update  
# aptitude install openssh-server  
# aptitude install locales  
# dpkg-reconfigure locales  
# aptitude install console-data  
# dpkg-reconfigure console-data 

Da bei jedem Neustart des V-Servers der Hostname zurückgesetzt wird, muss er beim Booten neu geschrieben werden. Es wird hierfür die in der Host Europe FAQ vorgeschlagene Lösung eingesetzt.

# vi /etc/init.d/hostname_vps 

#!/bin/bash  
HOSTNAME=example.com  
echo $HOSTNAME > /etc/hostname  
/bin/hostname $HOSTNAME  
if [ -f /etc/my.resolv.conf ]; then cp /etc/my.resolv.conf /etc/resolv.conf ; fi  
exit  

Das Init-Skript wird erstellt, mit Ausführrechten versehen und verlinkt, damit es bei jedem Bootvorgang ausgeführt wird.

# chmod x /etc/init.d/hostname_vps  
# update-rc.d hostname_vps defaults 09 

Zum Abschluß wird das root-Passwort gesetzt, die chroot-Umgebung verlassen und ausgeloggt.

# /etc/init.d/ssh stop  
# passwd  
# exit  
# logout 

Die Installation von Debian Linux ist nun vollständig abgeschlossen und der Server muss rebootet werden. Hierzu wird der Repair Mode im Virtuozzo Power Panel beendet. Nach ein paar Sekunden sollte man sich auf dem neugestarteten Server anmelden können.

Plesk Auf Debian über Paketverwaltung Installieren

Das Konfigurationswerkzeug Plesk kann sehr einfach über die Paketverwaltung auf einem Debian Linux installieren werden. Im folgenden Beispiel wird Plesk 8.x.x auf einem Debian Etch installiert. Es stehen außerdem Repositories für Sarge sowie Ubuntu Dapper und Edgy zur Verfügung.

Zunächst muss das Plesk-Repository der Paketverwaltung bekannt gemacht werden. Es wird in der Datei /etc/apt/sources.list eingetragen.

# vi /etc/apt/sources.list 

deb http://autoinstall.plesk.com/debian/PSA8 etch all 

Nachdem die neue Paketquelle hinzugefügt wurde, muss die Liste der Pakete aktualisiert werden. Dann kann Plesk installiert werden.

# aptitude update  
# aptitude install psa 

Weitere Plesk-Komponenten können ebenfalls über die Paketverwaltung installiert werden.

# aptitude install psa-backup-manager psa-firewall psa-spamassassin psa-locale-de-de psa-mod-fcgid-configurator psa-vpn psa-watchdog 

Eine Liste aller angebotenen Pakete kann man sich mit folgendem Befehl ausgeben lassen:

$ wget -qO – http://autoinstall.plesk.com/debian/PSA8/dists/etch/all/binary-i386/Packages.gz | zcat | grep ^Package: | awk ‘{print $2}’ | sort 

Nach der Installation kann man Plesk über https://example.com:8443/ aufrufen. Die Zugangsdaten nach der Installation sind “admin” (Benutzername) und “setup” (Passwort) und sollten umgehend geändert werden. Das aktuelle Passwort kann in der Datei /etc/psa/.psa.shadow ausgelesen werden.

Compiz Und Window-Decorations

Auf einem Ubuntu Linux mit Nvidia-Grafikkarte war es der in die Datei /etc/X11/xorg.conf (Section “Screen”) hinzugefügte Eintrag

Option “AddARGBGLXVisuals” “True” 

der Compiz dazu bewegte, den Desktop mit Window-Decorations zu zeichnen.

Gameserver Für Enemy Territory: Quake Wars Einrichten

Die Ankündigung eines nativen Linux-Clients für Enemy Territory: Quake Wars (ETQW) hat mein Interesse an dem Spiel geweckt und die kürzlich erschienene Demo hat mir bisher viel Spaß gemacht. Es kam daher die Idee auf, einen eigenen Gameserver zu betreiben. Die Installation des Dienstes und sein Aufruf mit dem Start-Stop-Daemon über ein Init-Skript auf einem Server mit Debian GNU/Linux wird in diesem Artikel beschrieben.

Zuerst ist das Installationspaket herunterzuladen. Das Paket kann über BitTorrent geladen werden. Außerdem stehen viele Downloadmirrors (HTTP) zur Verfügung. Wer das Paket mit wget downloaden will, wird bei den meisten Mirrors auf Schwierigkeiten stossen. Bei Internode konnte zum Zeitpunkt des Entstehens dieses Artikels ohne Einschränkungen mit wget geladen werden.

Befindet sich das Installationspaket auf dem Server, können die MD5-Prüfsumme verifiziert, die Ausführrechte gesetzt und anschliessend die Installation gestartet werden. Es werden alle Voreinstellungen des Installers übernommen und die Programmdateien im Verzeichnis /usr/local/games/etqw.demo.server/ installiert.

$ md5sum ETQW-demo-server.3.x86.run  
e1744f7827e1cab9a4cc05b06028e7ac ETQW-demo-server.3.x86.run  
$ chmod a x ETQW-demo-server.3.x86.run  
# ./ETQW-demo-server.3.x86.run 

Zur Konfiguration des Gameservers dient die Datei server.cfg im Verzeichnis base im Installationspfad. Für den unerfahrenen Administrator, der zum ersten Mail einen Gameserver einrichtet, mag der Config file creator eine Hilfe sein.
Im gleichen Verzeichnis befindet sich noch die Datei usergroups.dat, in der ein Passwort gesetzt werden kann, wenn eine Remote Administration des Gameservers gewünscht ist. Es sind die Kommentarzeichen (‘//’) zu entfernen und die Zeichenfolge “PASSWORD” durch das gewünschte Passwort zu ersetzen. Die zu ändernde Zeile sieht wie folgt aus:

group Admin {  
//password PASSWORD 

An dieser Stelle sind Installation und Konfiguration des Gameservers abgeschlossen und der Dienst könnte gestartet werden. Aber wie? Der Hersteller sieht hierfür offenbar das Skript etqw-dedicated im Installationsverzeichnis vor. Der Nachteil ist, dass es mit den Rechten des aufrufenden Benutzers ausgeführt wird. Beendet der aufrufende Benutzer seine Terminalsitzung (beispielsweise SSH-Verbindung) wird außerdem der Serverdienst beendet. In den einschlägigen Foren sind Tipps zu finden, den Gameserver in einer screen-Session laufen zu lassen. Das ist ein Ausweg aus letztgenannter Einschränkung, aber weit weg von einer ordentlichen Lösung. Wie jeder andere Serverdienst soll auch der Gameserver über ein Init-Skript und den Start-Stop-Daemon mit eigenen Benutzerrechten gestartet werden. Eine entsprechende Lösung, die nicht auf screen und sudo-Spielereien setzt, konnte ich leider nicht finden und so entwickelte ich sie selbst.

Zuerst wird ein neuer Systembenutzer benötigt, mit dessen Rechten der Gameserver gestartet werden soll. Der folgende Befehl legt den Systembenutzer und die Gruppe etqwded mit dem Homeverzeichnis /var/lib/etqw-dedicated an.

# adduser –system –home /var/lib/etqw-dedicated –group etqwded 

Als nächstes wird das Init-Skript mit dem folgenden Inhalt in /etc/init.d/etqw-dedicated gespeichert. Die Optionen “ set fs_userpath $ETQW_HOME set fs_savepath $ETQW_HOME” werden hier dauerhaft gesetzt, um zu gewährleisten, dass die Einstellungen in /var/lib/etqw-dedicated statt in ~/.etqw gespeichert werden.

#! /bin/sh  
### BEGIN INIT INFO  
# Provides: etqwded.x86  
# Required-Start: $local\_fs $remote\_fs  
# Required-Stop: $local\_fs $remote\_fs  
# Default-Start: 2 3 4 5  
# Default-Stop: 0 1 6  
# Short-Description: ETQW dedicated server  
# Description: Enemy Territory: Quake Wars dedicated server  
### END INIT INFO 
# Debian init.d script for the Enemy Territory: Quake Wars dedicated server  
# Copyright © 2007  
# Stefan Warten   
#  
# This file is licensed under the terms of the GNU General Public License,  
# Version 2 or any later version published by the Free Software Foundation.

set -e  
export LD\_LIBRARY\_PATH=“$LD\_LIBRARY\_PATH:.”

ENABLED=

. /lib/lsb/init-functions

# Source defaults file. Edit that file to configure this script.  
if [ -e /etc/default/etqw-dedicated ]; then  
  . /etc/default/etqw-dedicated  
fi

# Quit quietly, if $ENABLED is 0.  
test “$ENABLED” != “0″ || exit 

if [ ! -x "$ETQW_DEDSERVER" ]; then  
  log\_failure\_msg “ETQW dedicated server ‘$ETQW_DEDSERVER’ does not exist or is not “   
    “executable.”  
  exit 5  
fi

if [ ! -d "$ETQW_DIR" ]; then  
  log\_failure\_msg “ETQW directory ‘$ETQW_DIR’ does not exist.”  
  exit 6  
fi

if [ -z "$ETQW_USER" ]; then  
  log\_failure\_msg “ETQW_USER variable is empty. Set it to a user to run “   
    “the ETQW dedicated server.”  
  exit 6  
fi

PIDFILE=/var/run/etqw-dedicated.pid  
DESC=“ETQW dedicated server”  
NAME=`basename $ETQW_DEDSERVER`  
ETQW_OPTS=“ set net\_serverDedicated 1 set fs\_userpath $ETQW\_HOME set fs\_savepath $ETQW\_HOME $ETQW\_OPTS exec server.cfg”

is_running()  
{  
  retval=1  
  if [ -r $PIDFILE ]; then  
    pid=`cat $PIDFILE`  
    if [ -e /proc/$pid ]; then  
      procname=`/bin/ps h -p $pid`  
      [ -n "$procname" ] && retval=  
    fi  
  fi  
  return $retval  
}

start()  
{  
  log\_begin\_msg “Starting $DESC: $NAME”  
  if is_running; then  
    log\_progress\_msg “already running”  
  else  
    start-stop-daemon –start –quiet –background –pidfile $PIDFILE   
      –make-pidfile –user $ETQW_USER –chuid $ETQW_USER –chdir $ETQW_DIR   
      –exec $ETQW_DEDSERVER — $ETQW_OPTS  
  fi  
  log\_end\_msg   
}

stop()  
{  
  log\_begin\_msg “Stopping $DESC: $NAME”  
  if ! is_running; then  
    log\_progress\_msg “not running”  
  else  
    start-stop-daemon –stop –quiet –oknodo –pidfile $PIDFILE   
      –user $ETQW_USER –exec $ETQW_DEDSERVER  
  fi

  rm -f $PIDFILE  
  log\_end\_msg   
}

status()  
{  
  STATUS=“Status of $DESC:”  
  if is_running; then  
    log\_success\_msg “$STATUS running.”  
  else  
    log\_success\_msg “$STATUS stopped.”  
  fi  
}

case “$1″ in  
  start)  
    start  
    ;;

  stop)  
    stop  
    ;;

  restart|force-reload)  
    stop  
    sleep 1  
    start  
    ;;

  status)  
    status  
    ;;

  *)  
    log\_success\_msg “Usage: $0 {start|stop|restart|force-reload|status}” >&2  
    exit 1  
    ;;  
esac

exit

Das Init-Skript bezieht, wie bei Debian üblich, manche seiner Variablen über eine Konfigurationsdatei. Es ist die Datei /etc/default/etqw-dedicated mit dem folgenden Inhalt anzulegen. Der geneigte Administrator kann hier eigene Einstellungen vornehmen.

# This file is /etc/default/etqw-dedicated, it is a configuration file for the  
# /etc/init.d/etqw-dedicated init script. 
# Set this to 1 to enable and to 0 to disable the init script.  
ENABLED=“1″

# The ETQW dedicated server will be started with the permissions of this user.  
ETQW_USER=“etqwded”

# This is the home directory of the user runnning the ETQW dedicated server.  
ETQW_HOME=“/var/lib/etqw-dedicated”

# This is the binary directory of the ETQW dedicated server.  
ETQW_DIR=“/usr/local/games/etqw.demo.server”

# This is the location of the ETQW dedicated server binary, that the init script uses.   
ETQW_DEDSERVER=“$ETQW_DIR/etqwded.x86″

# Here you can specify additional options to pass to the ETQW dedicated server.  
#ETQW\_OPTS=” set net\_ip 10.20.30.40 set net_port 27733″

Sind beide Dateien angelegt, müssen das Init-Skript noch ausführbar gemacht und die Links für Init gesetzt werden, damit der Dienst bei Änderungen des Runlevels automatisch gestartet oder beendet wird.

# chmod a x /etc/init.d/etqw-dedicated  
# update-rc.d etqw-dedicated defaults 

Der Gameserver kann nun mit dem folgenden Kommando gestartet werden. Er wird dann über den Start-Stop-Daemon als Prozess des Benutzers etqwded ausgeführt. Die zur Laufzeit erstellten Dateien werden in /var/lib/etqw-dedicated gespeichert.

# /etc/init.d/etqw-dedicated start 

Um den Gameserver betreiben zu können, muss sichergestellt sein, dass eingehender Traffic auf den UDP-Ports 3074 und 27733 und ausgehender Traffic auf TCP-Port 3074 erlaubt ist. Es kann erforderlich sein, dass die Firewall (iptables) entsprechend angepasst werden muss.

SSL-Zertifikate Erstellen Und Mit Apache Nutzen

In der Kommunikation zwischen Client und Server werden Zertifikate benötigt, wenn sichergestellt werden soll, dass sich die Parteien vertrauen können. Ein Zertifikat muss von einer Zertifizierungsstelle (Certification Authority, CA) signiert werden; die CA bürgt für die Echtheit des Zertifikats.

Es soll ein SSL-Zertifikat (X.509) erstellt werden. Unabhängig davon, ob das Zertifikat von einer externen CA oder selbst signiert werden soll, muss zuerst immer eine Bürgschaftsanfrage (certificate request, CSR) generiert werden.

$ openssl req -new -nodes -keyout private\_key.pem -out private\_key.pem -days 365  
Generating a 1024 bit RSA private key  
…………………….   
……….   
writing new private key to ‘private_key.pem’  
—–  
You are about to be asked to enter information that will be incorporated  
into your certificate request.  
What you are about to enter is what is called a Distinguished Name or a DN.  
There are quite a few fields but you can leave some blank  
For some fields there will be a default value,  
If you enter ‘.’, the field will be left blank.  
—–  
Country Name (2 letter code) [AU]:DE  
State or Province Name (full name) [Some-State]:Berlin  
Locality Name (eg, city) []:Berlin  
Organization Name (eg, company) [Internet Widgits Pty Ltd]:  
Organizational Unit Name (eg, section) []:  
Common Name (eg, YOUR name) []:example.com  
Email Address []:webmaster@example.com 
Please enter the following ‘extra’ attributes  
to be sent with your certificate request  
A challenge password []:  
An optional company name []:  

Der Befehl erstellt den privaten Schlüssel und das CSR in einer Datei. Auf die Angabe eines Passworts wurde aus praktischen Gründen verzichtet. Würde ein privater Schlüssel mit Passwort in einen Serverdienst eingebunden werden, müsste das Passwort bei jedem Start des Dienstes erneut eingegeben werden. Da der private Schlüssel somit ungeschützt ist, muss er unbedingt vor fremden Zugriffen geschützt werden.

Nun kann das CSR an die CA übergeben und signiert werden. Eine gemeinschaftsbetriebene, nicht-kommerzielle Zertifizierungsstelle, die kostenfrei X.509-Zertifikate für verschiedene Einsatzgebiete ausstellt ist CAcert.

—–BEGIN CERTIFICATE REQUEST—–  
ICHBINUNGÜLTIG9tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu/ppznA8u  
DD0UzHX/YQj5doqi2vWvGNhg849RJpbJ/ vlW/ZhkBTJ6M8ry/dzg1lp XK08kkK  
BgNVBAcTBkJlcmxpbjEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRk  
MRQwEgYDVQQDEwtleGFtcGxlLmNvbTEkMCIGCSqGSIb3DQEJARYVd2VibWFzdGVy  
pLZMP3XDjvFkZW8F22Aq3ySBaLGagKHxvwIDAQABoAAwDQYJKoZIhvcNAQEFBQAD  
Eob45fj1XE9AOqTAT8noFcdK1uixXsgPYfqNiQrVXfAunoiLUhYYFYXRc1qAI3dA  
MIIBzzCCATgCAQAwgY4xCzAJBgNVBAYTAkRFMQ8wDQYDVQQIEwZCZXJsaW4xDzAN  
gYEAn/HkOtZyMCLZRkhG1Prph/1hbLilyARVul s8Z/J TnAWw6fxcyDpXGDTfNj  
FDj7WXcxZ pfPF9lzfz8mI3NLNr8BSx/ejM7qHAjcie RUkUQo2KToSFv2D9w6cq  
2eZW3F9helt3qae8hXBfbSTORYozLRF8c ZQHKkCJJjoZUs=  
—–END CERTIFICATE REQUEST—– 

Nach einer Identitätsprüfung wird die Zertifizierungsstelle ein signiertes, öffentliches Zertifikat zurückgeben, das zusammen mit dem privaten Schlüssel benutzt werden kann. Das Zertifikat kann in die oben genannte Datei kopiert werden.

Um das Zertifikat für eine sichere Verbindung mit HTTPS zu verwenden, muss es auf den Server kopiert und im Webserver eingebunden werden. Im Beispiel wird ein Apache2 auf einem Debian GNU/Linux verwendet.

# cp private\_key\_and_certificate.pem /etc/apache2/ssl/example.com.pem  
# chmod 600 /etc/apache2/ssl/example.com.pem 

Im Webserver wird das Zertifikat mit der Direktive SSLCertificateFile eingebunden.

NameVirtualHost *:443  

ServerAdmin webmaster@example.com  
ServerName example.com  
SSLEngine On  
SSLCertificateFile /etc/apache2/ssl/example.com.pem

Damit sind alle Vorbereitungen beendet und die sichere Verbindung kann genutzt werden.

Received: from \[1.2.3.4\] ([5.6.7.8])  
    by post.webmailer.de (mrclete mo32) (RZmta 11.0)  
    with RC4-MD5 encrypted ESMTP id V03a42j7FEM162 for ;  
    Wed, 15 Aug 2007 16:54:05 0200 (MEST)

Swap Erweitern Durch Dateien

Wenn die als Swap zur Verfügung stehende Festplattenpartition zu klein ist, kann der Swap-Speicher durch Dateien im Linux-Filesystem erweitert werden. Dieser Weg sollte selbstverständlich nur eine Ausnahme darstellen, da ein Swap-Speicher in einer Datei noch langsamer als ohnehin schon ist.

Um eine Swap-Datei hinzuzufügen ist wie folgt vorzugehen:

Zuerst wird eine Datei der gewünschten zusätzlichen Swap-Größe erstellt (hier 1GB).

# dd if=/dev/zero of=/swap-file bs=1024 count=1048576 

Nun wird ein Swap-Bereich in der Datei erstellt…

# mkswap /swap-file 

… und aktiviert.

# swapon /swap-file 

Damit das neue Swap-File beim Booten aktiviert wird, muss folgender Eintrag der Datei /etc/fstab hinzugefügt werden:

/swap-file swap swap defaults 0 0

Installation Von Oracle Database XE Auf Ubuntu Linux

Die Installation von Oracle® Database Express Edition 10g Release 2 (10.2) for Linux erfolgt auf Ubuntu Linux (feisty) wie in der Anleitung des Herstellers beschrieben.
Nicht in der Anleitung erwähnt wird, dass es auch ein Debian repository für Oracle XE gibt, das sich mit folgendem Eintrag in der Datei /etc/apt/sources.list nutzen lässt.

deb http://oss.oracle.com/debian unstable main non-free

Der für Secure-APT benötigte Public Key (2E2BCDBCB38A8516) wird geladen, geprüft und installiert.

# wget -q http://oss.oracle.com/el4/RPM-GPG-KEY-oracle
# gpg –import RPM-GPG-KEY-oracle
gpg: key B38A8516: public key “Oracle OSS group (Open Source Software group) ” imported
gpg: Total number processed: 1
gpg:               imported: 1
# gpg –fingerprint build@oss.oracle.com
pub   1024D/B38A8516 2006-09-05 [expires: 2011-09-04]
      Key fingerprint = 1122 A29A B257 825F 322C 234E 2E2B CDBC B38A 8516
uid                  Oracle OSS group (Open Source Software group) 
sub   2048g/0042D4F4 2006-09-05 [expires: 2011-09-04]
# gpg –armor –export B38A8516 | apt-key add -
OK

Nun kann das Paket installiert werden.

# aptitude install oracle-xe-universal

Die Oracle Datenbank erwartet bei 512 Megabyte oder mehr RAM mindestens ein Gigabyte Swap space. Der erforderliche Speicher stand auf dem System nicht zur Verfügung und so wurde der Swap durch eine Datei erweitert. Offenbar findet die Überprüfung der Größe des Swap-Speichers nur bei der Installation und nicht beim Betrieb der Datenbank statt. Somit wird das Swap-File nur für die Installation benötigt.
Ist die Installation abgeschlossen, muss die Datenbank mit folgendem Befehl konfiguriert werden.

# /etc/init.d/oracle-xe configure

Weiterhin sind die Umgebungsvariablen für Oracle-Benutzer zu setzen. Bei dieser Installation soll allein der Benutzer oracle die Datenbank benutzen. Hierzu wird in das .bash_profile des Benutzers ein Skript eingebunden, dass alle benötigten enviroment variables setzt.

# echo ". /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh" >> /usr/lib/oracle/xe/.bash_profile

Die Installation lief scheinbar erfolgreich durch und es wurde der fehlerfreie Start des Oracle Net Listener und der Oracle Database 10g Express Edition Instance gemeldet. Tatsächlich brachen alle Oracle-Prozesse sofort ab, weil der Net Listener keine Verbindung zum target host aufbauen konnte.
Die Ursache war in der Datei /etc/hosts zu finden. Da der Ursprung des Fehlers in der Datei unklar ist, sei der Hinweis auf sie an dieser Stelle ausreichend.
Ist die Oracle-Datenbank erfolgreich installiert und konfiguriert worden, kann es losgehen. Da der Benutzer oracle Mitglied der Gruppe dba ist, muss kein Passwort eingegeben werden.

# su – oracle
$ sqlplus sys as sysdba
SQL*Plus: Release 10.2.0.1.0 – Production on Fri Aug 10 22:04:28 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 10g Express Edition Release 10.2.0.1.0 – Production
SQL>