Bug#820984: proftpd-basic: cannot preseed / ignores local config changes

Florian Ernst fe at LF.net
Thu Apr 14 10:25:03 UTC 2016


Package: proftpd-basic
Version: 1.3.5-1.1+deb8u1
Severity: serious
Justification: rc_policy.txt 3. Configuration files: "Changes to configuration files must be preserved during a package upgrade."

Dear Maintainer(s),

please consider the following (abridged) transcript of trying to run
proftpd-basic from inetd, but ending up having it running standalone:

root at testvz12:~# debconf-get-selections | grep proftpd || echo '# no match'
# no match
root at testvz12:~# echo 'proftpd-basic   shared/proftpd/inetd_or_standalone      select  from inetd' | debconf-set-selections
root at testvz12:~# debconf-get-selections | grep proftpd || echo '# no match'
proftpd-basic   shared/proftpd/inetd_or_standalone      select   from inetd
root at testvz12:~# apt-get install -y openbsd-inetd
[...]
root at testvz12:~# DEBIAN_FRONTEND=noninteractive apt-get install -y proftpd-basic
[...]
root at testvz12:~# debconf-get-selections | grep proftpd || echo '# no match'
# Run proftpd:
proftpd-basic   shared/proftpd/inetd_or_standalone      select  standalone
root at testvz12:~# ps auxww | grep '[p]roftpd'
proftpd   2138  0.0  0.2 119900  2524 ?        Ss   11:28   0:00 proftpd: (accepting connections)              
root at testvz12:~# netstat -tulpen | grep 21
tcp6       0      0 :::21                   :::*                    LISTEN      108        1069993275  2138/proftpd: (acce

As you can see, the preseeding had no effect. This is due to
/var/lib/dpkg/info/proftpd-basic.config unconditionally calling
"db_set shared/proftpd/inetd_or_standalone standalone" before calling
"db_input high shared/proftpd/inetd_or_standalone", thus overwriting any
previous setting. JFTR, apparently it was debbug#707689 which triggered
adding the explicit db_set.

The same applies to any reconfiguring, of course:

root at testvz12:~# echo 'proftpd-basic   shared/proftpd/inetd_or_standalone      select  from inetd' | debconf-set-selections
root at testvz12:~# debconf-get-selections | grep proftpd || echo '# no match'
# Run proftpd:
proftpd-basic   shared/proftpd/inetd_or_standalone      select   from inetd
root at testvz12:~# dpkg-reconfigure -fnoninteractive proftpd-basic
usermod: no changes
root at testvz12:~# debconf-get-selections | grep proftpd || echo '# no match'
# Run proftpd:
proftpd-basic   shared/proftpd/inetd_or_standalone      select  standalone

As such, the package cannot be preseeded to run from inetd at all.

Furthermore, given the current .config, any unattended (thus:
noninteractive) upgrade (or even a mere reinstall) will unconditionally
overwrite the local configuration just the same, leading to proftpd
running standalone instead of from inetd. I consider this to be in
violation of Debian policy requiring local configuration changes to be
preserved.


Best regards,
Flo

-- System Information:
Debian Release: 8.4
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'oldstable-updates'), (500, 'stable'), (500, 'oldstable')
Architecture: amd64 (x86_64)

Kernel: Linux 3.16.0-4-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)



More information about the Pkg-proftpd-maintainers mailing list