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