Linux als SOHO-Server

für Linux- und Windows-Clients
http://linux.eusterholz.dyndns.org

Kapitel:

Home
Debian Installation
Debian Etc.
Internet-Zugang
Telnet
FTP
r-Utilities
SSH
Printing
NTP
Nameserver
NFS/NIS/Automount
Samba (SMB-Server)
Apache (WEB-Server)
Modem / ISDN
Backup
Etc.


Subversion

Wake-On-LAN ] Power Off ] XDMCP-Zugang ] VNC ] Sun-Java ] Ajaxterm ] Scann-Server ] webCDwriter ] Relaiskarte (parallel) ] Relaiskarte (seriell) ] UPS ] LIRC ] Clonezilla ] [ Subversion ] SMS unter Linux ]


Bei Subversion, oder kurz auch 'SVN' genannt, handelt es sich um eine Open-Source-Software zur Versionskontrolle von  Dateien und Verzeichnissen. Eine Versionskontrollsystem ist sinnvoll, um den Überblick der Änderungen über einen langen Zeitraum bei Software-Projekten zu behalten. Speziell ist dieses sehr hilfreich, wenn mehrere Personen an einem Projekt netzwerkübergreifend gemeinsam arbeiten.
Ein sehr bekannter Vertreter bzw. auch Vorläufer von Subversion ist das 'Concurrent Versions System' oder meist kurz 'CVS' genannt. Subversion besitzt alle wichtigen Merkmale von 'CVS', weiterhin sind einige neue Fähigkeiten implementiert. Da die Bedienung von Subversion an 'CVS' angelehnt ist, sollte ein Wechsel auf 'SVN' den Benutzern nicht schwer fallen.

Die Versionierung erfolgt in einem zentralen Projektarchiv, auch Repository genannt, in Form einer einfachen Revisionszählung. Alle Änderungen an den Daten werden im Repository aufzeichnet, so dass veraltete Daten wieder herzustellen oder sich Änderungen zwischen den verschiedenen Versionen angezeigt werden können. Dabei kann das SVN-Repository den Nutzern auf unterschiedlichen Übertragungswege zur Verfügung gestellt werden:

  • file:///    Direkter Zugriff auf das Repository (auf der lokalen Festplatte)
  • svn://      Zugriff über das 'svn'-eigene Protokoll (Standard-Port ist: '3690')
  • svn+ssh://  Wie der 'svn'-Zugriff, jedoch durch einen 'ssh'-Tunnel
  • http://     Zugriff über das WebDAV-Protokoll auf einen 'svn'-fähigen 'Apache2'-Server
  • https://    Wie 'http'-Zugriff, allerdings mit 'SSL'-Verschlüsselung

Auf der vorliegenden Seite werden die notwendigen Schritte zum Aufbau eines einfachen 'SVN'-Servers aufgezeichnet. Bei der Anleitungen wird der Zugriff auf dem SVN-Server über die Übertragungsprotokolle 'svn://' und 'http://' vorgestellt.

Bemerkungen zum Repositories / Projekt-Layout

Vorab noch ein paar Bemerkungen zum Repositories und Projekt-Layout. Das Repository ist der zentrale Speicherbereich der Daten, es beinhaltet den aktuellen Stand inklusiver Versions-Geschichte in einer bauartigen Speicherung.
Auf einem System stellt sich das Repository als eine Art Datenbank da, d.h. die Datenbank hat einen realen Pfad im Dateisystem (gelbe Markierung). Weitere Einteilungen sind mit normalen Betriebssystemmitteln (z.B. 'ls' oder 'cat') nicht mehr nachzuvollziehen, da es sich um eine Datenbank handelt. Um die Datenbank-Bereiche (grüne Markierung) sichtbar zu machen, wird ein entsprechender SVN-Client benötigt.
Beim Repository kann zwischen zwei Typen gewählt werden, einmal die bekannte BerkleyDB ('bdb') und weiterhin doch ein Repository namens ('fsfs'). Der Type 'fsfs' ist moderner und leistungsfähiger. Mit der Option '--fs-type' kann der Typ beim Anlegen der Repositories festgelegt werden, der Default ist der Typ: 'fsfs'.

