On Wednesday, February 09, 2011 10:12:12 pm Ted Gould wrote:
On Wed, 2011-02-09 at 11:13 -0800, Steve Langasek wrote:
On Wed, Feb 09, 2011 at 09:22:16AM -0500, Barry Warsaw wrote:
There's one thing I miss from my days running Gentoo, and no, it's not
the unholy number of hours it takes to upgrade due to recompiles. :)
When a system configuration file gets updated, emerge gives you a
richer set of options for dealing with changes. I'm reminded of this
with the just upgraded ntp package, which modifies /etc/ntp.conf.
Debian/Ubuntu gives you the option to:
* Keep your version
* Install the new maintainers version
* See the diff
* Drop into a shell to deal with the situation
I think these are insufficient. What I really want to do is merge my
local changes with the new package version, and I'd like the tool to
help me do it.
emerge gives me several other options. It's been ages since I ran
Gentoo so I don't remember all the details, but one other option was
extremely helpful:
* Interactively merge local changes with the new version of the config
* file
So these days, there are three major paradigms used for configuration
file management within Debian packages.
- conffiles - this is the built-in dpkg prompt you refer to, with the
incomplete set of choices. Really, this is only a suitable mechanism
for configuration files that will rarely, *if ever*, need to be
changed by either the local admin or the package maintainer.
- templates spit out by maintainer scripts - this avoids the annoying
prompts, but also generally doesn't give the admin very much support
for updating to new package defaults because the maintainer doesn't
go to the effort of manually merging the changes in.
- ucf. This option *does* store the original version of the file on
disk
in order to support a three-way merge, which makes it possible to
offer better options on upgrade. Not quite the same as an
interactive merge, but an interactive merge option could be added
here without too much extra work.
This last is the one is the way to go, but it really should be pulled
into dpkg itself. I don't recall if Sean's patches were based on ucf or
not. In the meantime, use of ucf requires explicit action by the
package maintainer, so it's generally only the real problem children
that get converted over to its use.
I guess the fourth that I see in use is having a directory of files that
are loaded to build the configuration file. Honestly, this is the one
that I prefer most of the time as it means that the base file always
upgrades. For sure, this doesn't work for all files, but it seems like
if effort is going into configuration files it would be worth converting
all that can to the directory method.
Some packages already do this. See amavisd-new as an example.
Scott K
--
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at:
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel