Enrico Zini: Show local configuration changes
Show local configuration changes
Following a train of thought, I got to the idea that it would be
nice to have a way to ask an installed package to show a diff
between the configuration that it would autogenerate and the
configuration that is on the system.
For example:
# /var/lib/dpkg/info/postfix.postinst config-diff
--- a/aliases
+++ b/aliases
@@ -2,3 +2,7 @@
postmaster: root
clamav: root
logcheck: root
+
+root: enrico
--- a/postfix/main.cf
+++ b/postfix/main.cf
@@ -25,14 +25,35 @@ smtp_tls_session_cache_database = btree:$ queue_directory /smtp_scache
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = enricozini.org, localhost.localdomain, localhost
+virtual_alias_domains = enricozini.com
+virtual_alias_maps = hash:/etc/postfix/aliases-virtual
relayhost =
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
+message_size_limit = 20480000
This would be quite useful (if you're not using a tool such as
etckeeper):
partly for backups, but more interestingly for inspecting a Debian
box, to see what is stock configuration and what has been manually
changed.
Moreover, this could be used to automately create an
installation CD that would install a system with the same
configuration, by saving the set of debconf preseeds and the set of
/etc/ patches.
In theory, it would not be too difficult to generate such a
diff: for packages that don't change config files in postinst, it's
just a matter to diff with the original files as found in the .deb.
For the other packages, the code to generate the configuration can
be recycled outputting the results to a temporary directory, then a
diff can be made with the corresponding files in /etc.
I can see this being easily doable for 90% of the packages, and
I am wondering about the rest: is it thinkable to pursue this way,
assuming that what wouldn't support it today could be made to
support it in the future, or are there some configuration cases
that just cannot be made to work in this way, no matter what?
Note
- There is already a dpkg proposal to do this
Yesterday I wrote that I'd ordered a new ASUS EEE PC, the 901 model, and today it arrived. The machine is gorgeous though I suspect in the long term I'll regret ordering the white model.
This entry was written on the device, slowly due to my fat fingers, with its new Debian Lenny operating system. To save time I didn't even use the default system, I just immediately rebooted it into the installer via a 2Gb USB stick.
Unfortunately I had to run through the installation twice, because I made some bad partitioning decisions and decided to fix them rather than live with them.
Happily everything on the device appears to work perfectly, although there were a few hiccups along the way. The only niggle is that suspend to RAM seems a little flaky; 50% of the time I try to resume and just get a blank window not my X.org desktop. Happily suspend-to-disk works perfectly, and the bootup/restoration process looks very pretty with the
It is often argued that companies have to work with the FOSS community and
there are good reasons for doing so. I've tried to collect a number of
case stories of good and bad community interaction that may help as a
starting point for further exploration of this topic:
My current desktop PC has an RS790-based Radeon on-board graphics controller. It also has a Radeon X1900 plugged in. Playing with my
nevertheless, it's time to continue the series. The
Hey,
Xfce 4.6 Beta 2 Hopper has just been released and,
guess what, packages are already available. Still not in unstable
(or even experimental), that will wait post-lenny. You can install
it from 
I've had my share of old bugs, but
I’ve been a member of 
when not being distracted by
so... where were we? oh yes.
put this in your sources.list:
I wrote to a site owner last week and I thought I was writing to a webmaster. The site owner complained about some of the jargon and, while explaining who I thought I was writing for, I explained some of it because I think more website owners might benefit from these three explanations:-
“Expat-like terms” - made available in a way that is freely sharable, modifiable and redistributable, similar to the Expat software package, whose terms are published at http://www.jclark.com/xml/copying.txt - this is often used as a clear, simple example for encouraging wide distribution of electronic resources (software).
“clandestine Google Analytics” - Google Analytics is a service from Google, Inc for tracking users through a website in various ways. I believe the Data Protection Act means that English websites should obtain informed consent from users by publishing a Privacy Policy on their site which discloses what the GA service will be used for and linking through to GA’s own Privacy Policy. Some websites attempt to run Google Analytics on users’ computers without explaining why and without any Privacy Policy. That is what I mean by “clandestine”.
“valid xhtml” - validating against the eXtensible HyperText Markup Language standards published by the World Wide Web Consortium (W3C) - the underlying language of the web. There is a test service provided at http://validator.w3.org/ and passing it is a key stepping stone towards making an accessible website. There’s not really such a thing as “invalid xhtml” - if it doesn’t pass validation, it’s not xhtml. So I guess I’m guilty of using a tautology sometimes - sorry about that.
Is it worthwhile knowing those three phrases? Are there other key technical phrases which you think site owners should know?


I have been meaning to fix this up for a long time, but so far real
work keeps getting in the way. The idea is that C-C t brings you to
this week's time tracker buffer, and then you use (C-c C-x C-i/C-c C-x
C-o) to start and stop timers.
The only even slightly clever is stopping the timer and saving on
quitting emacs, which I borrowed from the someone on the net.
Oh, and one of the things I meant to fix was the dependence on mhc. Sorry.
Here is the snippet from my .emacs