/var--/svn--/repository-+-/project_1-+-/trunk
                        |            +-/branches
                        |            +-/tags
                        |
                        +-/project_2-+-/trunk
                        |            +-/branches
                        |            +-/tags
                        |
                        +-/project_n-+-/trunk
                                     +-/branches
                                     +-/tags

Für Projekte, die mit Subversion verwaltet werden, bieten sich unterschiedliche Layouts für die Organisation an. So können mehrere Projekte in einem Repository existieren, oder  auch jedes Projekt kann in einem separaten Repository erstellt werden.
Unterhalb der Projekte hat sich die empfohlene und standardisierte Organisation aufgeteilt in die Verzeichnisse 'trunk', 'branch' und 'tags' bewährt. Dabei befindet sich im 'trunk'-Verzeichnis die Hauptentwicklungslinie, im 'branches'-Verzeichnis werden alternative Entwicklungspfade des Projektes verwaltet und im 'tags'-Verzeichnis ältere, in sich abgeschlossene Versionen des Projekts.

'svn://'-Zugang - Elementare Installation und Konfiguration von Subversion

Für einen Subversion-Server müssen zunächst die elementaren Komponenten installiert werden, des weiteren sind einige Dinge bezüglich des Aufbaus des Repositorys und dessen Zugriff zu berücksichtigen. Nachdem die elementaren Arbeiten erledigt sind, sollte der Subversion-Server über den 'svn://'-Zugang genutzt werden können, d.h. ein entsprechender SVN-Client kann auf den Server zugreifen.

Zunächst ist das Paket 'subversion' zu installieren, wobei zu bemerken ist, das dass Paket den Client- und Server-Anteil von Subversion beinhaltet. Die Installation kann unter Debian-Linux mittels 'aptitude' einfach erledigt werden:

aptitude install subversion

Entsprechende Abhängigkeiten zu anderen Debian-Paketen sollten automatisch aufgelöst werden.
Als nächstes empfiehlt es sich, eine eigene Gruppe für die Subversion-Benutzer anzulegen, in der die einzelnen Benutzer eingetragen werden die Zugriff bekommen sollen:

groupadd svn-users

Es wird zunächst einen Gruppe: 'svn-users' erstellt.
Weiterhin wird hier exemplarischer Benutzer: 'svn-user' erstellt:

useradd -s /bin/bash -d /home/svn-user -m svn-user
passwd svn-user

Der exemplarische Benutzer 'svn-user' wird dann der Gruppe 'svn-users' hinzugefügt:

addgroup svn-user svn-users

Auch können andere, schon existierende Benutzer, mittels 'addgroup' der Subversion-Gruppe hinzugefügt werden.

Ein weiter wichtiger Schritt ist die Erstellung des Repositorys. Dabei wird als Beispiel, wie bei der obigen Erklärung, nur ein Repository für unterschiedliche Projekte angelegt. Zunächst ist das Verzeichnis, indem sich das Repository befinden soll, zu erstellen:

mkdir -p /var/svn/

Mit dem Befehl: 'svnadmin' kann nun das eigentliche leere Repository angelegt werden.

svnadmin create /var/svn/repository

In diesem Fall wird ein Repository mit ebenfalls dem Namen 'repository' erzeugt. Auch können neben diesem, noch weitere unabhängige Repositories angelegt werden. Mittlerweile nutzt Subversion standardmäßig die 'fsfs'-Datenbank. Möchte man stattdessen die Berkeley-Datenbank nutzen, ist dieses durch die Option '--fs-type' bei der Erstellung anzugeben.

Als nächstes sind die Rechte und Besitzverhältnisse des Repositorys festzulegen:

chown -R www-data:svn-users /var/svn/repository/
chmod -R 775 /var/svn/repository/

Mit 'chown' wird das Repository mit Rechten des Apache-Servers 'www-data' und Benutzern der Gruppe 'svn-users' versehen. Der Apache-Servers kommen im weiteren Verlauf dieser Seite zum tragen, wenn der SVN-Server für den 'http://'-Zugriff erweitert wird. Des weiteren werden die Zugriffsrechte mit 'chmod' gesetzt. Beide Operationen sind mit der Option '-R', für rekursiv, auf das Repository anzuwenden.

Als nächstes sind innerhalb des Repositorys noch weitere Einstellungen für den 'svn://'-Zugang zu konfigurieren. Dazu ist die Datei 'svnserve.conf', innerhalb des Repositorys, zu editieren:

