The apache.config script assumes that there will only be *one* matching
line in the existing httpd.conf for the pattern '^ServerName'. If there
is more than one such line, the values of each will be concatenated, and
the combination will be substituted into the config file everywhere a
ServerName was previously listed.
This code will ensure that you only grab one server name from the
config:
SERNAME=`grep ^ServerName /etc/apache/httpd.conf | head -n 1 | awk '{print $NF}'`
but it would be far better to check whether you get multiple matches,
and *not* make any changes to the config file at all if so, since this
debconf handling will wreak serious havoc with any http.conf containing
multiple virtual hosts. I would suggest adding a check to the config
script that checks the values of SERNAME, SERADMIN, DOCROOT, and PORT,
and if *any* of them return a value > 1 when passed to wc -w, set a
debconf flag telling the postinst not to make any changes, and don't ask
the user any questions about httpd.conf.
Also, I noticed this check in do_debconf_configs() from postinst.common:
if [ ! "`grep -q ^ServerName /etc/$pkg/httpd.conf`" ]; then
Well, 'grep -q' will always output 0 bytes. I think the check you want
here is simply
if ! grep -q ^ServerName /etc/$pkg/httpd.conf; then
Let me know if you would like me to work up a patch for these problems.
Thanks,
--
Steve Langasek
postmodern programmer
Attachment:
signature.asc
Description: Digital signature