The install-config-file
tool makes using Elektra for a configuration file easier.
Please refer to its man page for details on its syntax.
It is especially useful in the context of package upgrades. In this case
their
is the current version of the maintainer's copy of a configuration file,base
is the previous version of the maintainer's copy of the configuration file.our
is the user's copy of the configuration file, derived frombase
First of all, we create a small example configuration file. To do so, we first create a temporary file and store its location in Elektra.
kdb set user:/tests/tempfiles/firstFile $(mktemp)
echo -e "keyA=a\nkeyB=b\nkeyC=c" > `kdb get user:/tests/tempfiles/firstFile`
The following call to kdb install-config-file
will mount it at system:/tests/installing
and additionally create a copy of it.
The copy will be required for a three-way merge later on.
kdb install-config-file system:/tests/installing `kdb get user:/tests/tempfiles/firstFile` mini
We can now safely make changes to our configuration.
kdb set system:/tests/installing/keyB X
Let's assume that we've downloaded a different version of this file from the internet and placed it into the directory /tmp/new
.
At this point we can use kdb install-config-file
to merge the changes of this downloaded version into the configuration that we currently store in Elektra.
Note the slash /
in the beginning of the second parameter of the call to kdb install-config-file
.
This tool uses kdb mount
and in consequence also the resolver.
You have to enter the paths accordingly.
Read the tutorials on mounting and namespaces if you are not sure what this means.
kdb set user:/tests/tempfiles/secondFile $(echo $(mktemp -d)/$(basename $(kdb get user:/tests/tempfiles/firstFile)))
echo -e "keyA=a\nkeyB=b\nkeyC=Y" > `kdb get user:/tests/tempfiles/secondFile`
kdb install-config-file system:/tests/installing $(kdb get user:/tests/tempfiles/secondFile) mini
We can check that this worked by calling
kdb get system:/tests/installing/keyB
#> X
kdb get system:/tests/installing/keyC
#> Y
Finally, we use the following commands to clean up our tutorial.
kdb umount system:/tests/installing
rm -rf $(kdb get user:/tests/tempfiles/firstFile)
rm -rf $(kdb get user:/tests/tempfiles/secondFile)
kdb rm -rf user:/tests/tempfiles
kdb rm -rf user:/elektra/merge/preserve