/var/svn/repository/conf/svnserve.conf

...

[general]
### These options control access to the repository for unauthenticated
### and authenticated users. Valid values are "write", "read",
### and "none". The sample settings below are the defaults.
anon-access = read
auth-access = write
### The password-db option controls the location of the password
### database file. Unless you specify a path starting with a /,
### the file's location is relative to the directory containing
### this configuration file.
### If SASL is enabled (see below), this file will NOT be used.
### Uncomment the line below to use the default password file.
password-db = passwd

...

### This option specifies the authentication realm of the repository.
### If two repositories have the same authentication realm, they should
### have the same password database, and vice versa. The default realm
### is repository's uuid.
realm = My First Repository

...

Wichtig sind dabei die markierten Zeilen, wobei 'anon-access = read' bedeutet, dass ein anonymer Lesezugriff erlaubt ist. Möchte man einen anonymen Zugriff unterbinden, so ist 'none' einzutragen. In der Zeile 'auth-access = write' wird festgelegt, das autorisierte Benutzer lesen und schreiben dürfen. Damit die Authentifizierung über die Datei 'passwd' innerhalb des Repositorys stattfindet, ist die Zeile 'password-db = passwd' auszukommentieren. Auch sollte ein 'realm' für das Repository gesetzt werden.

Danach sind die Benutzer und Passwörter in der 'passwd'-Datei zu hinterlegen:

/var/svn/repository/conf/passwd

### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.

[users]
# harry = harryssecret
# sally = sallyssecret
svn-user = secret
another_user = secret

In diesem Beispiel bekommt der Benutzer 'svn-user' mit dem Passwort 'secret' Zugriff auf das Repository.

Nun sollte alles für den SVN-Server berücksichtigt sein, und der eigentliche Server kann gestartet werden. Der Start des eigentlichen Servers 'svnserve' kann permanent über ein Start-Script während des Hochlaufs des Systems geschehen oder bei Bedarf über den Super-Dämon 'inetd'. Im Folgenden wird der Start über den 'inetd'-Dämon berücksichtigt, dazu ist die Konfigurationsdatei 'inetd.conf' um folgende Zeile zu ergänzen:

/etc/inetd.conf

...

svn       stream  tcp     nowait    www-data.svn-users        /usr/bin/svnserve svnserve -i -r /var/svn

Das erste 'svn' gibt den Service an, welcher in der Datei '/etc/services' definiert ist. Der Port für Subversion ist '3690'. In der fünften Spalte wird der Benutzer und die Gruppe angegeben, mit der das Programm in aus der sechsten Spalte gestartet werden soll. Dabei stehen die Parameter '-i' für den Start im 'inetd'-Modus und '-r' legt das 'root'-Verzeichnis der Repositories fest. Ein Zugriff auf Dateien in höheren Verzeichnisebenen ist somit nicht möglich.

Nach einem Neustart des Super-Dämons 'inetd' (mit: '/etc/init.d/openbsd-inetd restart') kann der SVN-Server genutzt werden.

'http://'-Zugang - Erweiterung des SVN-Servers

Ergänzend zum zuvor beschrieben 'svn://'-Zugriff kann der Zugang zum SVN-Server via 'http://' erweitert werden. Dazu verwendet Subversion in Zusammenarbeit mit dem 'Apache2'-Webserver das 'WebDAV'-Protokoll um Daten zwischen Client-Programm und Server auszutauschen. Für den 'http://'-Zugang ist das Paket 'libapache2-svn' zu installieren:

aptitude install apache2 libapache2-svn

Auch sollten alle weitere Abhängigkeiten wie die Installation von 'Apache2' oder 'WebDAV' aufgelöst werden.

Damit ein Web-Zugriff zum Repository gewährleistet ist, muss sichergestellt werden, dass die folgenden Apache-Module aktiviert sind:

a2enmod authz_user
a2enmod dav
a2enmod dav_svn

Standardmäßig sollte die Module jedoch schon aktiviert sein.

Danach ist die Datei 'dav_svn.conf' anzupassen:

/etc/apache2/mods-available/dav_svn.conf

...

