[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: dh_config_model_upgrade: package upgrade with Config::Model

Le vendredi 4 décembre 2009 19:38:19, Neil Williams a écrit :
> That's a user change, I thought the point of this was that changes *not
> done by users* are causing problems. Different problem.

Currently, debian package will detect correctly if a user (or a script) left 
the configuration unmodified and will upgrade the conf with the new file 
coming from the package. This is perfectly fine.

As explained by gregoa, problem arise when a package script needs to keep 
user's modifications and merge them with configuration data coming from new 

Currently the only way to address this is to write ad-hoc code in the postinst 
script. This is costly and often hard to maintain. 

Another possibility is to perform three-way merge with ucf. This will often 
succeed but not always: 3-way merge works at syntactic level and not semantic 
level so it can often fails. For instance leaving duplicated config 
parameters. and error prone. 

Config::Model tries to fix this by performing the merge at semantic level.

> That's not how I understood the purposes of it, although it could be
> used that way, it isn't sufficient justification IMHO.
> If admins make changes, admins should expect to handle the dpkg
> conflicts.

This is where we disagree: admins are not the only users of Debian. 
Config::Model tries to bring a solution for non-admin users. The kind of users 
which are often comfortable on Ubuntu or Windows (yikes) because Ubuntu or 
Windows tries to make thing easy for users (whether they succeed or not is 
troll food and I will not express an opinion there :-p )

Config::Model tries to address 2 problems:
- configuration upgrade (which should be silent)
- application configuration (with the generated user interfaces)

I agree with you that experienced admins will not see a value in the GUI 
("real men don't click") but the GUI will be welcome by casual users. IMHO, 
Config::Model provides a way to generate these interfaces while no costing too 
much to specify *and* maintain.
> I thought the idea of this was to handle changes not made by users - I
> think we agree that those instances are bugs.

To ease the user's life, Config::Model keeps users changes but also propagate 
new data required by application evolutions.

> The postinst doesn't have to parse the conffile, it just has to not
> generate the dpkg result (by generating the conffile instead of
> packaging it) and allow the app to transition from one to the next.

This is not always the case. Hence some upgrade tools were written by Debian 
(like ucf)

> If the existing file is different to what the package thinks it can
> upgrade, the package should not require dpkg to generate the error and
> the consequent halt of the package installation.

That a possibility which was choosen by RedHat. It's fine for servers, less so 
for Desktops.

All the best

http://config-model.wiki.sourceforge.net/ -o- http://search.cpan.org/~ddumont/

Reply to: