Hi Bernd, Here are my findings... to make story short -- the problem is in the prerm script -- in the order of embedded autoscripts by debhelper tools. I am not yet sure what is the best solution on how to get it under control and I am too sleepy to trust my decision... now the best idea is simply use sed or perl 1-2 liner to swap those sections places in prerm... I should not change the order of commands in debian/rules and should not duplicate them since it might lead to some undersired outcomes and duplicate entries in postinst/prerm. If you have a good idea on how to handle it -- I am open for suggestions...
I am yet to look at your patch to extract useful ideas from it ;-) I will fix fail2ban tomorrow or day after ;-) if you are bored you are welcome to see my notes below: pycentral is supposed to do all the job of byte-compiling and removing trash in prerm for private scripts too (disregard strace calls below -- it was there just so I didn't have to rerun to see what it opened/closed): ,-- | > find /usr/share/fail2ban/ -iname *.pyc | xargs rm | > find /usr/share/fail2ban/ -iname *.pyc | wc | 0 0 0 | > strace -fF -o /tmp/fail2ban.pkginstall.strace.txt pycentral -v pkginstall fail2ban &> /tmp/fail2ban.pkginstall.log | > find /usr/share/fail2ban/ -iname *.pyc | wc | 39 39 1599 | > strace -fF -o /tmp/fail2ban.pkgremove.strace.txt pycentral -v pkgremove fail2ban &> /tmp/fail2ban.pkgremove.log | > find /usr/share/fail2ban/ -iname *.pyc | wc | 0 0 0 | > cat /tmp/fail2ban.pkgremove.log | umovestr: Input/output error | pycentral: pycentral -v pkgremove fail2ban | INFO: using old version '/usr/bin/python2.3' | INFO: using unsupported version '/usr/bin/python2.5' | pycentral: remove package fail2ban | pycentral: remove byte-code files (39) | `--- pkginstall must be called in postinst and pkgremove in prerm, and presumably they are, just grep grep pycentral /var/lib/dpkg/info/fail2ban.* so the question is really WTF? not thinking too long after I didn't find a proper way via DH_PYCENTRAL to make it verbose, I just modified it to be verbose by default. ok -- reinstalling works fine... ,--- | > sudo dpkg -i fail2ban_0.8.0-1_all.deb | (Reading database ... 437961 files and directories currently installed.) | Preparing to replace fail2ban 0.7.9-1 (using fail2ban_0.8.0-1_all.deb) ... | pycentral: pycentral pkgremove fail2ban | INFO: using old version '/usr/bin/python2.3' | INFO: using unsupported version '/usr/bin/python2.5' | pycentral: remove package fail2ban | pycentral: remove byte-code files (39) | Stopping authentication failure monitor: fail2ban. | Unpacking replacement fail2ban ... | Setting up fail2ban (0.8.0-1) ... | pycentral: pycentral pkginstall fail2ban | INFO: using old version '/usr/bin/python2.3' | INFO: using unsupported version '/usr/bin/python2.5' | pycentral: avail=['2.3', '2.4', '2.5'], pkg=current, install=['2.4'] | pycentral: install package fail2ban | pycentral: byte-compile files (39/39) python2.4 | pycentral: ['/usr/share/fail2ban/common/protocol.py', '/usr/share/fail2ban/common/__init__.py', '...'] | Starting authentication failure monitor: fail2ban. | | > find /usr/share/fail2ban/ -iname *.pyc | wc | 39 39 1599 `--- But removing ,-- | > dpkg --purge fail2ban | (Reading database ... 437961 files and directories currently installed.) | Removing fail2ban ... | pycentral: pycentral pkgremove fail2ban | INFO: using old version '/usr/bin/python2.3' | INFO: using unsupported version '/usr/bin/python2.5' | pycentral: remove package fail2ban | pycentral: remove byte-code files (39) | Stopping authentication failure monitor: fail2ban. | Purging configuration files for fail2ban ... | dpkg - warning: while removing fail2ban, directory `/etc/fail2ban/action.d' not empty so not removed. | dpkg - warning: while removing fail2ban, directory `/etc/fail2ban' not empty so not removed. | dpkg - warning: while removing fail2ban, directory `/usr/share/fail2ban/server' not empty so not removed. | dpkg - warning: while removing fail2ban, directory `/usr/share/fail2ban/client' not empty so not removed. | dpkg - warning: while removing fail2ban, directory `/usr/share/fail2ban/common' not empty so not removed. | dpkg - warning: while removing fail2ban, directory `/usr/share/fail2ban' not empty so not removed. | > find /usr/share/fail2ban/ -iname *.pyc | wc | 23 23 938 `--- So, pycentral had in mind to remove all pyc files but unfortunately didn't succeed for some reason... ufff... since you saw above that calling it from cmdline cleaned up everything nicely -- no files were left behind. So that is what is weird... ok -- lets look closer and what got deinstalled (omitted cmdlines for the size...) ,------------------------------------------------------------------ | > diff /tmp/fail2ban.installed.pyc /tmp/fail2ban.deinstalled.pyc | 17d16 | < /usr/share/fail2ban/server/ssocket.pyc | 25,39d23 | < /usr/share/fail2ban/server/filter.pyc | < /usr/share/fail2ban/server/server.pyc | < /usr/share/fail2ban/server/datestrptime.pyc | < /usr/share/fail2ban/server/failticket.pyc | < /usr/share/fail2ban/server/filterpoll.pyc | < /usr/share/fail2ban/server/datetai64n.pyc | < /usr/share/fail2ban/server/faildata.pyc | < /usr/share/fail2ban/server/filtergamin.pyc | < /usr/share/fail2ban/server/failregex.pyc | < /usr/share/fail2ban/server/failmanager.pyc | < /usr/share/fail2ban/server/datedetector.pyc | < /usr/share/fail2ban/server/transmitter.pyc | < /usr/share/fail2ban/server/dateepoch.pyc | < /usr/share/fail2ban/server/datetemplate.pyc | < /usr/share/fail2ban/server/regex.pyc `--- so just some files under server got removed while the rest not... then I had a look at postrm script and YEAY -- here is the reason: ,-- | [EMAIL PROTECTED]:/home/yoh.m/deb/debs/fail2ban/build-area/pbuilder/sid# grep -3 '^#' /var/lib/dpkg/info/fail2ban.prerm | #!/bin/sh | set -e | # Automatically added by dh_pycentral | if which python >/dev/null 2>&1 && which pycentral >/dev/null 2>&1; then | pycentral pkgremove fail2ban | else | -- | | awk '/\/usr\/share\/pycentral/ {next} /\.py$/ {print $0"c\n" $0"o"}' \ | | xargs rm -f >&2 | fi | # End automatically added section | # Automatically added by dh_installinit | if [ -x "/etc/init.d/fail2ban" ]; then | if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then | invoke-rc.d fail2ban stop || exit $? | -- | /etc/init.d/fail2ban stop || exit $? | fi | fi | # End automatically added section | `--- ;) so, after pycentral cleans up, I call fail2ban-client stop in init.d script, which causes compilation of .pyc files... doh -- why I didn't think about that from the beginning ;-) The question now is how to fix it properly -- swapping of lines pycentral and installinit would not be perfect, since then installinit would cause bytecompilation of .py files before dh_pycentral call... heh heh... -- .-. =------------------------------ /v\ ----------------------------= Keep in touch // \\ (yoh@|www.)onerussian.com Yaroslav Halchenko /( )\ ICQ#: 60653192 Linux User ^^-^^ [175555]