<Location /svn>

  # Uncomment this to enable the repository
  DAV svn

  # Set this to the path to your repository
  # SVNPath /var/svn/
  # Alternatively, use SVNParentPath if you have multiple repositories under
  # under a single directory (/var/lib/svn/repo1, /var/lib/svn/repo2, ...).
  # You need either SVNPath and SVNParentPath, but not both.
  SVNParentPath /var/svn

...

  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd

  # To enable authorization via mod_authz_svn
  AuthzSVNAccessFile /etc/apache2/dav_svn.authz

  # The following three lines allow anonymous read, but make
  # committers authenticate themselves. It requires the 'authz_user'
  # module (enable it with 'a2enmod').
  <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  </LimitExcept>

</Location>

Wichtig ist die Angabe des 'SVNPath' (gelbe Markierung), hier ist Pfad zum Repository anzugeben. Die beiden grün markierten Einträge dienen der Authentifizierung und Autorisierung. Beide Dateien müssen noch erstellt bzw. bearbeitet werden.

Zunächst sollte die Datei 'dav_svn.passwd' erstellt werden, da laut Konfigurationsdatei der Autorisierungstyp: 'Basic' zum tragen kommt, kann das Erstellen der Datei mit dem Kommando 'htpasswd' erfolgen:

htpasswd -cm /etc/apache2/dav_svn.passwd svn-user

die Option '-c' steht für 'create' und darf nur beim ersten Benutzer zum Erstellen der Datei angewendet werden. Weitere Benutzer sind ohne Option '-c' der Passwort-Datei hinzuzufügen. Das Passwort ist nach dem 'htpasswd'-Kommando einzugeben und muss wiederholt werden.

htpasswd -m /etc/apache2/dav_svn.passwd another_user

Die Datei 'dav_svn.authz' regelt, was ein Nutzer darf, wenn er eingeloggt ist, so kann man z.B. Zugriff auf einzelne Repositories oder gar einzelner Verzeichnisse oder Dateien einschränken. Solange nur einige wenige Benutzer auf den Subversion-Server zugreifen reicht eine einfache Konfiguration aus:

/etc/apache2/dav_svn.authz

# Syntax for access
# =================
# [groups]
# <group name> = <user_1>, <user_2>, <user_n>
# 
# [{<project name>:}<path>]
# * = {r{w}}
# @<group name> = {r{w}}
# <user name> = {r{w}}

[groups]
svn-users = svn-user, another_user

[/]
* = r
@svn-users = rw

Die Konfiguration der obigen 'dav_svn.authz' besagt, alle Benutzer erhalten lesenden Zugriff und Mitglieder der Gruppe 'svn-users' haben zusätzlich schreibend Zugriff. Weitere Konfigurationsmöglichkeiten können dem Online-Buch zu Subversion entnommen werden.

Nun sollte auch der Zugriff via 'http://' fertig sein, nach dem Neustart des 'Apache2'-Servers mit kann ein erster Zugriff mit einem Web-Browser geprüft werden,. Dazu ist bezogen auf dieses Beispiel, folgender Link im Browser einzugeben: 'http://<SVN-Server>/svn/repository'.

Der Subversion-Server sollte nun für Clients über die Zugänge 'http://' nutzbar sein.

Subversion - Clients

Um mit einem SVN-Server arbeiten zu können, wird eine entsprechende Software auf dem Client benötigt. Auf der Homepage von Subversion findet man passende Programmpakete für eine Vielzahl gängiger Betriebssysteme in den jeweils dafür vorgesehen Formaten. Im Folgenden werden für die Betriebssysteme Linux und Windows jeweils eine kommandozeilenorientierter- bzw. grafischer -Client für Subversion vorgestellt.

Subversion Client unter Linu

Ein Linux-System, welcher auf einem Subversion-Server zugreifen möchte, benötigt ebenfalls das Paket: 'subversion'. Unter Debian kann dieses Paket, genau wie beim Server, mit:

aptitude install subversion

installiert werden. Danach kann schon via Kommandozeile auf dem SVN-Server zugegriffen werden.

Ein brauchbarer GUI-Client unter Linux stellt 'RapidSVN' dar. Nach der Debian-Installation mittels:

aptitude install rapidsvn

kann der Client von der GNOME-Oberfläche unter 'Anwendung => Entwicklung => RapidSVN' gestartet werden.

Auf der Homepage von 'RapidSVN' kann auch eine Windows-Version heruntergeladen werden.

Subversion unter Windows

