Dnia 09-11-2006, czw o godzinie 22:20 +0100, Michael Schwendt
napisał(a):
[..]
> It do not produces xml files with empty trees in
$GCONF_CONFIG_SOURCE
> directory. Is it correct ? (IMO not)
> Probably --makefile-{,un}install-rule switches are not fully symmetric.
They are.
So what are doing all not removed keys from this xml files ?
Example from my /etc/gconf/gconf.xml.defaults/%%gconf-tree-af.xml:
<?xml version="1.0"?>
<gconf>
<dir name="schemas">
<dir name="apps">
<dir name="nautilus">
<dir name="preferences">
<entry
name="show_special_flags">
<local_schema
short_desc="Aktiveer 'spesiale' vlaggies in lêervoorkeurdialo
og">
<longdesc>Indien
waar, sal Nautilus jou toelaat om van die meer esoteriese lê
eropsies van 'n lêer in die lêervoorkeurdiaaloog laat
verander.</longdesc>
</local_schema>
</entry>
</dir>
</dir>
<dir name="gnome_settings_daemon">
<dir name="keybindings">
<entry name="brightness_up">
<local_schema
short_desc="Helderheid-op">
<longdesc>Helderheid-op se kortpad.</longdesc>
</local_schema>
</entry>
<entry name="brightness_down">
<local_schema
short_desc="Helderheid-af">
<longdesc>Helderheid-af se kortpad.</longdesc>
</local_schema>
</entry>
</dir>
</dir>
</dir>
</dir>
</gconf>
Still I'm confused as what you try to accomplish. If your %postun
does not
evaluate $1 properly, your old package's %postun script is executed last
and reverts changes your new package needs.
The following page covers this,
http://fedoraproject.org/wiki/Packaging/ScriptletSnippets
and also suggests a work-around for package upgrades where you want
to remove old schema files, which are obsolete.
install upgrade uninstall
%pre $1 == 1 $1 == 2 --
%post $1 == 1 $1 == 2 --
%preun -- $1 == 1 $1 == 0
%postun -- $1 == 1 $1 == 0
If you want replace register/unregister subset schemas by reinstall all
files you need hook only in %post and %postun .. *unconditionaly*. No
matter is it first install, upgrade or uninstall.
BTW. I have small modification %post/%postun script template:
if [ -x %{_bindir}/gconftool-2 ]; then
export GCONF_CONFIG_SOURCE=`%{_bindir}/gconftool-2 --get-default-source`
rm -f $GCONF_CONFIG_SOURCE/*
%{_bindir}/gconftool-2 --makefile-install-rule /etc/gconf/schemas/*.schemas
>& /dev/null
fi
It will allow remove all "Requires(post,postun): GConf", "Prereq:
GConf"
or Requires(post,postun): /usr/bin/gconftool-2 rules.
kloczek