Vergleich verschiedener Libraries fuer conf-Dateien

Joerg Desch joerg.desch at gmx.net
Do Jul 6 15:36:16 CEST 2000


Nachdem ein paar Anfragen bezüglich der `Ergebnisse' meiner Suche per
Mail eingetrudelt sind, poste ich einfach mal den Vergleich der bisher
gefundenen Libraries. Wer Anregungen / Änderungen / Ideen hat, kann sie
mir gerne Mailen.

Ach ja, das ganze war/ist ein `interner' quick-hack um mein Gedächtnis
zu entlasten. Das nur als pauschale Entschuldigung vorab. ;-)

Wenn weiteres Interesse besteht, dann kann ich die Sache um eine
abschließende Vergleichstabelle erweitern und ins Web stellen.



VERGLEICH VON CONFIG-LIBRARIES  6.7.2000 Joerg Desch <joerg.desch at gmx.net>
--------------------------------------------------------------------------

Diese Datei vergleicht eine Sammlung von Libraries, die
ASCII-Config-Dateien (im KDE / Windows Stil) bearbeiten können. Allen
Libraries, die ein Schreiben erlauben, haben gemein, daß Änderungen im
Speicher gemacht werden, und dann später als komplettes File
weggeschrieben werden! Dieses Vorgehen birgt allerdings die Gefahr in
sich, daß zwischenzeitliche Änderungen durch Dritte **nicht** erkennt
werden! Des weiteren können manuell gemachte Kommentare verloren gehen.


DOTCONF ------------------------------------------------------------------

`dotconf' ist ein Library, die _nur_ zum Lesen eines Konfigurationsfiles
zu verwenden ist. Das Wegschreiben von Änderungen an den geparsten Daten
ist zur Zeit nicht vorgesehen.

`dotconf' verwendet ein Array in dem jedem Keyword eine
callback-Funktion zugeordnet wird. Das Interface ist ganz ok. An
Features läßt die Lib fast keine Wünsche mehr offen. Sie Unterstützt
`quoted strings', includes, mehrzeilige Strings (wie in Perl),
Environment-Variablen und `last but no least' plugins um eigene Parser
mit einzubinden.

Quelle: http://www.azzit.de/dotconf/
Lizenz: LGPL


LIBCFG -------------------------------------------------------------------

Die Library ist noch ALPHA, was man ihr anmerkt (Doku..). Wie die
anderen Libs auch, lädt `libcfg' die Konfiguration geparst in den
Speicher. Hier erfolgen auch die Veränderungen, die am Ende dann
weggeschreiben werden können. Eine Besonderheit, die sie von den Anderen
abhebt, ist die Verwaltung von Keys in sogenannten Zonen.

	Global  -  Network wide configuration settings.
	Local   -  Machine specific configuration settings.
	Group   -  Group specific configuration settings.
	User    -  User specific configuration settings.

Dieses Feature ist zwar nett, aber da die Library weder file-locking
unterstützt, noch prüft, ob zwischenzeitliche Veränderungen
stattgefunden haben, ist dieses Feature IMO recht fraglich. Des weiteren
wird autoconf nicht unterstützt.

Quelle: http://www.yelm.freeserve.co.uk/libcfg/
Lizenz: modifizierte BSD


LIBCOMAN -----------------------------------------------------------------

`libcoman' ist eine "sauber" gemachte Library ausschließlich zum Lesen
von Konfigurationsdateien. Sie bietet bei weitem nicht den Umfang von
`dotconf', und ermöglicht keine Veränderungen an der Konfigurationsdatei
wie `libcfg'.

Erwähnenswert ist noch, daß autoconf verwendet. Als Lizenz wurde leider
die GPL anstatt der LGPL gewählt!

Quelle: http://www.digitaltunnel.com/~lepware/coman/
Lizenz: GPL


KEEPER -------------------------------------------------------------------

`Keeper' implementiert eine spezielle Form von
Konfigurationsdateien. Diese werden in einer eigenen Hierarchie des
Dateisystems untergebracht. Der beim Zugriff verwendete Key wird in
einen Pfad umgesetzt. Die Library ist `thread safe', aber auch nicht
gefeit gegen zwischenzeitliche Veränderungen. `keeper' kommt mit zwei
Tools (ktool und gkeeper) zum Bearbeiten der Konfigurationsdateien
daher. Das ändert allerdings nichts daran, daß mir persönlich das
Interface der Library nicht sonderlich gut gefällt.

`Keeper' unterstützt das Debian-Pakete und RPM's (enthält
spec-file). Außerdem wird autoconf verwendet.