Für Windows, bezogen auf der Kommandozeile, können die zertifizirten Binärdateien für Subversion von der Homepage von 'CollabNet' heruntergeladen werden. Auf der Downloadseite findet  sich ein Installer, der nur den Client-Anteil von Subversion enthält. Nach einer kurzen Registrierung kann der Client heruntergeladen und anschließend installiert werden. Nach der Installation kann ein SVN-Server über die Kommandozeile (DOS-Box) bedient werden.

Viel besser oder einfach genialer ist der freie GUI-Client für Subversion 'TortoiseSVN'. Die Open-Source-Software 'TortoiseSVN' basiert auf Subversion und bietet als Subversion-Client alle Funktionen, sowie eine leicht zu benutzende Oberfläche. 'TortoiseSVN' bietet keine eigene Programm-Oberfläche, sondern integriert sich in die Windows-Shell und ist damit in jedem Programm verfügbar, welches die Windows-Shell benutzt (Kontextmenü, Windows Explorer Ordner-/Datei-Ansicht etc.). Alle Befehle von Subversion sind über das Kontextmenü des Explorers zugänglich; 'TortoiseSVN' fügt dort ein eigenes Untermenü ein.

Auf der Download-Seite kann 'TortoiseSVN' als 32- und 64-bit-Version 'msi'-Paket heruntergeladen werden. Die Installation erledigt sich wie bei jeden 'msi'-Paket unter Windows. Hier ein Screenshot von  'TortoiseSVN':

Auf der Download-Seite von 'TortoiseSVN' kann ebenfalls eine deutsches Sprachpaket, sowie eine deutsche Bedienungsanleitung heruntergeladen werden.

Web-Frontends zu Subversion

Bezüglich Subversion gibt es eine Reihe von Web-Frontends, die dem Benutzer auf einfache Weise das Navigieren innerhalb der Repositories ermöglicht. Die bekanntesten Vertreter hierfür sind 'ViewVC' und 'WebSVN'. Beide Applikationen unterstützen neben grafischen 'Diffs' auch Syntax-Highlighting und Multimedia-Dateiformate. Das Handling der beiden erwähnten Frontends kann im Internet, ausgehend von der Seite: 'http://svn.debian.org/', ausprobiert werden.

ViewVC

