Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Elektra provides a universal and secure framework to store configuration parameters in a global, hierarchical key database.
C C++ CMake Shell QML Python Other

README.md

Elektra provides a universal and secure framework to store configuration parameters in a global, hierarchical key database. The core is a small library implemented in C. The plugin-based framework fulfills many configuration-related tasks to avoid any unnecessary code duplication across applications while it still allows the core to stay without any external dependency. Elektra abstracts from cross-platform-related issues with an consistent API, and allows applications to be aware of other applications' configurations, leveraging easy application integration.

Elektra

Goals

  • Make it simple for applications and administrators to access configuration
  • Make configuration storage more safe: avoid that applications receive wrong or unexpected values without undefined behaviour.
  • Allow software to be better integrated on configuration level
  • Postpone some decisions from programmers to maintainers/administrators, e.g. which syntax and the location of configuration files.
  • Reduce rank growth of configuration parsers in our ecosystem, but foster well maintained plugins instead.

And in terms of quality, we want:

1.) Robustness (no undefined behaviour) 2.) Extensibility and 3.) Simplicity

Read here more about the Goals of Elektra ..

Facts and Features

  • Elektra uses the BSD licence.
  • Elektra implements an API to fully access a global key database.
  • Elektra supports mounting of existing configuration files into the global key database.
  • Elektra has dozens of Plugins that make it possible to have a tiny core, but still support many features, including:
    • Elektra can import and export configuration files in any supported format.
    • Elektra is able to log and notify other software on any configuration changes using Dbus and Journald.
    • Elektra can improve robustness by rejecting invalid configuration via type checking, regex and more.
    • Elektra provides different mechanisms to locate configuration files.
    • Elektra supports different ways to escape and encode content of configuration files.
  • Elektra is multi-process safe and can be used in multi-threaded programs.
  • Elektra (except for some plugins) is portable and completely written in Ansi-C99.
  • Elektra (except for some plugins) has no external dependency.
  • Elektra is suitable for embedded systems and early boot stage programs.
  • Elektra supports comments and other non-configuration information by meta data.
  • Elektra provides many powerful Bindings to avoid low-level access code.
  • Elektra provides powerful Code Generation Techniques for high-level configuration access.

Further Information

To get an introduction, it is best to take a look at the presentation, read our tutorials, see the poster and read the abridgment.

See News and its RSS feed about what is happening at the moment.

The currently best information about Elektra is this thesis.

The API documentation can be found here.

Contact

Do not hesitate to ask any question on Mailing List or one of the authors.

Get Started

Download

Elektra's uses a git repository at github.

Releases can be downloaded from http and

     ftp://ftp.libelektra.org/elektra/releases/

To use the debian repository of the releases put following files in /etc/apt/sources.list:

     deb     http://build.libelektra.org/debian/ elektra-release-glue main
     deb-src http://build.libelektra.org/debian/ elektra-release-glue main

The build server builds Elektra on every commit in various ways and also produces LCOV code coverage report.

Compile

See this document for documentation how to compile the software. You might find configure useful: It will print the cmake commando you need when you are used to ./configure.

Install

The preferred way to install Elektra is by using packages provided for your distribution:

Available, but not up-to-date (Version 0.7):

For CentOS, Fedora, OpenSUSE, RHEL and SLE Kai-Uwe Behrmann kindly provides packages. For Debian stable amd64 we provide latest builds. Just add following lines to sources.list in wheezy:

    deb ftp://markus-raab.org/wheezy wheezy main
    deb-src ftp://markus-raab.org/wheezy wheezy main

If there are no packages available for your distribution, see the installation document.

Develop

To start development, just clone the repo and start hacking!

  • We encourage you to improve documentation, especially the README.md as if they were a webpage.
  • You should read the coding document before you issue a pull request.
  • Make yourself familiar with the KeySet, the central data structure in Elektra.
  • You should read the design document before you make design relevant decisions.
  • You can always peek into the TODOs, if you don't know what to do.
Something went wrong with that request. Please try again.