Configuratiebestand

Configuratiebestanden of config-bestanden worden op computers aangewend om de samenwerking tussen verschillende software-componenten in goede banen te leiden, of om het gedrag van een programma aan te passen aan een specifieke gebruiker of apparaat. Met andere woorden: deze bestanden ondersteunen de configuratie van het computersysteem.

Een configuratiebestand voor GNU GRUB (Unix-systemen) dat bijgewerkt wordt met gedit. Dit bestand bevat een lijst van Besturingssystemen, die GNU GRUB leest en de gebruiker aanbiedt als menu.

Een computerprogramma start vaak met een lezing van een configuratiebestand waarin richtlijnen staan voor de goede werking binnen de gegeven omgeving (hardware- en software). Zo kan men een programma schrijven dat kan gebruikt worden op verschillende computersystemen, en zich dan aanpast op basis van de configuratiegegevens die het in een bepaald systeem vindt.

Sommige programma's lezen configratiebestanden niet alleen tijdens de opstartfase (initiatie), maar kunnen ze herhaaldelijk opnieuw lezen om na te gaan of er geen wijzigingen zijn. Maar vaak impliceert een wijziging van een configuratiebestand een heropstarten van de programma's die het gebruiken (eventueel een reboot van het besturingssysteem). Gebruikers kunnen bijvoorbeeld regels in een configuratiebestand uitcommentariëren om bepaalde instellingen uit te schakelen.

Configuratiebestanden worden gebruikt voor besturingssystemen, internetverbindingen (client- en server), applicaties zoals tekstverwerkers of rekenbladen, compilers, enzovoort.

De bestanden worden meestal geschreven in ASCII. Elke lijn bevat een opdracht of aanwijzing. De opmaak is in het algemeen vrij eenvoudig. Zo wordt vaak gewerkt met de zogenaamde sleutel/waarde-paren (associatieve array). Bijvoorbeeld:

os=linux

gebruiker=johny

Verschillende secties binnen het configuratiebestand kunnen bijvoorbeeld worden gescheiden door trefwoorden die tussen speciale tekens staan. In volgend voorbeeld staan richtlijnen inzake de communicatie met modem en printer.

[serialports]

Com1=/dev/cua0

Com2=/dev/modem/,38400


[parallelports]

Lpt1=/dev/lp0

De bestanden worden vaak manueel opgemaakt of gewijzigd (al dan niet met behulp van een gebruikers-interface), maar ze kunnen ook door programma's worden gewijzigd. Een doorsnee computergebruiker heeft er vaak mee te maken als hij/zij de zogenaamde voorkeuren (preferences) instelt, bijvoorbeeld van een browser of tekstverwerker.

De laatste jaren ziet men vaker configuratiebestanden die opgemaakt zijn in XML-formaat. Ook YAML wint aan populariteit en deelt met XML het voordeel dat de syntaxis eenduidig gedefinieerd is. Een XML- of YAML-bestand kan overigens gevalideerd worden (controle op juiste syntaxis) met de software die gebruikelijk is voor dit format. De lezing (en wijziging) van die bestanden kan dan ook met behulp van elke XML- of YAML-parser gebeuren.

Maar in de praktijk is er bij configuratiebestanden weinig uniformiteit, wat de programmeurs overigens vaak kopzorgen kan baren, omdat ontwerpers van software niet altijd documenteren welke format (opmaak) ze in hun configuratiebestanden gebruiken. Soms moet men de broncode analyseren van de programma's die de configuratiebestanden gebruiken, om de juiste syntaxis te achterhalen.

Op Unix-systemen vindt men honderden verschillende formats (veel configuratiebestanden (Engels : config-files) zitten in de /etc directory). Bij sommige formats kan men een regel uitschakelen met een specifiek teken (een zogenaamd commentaar-teken) aan het begin van de lijn, bij andere weer niet.

Er worden vaak aparte configuratiebestanden opgemaakt voor elke gebruiker van het systeem, maar dan wel als zogenaamd dot-bestand ("dotfile" of "dot file"), waarbij de bestandsnaam begint met een punt. Die bestanden blijven vaak onzichtbaar bij een gewone listing. Ze worden dan ook verborgen bestand of hidden file genoemd.

Heel veel programma's kunnen gebruikmaken van hetzelfde configuratiebestand, een wijziging van naam of inhoud kan desastreuse gevolgen hebben.

Configuratiebestanden kunnen niet alleen bestaan uit "passieve" trefwoorden, maar ook uit scripts die een aantal opdrachten uitvoeren of laten uitvoeren door de shell (de "rc files" of "runcom files" (run command) die een belangrijke rol spelen bij de opstart van een Unix-systeem zijn de bekendste). Deze aanpak wordt steeds vaker toegepast en men gebruikt daarbij steeds meer uiteenlopende script-talen (Tcl, Lisp, ...). Met andere woorden, configuratiebestanden worden op hun beurt weer programma's.

IBM's AIX gebruikt een Object Data Manager (ODM) database om bepaalde configuratiegegevens in op te slaan.

Microsoft DOS

bewerken

MS-DOS deed voornamelijk beroep op twee configuratiebestanden, CONFIG.SYS en AUTOEXEC.BAT.

Microsoft Windows

bewerken

Bij Microsoft Windows had men oorspronkelijk een Application Programming Interface (API) voor zogenaamde initialisatie bestanden (Zie: INI (bestandsformaat)), maar bij de hedendaagse Windows-versies is deze taak overgenomen door de Windows Registry (Zie: register (Windows)).

bewerken
  • PRF - Preferences Registry Format (XML), format en API voor C++, Java en Python
  • libconfig - Libconfig (LGPL) is eenvoudige bibliotheek voor het parsen van gestructureerde configuratiebestanden, met een format die compacter is dan XML. In tegenstelling tot XML is het overigens "type-aware", zodat men geen bijkomende string-parsing moet programmeren. The bibliotheek heeft bindings voor C en C++.
  • GetPot GetPot (LGPL) is een parsing-bibliotheek in een header-bestand (voor C++, Java, Python, en Ruby).
  • www.libelektra.org- Elektra voorziet in een universeel en veilig framework om configuratie-parameters op te slaan in een hiërarchisch systeem van sleutel/waarde-paren. Doelstellingen zijn vergelijkbaar met die van Windows Registry en Gconf.
  • Config::Loader - een Perl module voor het organiseren en bijstellen van configuratie-gegevens. Kan verschillende formaten lezen: XML, YAML, JSON, INI, of Apache configuratiebestanden.
  • App::Options - een Perl module die verschillende configuraties kan samenbundelen in een Perl Hash (inclusief command line options, en omgevingsvariabelen) .