'ViewVC' (vormals ('ViewCVS') ist ein Web-Frontend für 'CVS'- und Subversion-Repositories. Das Tool ist in der Sprache 'Python' geschrieben und kann unter Debian-Linux einfach installiert werden:

aptitude install viewvc

Bei der Installation sollten alle weiteren Abhängigkeiten automatisch aufgelöst werden. Die eigentliche Konfiguration findet in der Datei '/etc/viewcv/viewvc.conf' statt. Hierzu ein Ausschnitt mit den wichtigsten Konfigurations-Parametern:

/etc/viewvc/viewvc.conf

...

#cvs_roots = cvs: /home/cvsroot

...

#svn_roots = repository: /var/svn/repository ,
#            doc:        /var/svn/doc ,
#            src:        /var/svn/src ,
#            web:        /var/svn/web


...

root_parents = /var/svn/ : svn

...

use_enscript = 1

...

address = <a href="mailto:admin@eusterholz.tld">SVN Admin</a>

...

languages = de, en-us

...

Da 'ViewVC' in diesem Beispiel mit Subversion- und nicht mit 'CVS'-Repositories zusammenarbeiten soll, ist 'cvs_roots' auszukommentieren. Wenn mehrere Repositories bestehen, kann mittels 'root_parents' ein Verzeichnis angegeben werden, worin nach den Repositories gesucht wird.
Mit 'svn_roots' können die einzelnen Repositories mit Namen und Pfad angegeben werden, die Trennung der einzelnen Repositories ist mit einem Komma zu realisieren.
Ein weiterer sinniger Parameter ist 'use_enscript = 1', welches die Syntaxeinfärbung aktiviert. Auch sollte die E-Mail-Adresse mittels 'address' angepasst werden und die Sprache der Oberfläche mit 'language' festgelegt werden.

Nach den gemachten Konfigurationen kann 'ViewVC' direkt als 'CGI'-Aufruf vom Browser aus gestartet werden (Aufruf: 'http://<SVN-Server>/cgi-bin/viewvc.cgi').

Einen noch einfacheren Aufruf, der Form 'http://<SVN-Server>/viewvc/', kann erreicht werden, indem ein 'ScriptAlias' für den 'Apache2' definiert wird. Hierzu erstellt man am einfachsten innerhalb des Verzeichnisses '/etc/apache2/conf.d' einfach eine Datei mit den Namen 'viewvc' mit folgenden Inhalt:

/etc/apache2/conf.d/viewvc

# ViewVC
ScriptAlias /viewvc /usr/lib/cgi-bin/viewvc.cgi

Anschließend sollte der 'Apache2' neu gestartet werden. Durch den Aufruf mittels URL: 'http://<SVN-Server>/viewvc/' kann das Web-Frontend genutzt werden.

WebSVN

'WebSVN' ist ein Web-Frontend geschrieben in 'PHP', das eigens für Subversion entwickelt worden ist. Es macht einen etwas moderneren Eindruck bezüglich der Darstellung und kann sogar 'RSS'-Feeds erzeugen. Die Installation unter Debian geht wie gewohnt einfach von statten:

aptitude install websvn

Während der Installation sind einige Abfragen zur Konfiguration von 'WebSVN' zu beantworten:

  • Do you want to configure WebSVN now? <Yes>
  • Apache configuration:
      [*] apache
      [*] apache-ssl
      [*] apache-perl
      [*] apache2
      <Ok>
  • svn parent repositories: [/var/svn/] <Ok>
  • svn repositories:        [/var/svn/repository] <Ok>
  • Note on permissions      <Ok>

Die Resultate zur Konfiguration werden in der Datei: '/etc/websvn/svn_deb_conf.inc' abgelegt. Mittel des Kommandos 'dpkg-reconfigure websvn' kann die Dialog-Konfiguration jederzeit auch erneut durchlaufen werden. Eine weitere Konfiguration kann innerhalb der Datei: '/etc/websvn/config.php' erfolgen, hierzu bilden die Kommentare innerhalb der Datei und die Homepage von 'WebSVN' Hilfe an.

Nach der Installation kann der Zugriff über den Link: 'http://<SVN-Server>/websvn/' erfolgen.

Das Handling von 'WebSVN' sollte für einen geübten SVN-Benutzer selbsterklärend sein.

Anmerkungen

Umfassende Informationen bezüglich Subversion lassen sich aus dem Online-Buch zu Subversion gewinnen, siehe Link unten.

Für einen SVN-Server im lokalen Netzwerk (Intranet) sollten die Zugriffsmethoden 'svn://' bzw. 'http://' ausreichend sein. Für öffentlich erreichbare SVN-Server sollte besser das 'svn+ssh://'- bzw. 'https://'-Protokoll verwendet werden, entsprechende Realisierungsbeispiele lassen sich im Internet hierzu finden.

Weitere Infos

Homepage: Subversion http://subversion.tigris.org/
Online-Buch zu Subversion http://svnbook.red-bean.com/
Subversion Quick Reference Card http://www.cs.put.poznan.pl/csobaniec/Papers/svn-refcard.pdf
Subversion 1.6 Quick Reference Card http://www.open.collab.net/community/subversion/articles/SvnQuickReferenceCard.html
Subversion Forum (deutsch) http://forum.subversionbuch.de/
CollabNet Subversion Downloads http://www.collab.net/downloads/subversion/
RapidSVN - Homepage http://www.rapidsvn.org/
TortoiseSVN - The coolest Interface to (Sub)Version Control http://tortoisesvn.net/
Beispiel-Szenarien mit Subversion Beispiel-Szenarien mit Subversion
ViewVC - Web-based Version Control Repository Browsing http://viewvc.org/
WebSVN - Online subversion repository browser http://www.websvn.info/
Manualseiten zu: svn ; svnadmin man svn; man svnadmin
System-Dokumentation: subversion /usr/share/doc/subversion

Home ] Nach oben ] Wake-On-LAN ] Power Off ] XDMCP-Zugang ] VNC ] Sun-Java ] Ajaxterm ] Scann-Server ] webCDwriter ] Relaiskarte (parallel) ] Relaiskarte (seriell) ] UPS ] LIRC ] Clonezilla ] [ Subversion ] SMS unter Linux ]

letzte Änderung: 01. Januar 2014

 

Copyright © 2004 Norbert Eusterholz