[opensuse-packaging] Decission: configuration files in /etc and /usr/etc
Hi, after many months and many discussions, we decided to go with my Proposal for a better configuration file management on openSUSE (https://github.com/thkukuk/atomic-updates_and_etc/) and use /usr/etc as the directory below /usr for distribution provided configuration files. While there is a small risk in using this directory, the feedback was nearly unanimously to go with this directory, as this is well known to people. Having the by-in from so many people is in our opinion really important. If we choose a name nobody likes, we can declare it already as failed. So, what do we plan? -------------------- The plan is, to make updating of configuration files a lot of easier and solve the problems of configuration file updates with atomic updates (transactional-update on openSUSE). Longterm, /etc should only contain the host specific and by the admin modified configuration, all distribution provided configuration files should be in /usr/etc. Additional, the distribution provided configuration files should be moved from /usr/lib and consolidated in /usr/etc. Configuration files in /usr/etc should not be modified by the admin, as /usr/etc can be read-only. Instead, the applications needs to be enhanced, as far as possible and necessary, to read the configuration files from several locations. Take the systemd configuration as example: https://www.freedesktop.org/software/systemd/man/systemd.unit.html#Examples What needs to be done? ---------------------- In the first place, you need to adopt your packages. What you need to do and what you can do depends on your package. It's not possible to implement this with every kind of configuration file, but on the other side, there are many applications which supports this already, and it is only a question of the right configuration and maybe a little bit of tweaking it. We develop currently an universal, really flexible config file parser for config files more or less compatible with the ini file format, it's libeconf: https://github.com/parlt91/libeconf This should make it much easier to port some applications to the new schema. Roadmap: -------- We will start with adding the directory to the filesystem RPM and adjust the scripts to not throw an error if you use this directory. Afterwards we will go through the files in /etc and move the easy ones and continue until we are done. At some point in time we will create new tests which forbids to deliver files in /etc, so that this will really finish at some point in time and we don't add more files to /etc then others remove. Open Questions: --------------- If you read the github document, you will see, that we don't have a solution for everything yet. I hope we can improve here over the time. Second, the big question for packagers: configuration files in /usr/etc, should we mark them as %config or not? As no customer should touch them, %config is not really necessary. On the other side, if we mark them as %config and the user modifies them by accident, the next update would not overwrite the changes, but save them as *.rpmsave file. %config(noreplace) is no option, this would lead again to big problems with not updated configuration files and thus not working services. Thorsten -- Thorsten Kukuk, Distinguished Engineer, Senior Architect SLES & MicroOS SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nuernberg, Germany GF: Felix Imendoerffer, Mary Higgins, Sri Rasiah, HRB 21284 (AG Nuernberg) -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-packaging+owner@opensuse.org
On Friday 2019-08-16 14:42, Thorsten Kukuk wrote:
What needs to be done? ---------------------- In the first place, you need to adopt your packages. What you need to do and what you can do depends on your package. It's not possible to implement this with every kind of configuration file, but on the other side, there are many applications which supports this already, and it is only a question of the right configuration and maybe a little bit of tweaking it. We develop currently an universal, really flexible config file parser for config files more or less compatible with the ini file format, it's libeconf: https://github.com/parlt91/libeconf
Is there a shortage of ini parser libraries around, or did I miss something? (libini_config, libiniparser, the-unnamed?-parser-from-samba, the-other-thing-with-augeas-lenses) -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-packaging+owner@opensuse.org
On Sat, Aug 17, Jan Engelhardt wrote:
We develop currently an universal, really flexible config file parser for config files more or less compatible with the ini file format, it's libeconf: https://github.com/parlt91/libeconf
Is there a shortage of ini parser libraries around, or did I miss something? (libini_config, libiniparser, the-unnamed?-parser-from-samba, the-other-thing-with-augeas-lenses)
And which of them offers any of the functionality we need for this proposal? Thorsten -- Thorsten Kukuk, Distinguished Engineer, Senior Architect SLES & MicroOS SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nuernberg, Germany GF: Felix Imendoerffer, Mary Higgins, Sri Rasiah, HRB 21284 (AG Nuernberg) -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-packaging+owner@opensuse.org
On Saturday 2019-08-17 05:35, Thorsten Kukuk wrote:
On Sat, Aug 17, Jan Engelhardt wrote:
We develop currently an universal, really flexible config file parser for config files more or less compatible with the ini file format, it's libeconf: https://github.com/parlt91/libeconf
Is there a shortage of ini parser libraries around, or did I miss something? (libini_config, libiniparser, the-unnamed?-parser-from-samba, the-other-thing-with-augeas-lenses)
And which of them offers any of the functionality we need for this proposal?
What functionality do you mean? -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-packaging+owner@opensuse.org
On Sat, Aug 17, Jan Engelhardt wrote:
On Saturday 2019-08-17 05:35, Thorsten Kukuk wrote:
On Sat, Aug 17, Jan Engelhardt wrote:
We develop currently an universal, really flexible config file parser for config files more or less compatible with the ini file format, it's libeconf: https://github.com/parlt91/libeconf
Is there a shortage of ini parser libraries around, or did I miss something? (libini_config, libiniparser, the-unnamed?-parser-from-samba, the-other-thing-with-augeas-lenses)
And which of them offers any of the functionality we need for this proposal?
What functionality do you mean?
To support the proposal and merge the files during reading like systemd is doing? For easier adjustment of applications? libeconf is clearly not to replace the used config file library with another one with the same functionality. Thorsten -- Thorsten Kukuk, Distinguished Engineer, Senior Architect SLES & MicroOS SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nuernberg, Germany GF: Felix Imendoerffer, Mary Higgins, Sri Rasiah, HRB 21284 (AG Nuernberg) -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-packaging+owner@opensuse.org
Thorsten Kukuk schrieb:
[...] In the first place, you need to adopt your packages. What you need to do and what you can do depends on your package. It's not possible to implement this with every kind of configuration file, but on the other side, there are many applications which supports this already, and it is only a question of the right configuration and maybe a little bit of tweaking it. We develop currently an universal, really flexible config file parser for config files more or less compatible with the ini file format, it's libeconf: https://github.com/parlt91/libeconf
This should make it much easier to port some applications to the new schema.
Any creative ideas for services that most likely won't use that lib? Thinking of apache for example. cu Ludwig -- (o_ Ludwig Nussel //\ V_/_ http://www.suse.com/ SUSE Linux GmbH, GF: Felix Imendörffer, Mary Higgins, Sri Rasiah, HRB 21284 (AG Nürnberg) -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-packaging+owner@opensuse.org
On Wednesday 2019-08-21 11:01, Ludwig Nussel wrote:
Thorsten Kukuk schrieb:
[...] We develop currently an universal, really flexible config file parser for config files more or less compatible with the ini file format, it's libeconf: https://github.com/parlt91/libeconf
This should make it much easier to port some applications to the new schema.
Any creative ideas for services that most likely won't use that lib? Thinking of apache for example.
This is perhaps overstating it a bit, but in case of Apache (/usr/etc/apache2/httpd.conf), you "only" need to add in a !include /etc/apache2/conf.d/* ...and it already does. -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-packaging+owner@opensuse.org
Jan Engelhardt schrieb:
On Wednesday 2019-08-21 11:01, Ludwig Nussel wrote:
Thorsten Kukuk schrieb:
[...] We develop currently an universal, really flexible config file parser for config files more or less compatible with the ini file format, it's libeconf: https://github.com/parlt91/libeconf
This should make it much easier to port some applications to the new schema.
Any creative ideas for services that most likely won't use that lib? Thinking of apache for example.
This is perhaps overstating it a bit, but in case of Apache (/usr/etc/apache2/httpd.conf), you "only" need to add in a
!include /etc/apache2/conf.d/*
...and it already does.
Sure, for conf.d but what about the rest? I assume the built in include mechanisms just extend the list of config files to read. For example if you don't want to have apache listen on port 80 you'd need to override listen.conf rather than having another config file with another port to listen on. cu Ludwig -- (o_ Ludwig Nussel //\ V_/_ http://www.suse.com/ SUSE Linux GmbH, GF: Felix Imendörffer, Mary Higgins, Sri Rasiah, HRB 21284 (AG Nürnberg) -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-packaging+owner@opensuse.org
On Wed, Aug 21, Ludwig Nussel wrote:
Thorsten Kukuk schrieb:
[...] In the first place, you need to adopt your packages. What you need to do and what you can do depends on your package. It's not possible to implement this with every kind of configuration file, but on the other side, there are many applications which supports this already, and it is only a question of the right configuration and maybe a little bit of tweaking it. We develop currently an universal, really flexible config file parser for config files more or less compatible with the ini file format, it's libeconf: https://github.com/parlt91/libeconf
This should make it much easier to port some applications to the new schema.
Any creative ideas for services that most likely won't use that lib? Thinking of apache for example.
I'm currently working on plans for the base system, so creating the infrastructure for PAM, adjust shadow, util-linux, netcfg etc. as first examples. I haven't looked at more advanced packages like openssh or apache yet. Get the infrastructure ready, adjust the first easy packages and continue with the more complicated ones. As upstream systemd maintainers want to archive the same, I still have the hope that we can also benefit from that and only need to adjust the path for the configuration file, and not have to do everything at our own alone. Thorsten -- Thorsten Kukuk, Distinguished Engineer, Senior Architect SLES & MicroOS SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nuernberg, Germany GF: Felix Imendoerffer, Mary Higgins, Sri Rasiah, HRB 21284 (AG Nuernberg) -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-packaging+owner@opensuse.org
participants (3)
-
Jan Engelhardt
-
Ludwig Nussel
-
Thorsten Kukuk