Quelle: http://www.inf.bme.hu/~mszeredi/keeper/index.html
Lizenz: LGPL


LIBCONFIG ----------------------------------------------------------------

`libconfig' erlaubt das Lesen von Konfigurationsdateien in den Speicher,
die Manipulation im Speicher und das Wegschreiben der gepufferten
Daten. Als Besonderheiten bietet die Library die Unterstützung
verschiedener Dateiformate und das Erkennen und Behalten von
Kommentaren. Allerdings werden zwischenzeitliche Änderungen an der
Konfigurationsdatei auch hier nicht erkannt.  Des weiteren wird autoconf
nicht unterstützt. Als Lizenz wurde dummerweise die GPL anstatt der LGPL
gewählt!

Quelle:	http://metalab.unc.edu/pub/Linux/libs/
Lizenz: GPL


PARSECFG -----------------------------------------------------------------

`parsecfg' kann samba-ähnliche Konfigurationsdateien in den Speicher
einlesen, im Speicher manipulieren und dann wieder wegschreiben. Als
besonderes Features kann die Unterstützung "Listen" gelten. Dies sind
mehrere Einträge, die einem Key zugeordnet werden. Stringlisten werden
auch als Liste im Speicher gehalten. Beim Lesen können diese durch {}
geklammert über mehrere Zeilen geschreiben werden. Beim Schreiben werden
daraus allerdings einzelne Einträge mit gleichem Key.

Die Konfiguration wird als Array-Konstante abgelegt. Dieses enthält ein
Keynamen, den Datentyp und einen Pointer auf die Variable. Die Library
füllt dann die referenzierten Variablen mit Daten.

Auch hier werden zwischenzeitliche Änderungen an der Konfigurationsdatei
nicht erkannt. Des weiteren wird autoconf leider nicht unterstützt. Das
Makefile erzeugt nur ein Sample. Eine Library (shared oder static muß
man selber bauen).

Quelle:	http://www.enjoy.ne.jp/~gm/program/parsecfg/
Lizenz: GPL


LIBPROPLIST --------------------------------------------------------------

`libPropList' ist eine der komplexeren Libraries. Leider entspricht die
Qualität und der Umfang "Dokumentation" nicht dem funktioniellen Umfang.
Die Libary stammt aus dem Umfeld um GNUstep / WindowMaker. Sie ist dazu
entworfen worden, um die Konfigurationsdateien dieser Pakete zu Lesen
und zu schreiben, ohne dabei auf Objective-C angewiesen zu sein. Die
Library kennt neben den elementaren Datentypen auch Trees und
Dictionaries. Als einzige Libarary kennt `libPropList' ein
sychronize. Allerdings weiß ist nicht, was wie sychronisiert
wird. Werden nur Änderungen von einem File übernommen? Wenn ja, dann
gehen Änderungen, die im Speicher gemacht wurden, einfach verloren.

Als eine weitere Besonderheit muß die Kommunikation mit dem "GNUstep
Defaults Daemon" gsdd angesehen werden. Leider kenne ich GNUstep nicht
so gut, so daß ich den Sinn und Zweck von gsdd nicht kenne.

Abschließend bleibt zu sagen, daß autoconf verwendet wird.

Quelle:	http://www.windowmaker.org/
Lizenz: LGPL


GCONF --------------------------------------------------------------------

`GConf' ist das "configuration database system" des Gnome Desktop. Die
Library kann allerdings auch ohne Gnome verwendet werden. `GConf' ist
mit Abstand die komplexeste Library. Dies liegt unter anderem auch
daran, daß sie Corba (ORBit) und XML verwendet. Die Schnittstelle ist
wohldurchdacht und vergisst auch nicht die Benachrichtigung, wenn sich
zwischenzeitlich Konfigurationsdaten durch Dritte ändern. Der Preis
hierfür ist allerdings die hohe Komplexität. Zur weiteren Beschreibung
zitiere ich einfach mal das Manual:

	"GConf is a system for storing configuration information, that
	is, key-value pairs. GConf provides a notification service so 
	applications can be notified when a key's value is changed.  
	GConf also allows for pluggable storage mechanisms (text files,
	databases, etc.); allows administrators to install default 
	values; and allows application authors to document their
	configuration keys for the benefit of administrators."

Quelle: ftp://ftp.gnome.org/unstable/sources/GConf/
	besser über http://www.gnome.org/
Lizenz: LGPL

---[end of file]----------------------------------------------------------

-- 
eMail: Joerg Desch <joerg.desch at gmx.net>



--Kj7319i9nmIyA2yE--



Mehr Informationen über die Mailingliste linux-l