Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Bug#901185: exim4-config: fails to install

166 views
Skip to first unread message

Eric Valette

unread,
Jun 9, 2018, 6:30:02 PM6/9/18
to
Package: exim4-config
Version: 4.91-5
Severity: grave
Justification: renders package unusable

apt-get -f install
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
0 mis à jour, 0 nouvellement installés, 0 à enlever et 2 non mis à jour.
4 partiellement installés ou enlevés.
Après cette opération, 0 o d'espace disque supplémentaires seront utilisés.
Paramétrage de exim4-config (4.91-5) ...
/etc/exim4/update-exim4.conf.conf: ligne 32: dc_eximconfig_configtype : commande introuvable
/etc/exim4/update-exim4.conf.conf: ligne 32: dc_eximconfig_configtype : commande introuvable
dpkg: erreur de traitement du paquet exim4-config (--configure) :
installed exim4-config package post-installation script subprocess returned error exit status 127
dpkg: des problèmes de dépendances empêchent la configuration de exim4-base :
exim4-base dépend de exim4-config (>= 4.82) | exim4-config-2 ; cependant :
Le paquet exim4-config n'est pas encore configuré.
Le paquet exim4-config-2 n'est pas installé.
Le paquet exim4-config qui fournit exim4-config-2 n'est pas encore configuré.

dpkg: erreur de traitement du paquet exim4-base (--configure) :
problèmes de dépendances - laissé non configuré
dpkg: des problèmes de dépendances empêchent la configuration de exim4 :
exim4 dépend de exim4-base (>= 4.91-5) ; cependant :
Le paquet exim4-base n'est pas encore configuré.
exim4 dépend de exim4-base (<< 4.91-5.1) ; cependant :
Le paquet exim4-base n'est pas encore configuré.

-- Package-specific info:
Exim version 4.91 #4 built 09-Jun-2018 16:10:39
Copyright (c) University of Cambridge, 1995 - 2018
(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 - 2018
Berkeley DB: Berkeley DB 5.3.28: (September 9, 2013)
Support for: crypteq iconv() IPv6 GnuTLS move_frozen_messages DANE DKIM DNSSEC Event OCSP PRDR SOCKS TCP_Fast_Open
Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmjz dbmnz dnsdb dsearch nis nis0 passwd
Authenticators: cram_md5 plaintext
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore autoreply lmtp pipe smtp
Fixed never_users: 0
Configure owner: 0:0
Size of off_t: 8
Configuration file is /var/lib/exim4/config.autogenerated

-- System Information:
Debian Release: buster/sid
APT prefers unstable
APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 4.14.48 (SMP w/8 CPU cores; PREEMPT)
Locale: LANG=fr_FR.UTF8, LC_CTYPE=fr_FR.UTF8 (charmap=UTF-8), LANGUAGE= (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Init: systemd (via /run/systemd/system)

Versions of packages exim4-config depends on:
ii adduser 3.117
ii debconf [debconf-2.0] 1.5.66

exim4-config recommends no packages.

exim4-config suggests no packages.

-- Configuration Files:
/etc/exim4/passwd.client [Errno 13] Permission non accordée: '/etc/exim4/passwd.client'

-- debconf information excluded

Adam D. Barratt

unread,
Jun 9, 2018, 7:00:02 PM6/9/18
to
Control: tags -1 + moreinfo

On Sun, 2018-06-10 at 00:17 +0200, Eric Valette wrote:
> Paramétrage de exim4-config (4.91-5) ...
> /etc/exim4/update-exim4.conf.conf: ligne 32: dc_eximconfig_configtype
> : commande introuvable
> /etc/exim4/update-exim4.conf.conf: ligne 32: dc_eximconfig_configtype
> : commande introuvable
>

That doesn't make huge amounts of sense, at least at first glance.

update-exim4.conf, which is what will be being called here, sources
update-exim4.conf.conf, but that shouldn't be leading to "command not
found" errors.

The mention of line 32 is also interesting, as the standard file
appears to be 31 lines long.

Could you share the content of the file on the relevant machine,
please?

Regards,

Adam

積丹尼 Dan Jacobson

unread,
Jun 10, 2018, 12:10:02 AM6/10/18
to
Setting up exim4-config (4.91-5) ...
/var/lib/dpkg/info/exim4-config.postinst: line 330: export: `dc_eximconfig_configtype dc_other_hostnames dc_local_interfaces dc_readhost dc_relay_domains dc_minimaldns dc_relay_nets dc_smarthost CFILEMODE dc_use_split_config dc_hide_mailname dc_mailname_in_oh dc_localdelivery': not a valid identifier
dpkg: error processing package exim4-config (--configure):

Andreas Metzler

unread,
Jun 10, 2018, 1:10:02 AM6/10/18
to
On 2018-06-10 積丹尼 Dan Jacobson <jid...@jidanni.org> wrote:
> Oops. I mean just:
> Setting up exim4-config (4.91-5) ...
> /etc/exim4/update-exim4.conf.conf: line 26: dc_eximconfig_configtype: command not found

Hello,

Are you running bash (or other stuff) from experimental? IIRC there is
some breakage there.

cu Andreas

--
`What a good friend you are to him, Dr. Maturin. His other friends are
so grateful to you.'
`I sew his ears on from time to time, sure'

Eric Valette

unread,
Jun 10, 2018, 4:50:02 AM6/10/18
to
On 6/10/18 10:33 AM, Debian Bug Tracking System wrote:
> This is an automatic notification regarding your Bug report
> which was filed against the exim4-config package:


But now how do we fix the problem? I will reopen until I have a fix.
Putting dash as /bin/sh does fix anything BTW.

-- eric

Eric Valette

unread,
Jun 10, 2018, 4:50:02 AM6/10/18
to
On 6/10/18 7:07 AM, Andreas Metzler wrote:
> On 2018-06-10 積丹尼 Dan Jacobson <jid...@jidanni.org> wrote:
>> Oops. I mean just:
>> Setting up exim4-config (4.91-5) ...
>> /etc/exim4/update-exim4.conf.conf: line 26: dc_eximconfig_configtype: command not found
>
> Hello,
>
> Are you running bash (or other stuff) from experimental? IIRC there is
> some breakage there.


I was runnin experimental bash , reverted to unstable but it does not
change anything (see below).

I'm just wondering with this line in exim4-config.postinst

line 330 :export dc_directives ${dc_directives}


apt-get -f install
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 13 not upgraded.
3 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up exim4-config (4.91-5) ...
/etc/exim4/update-exim4.conf.conf: line 32: dc_eximconfig_configtype:
command not found
/etc/exim4/update-exim4.conf.conf: line 32: dc_eximconfig_configtype:
command not found
dpkg: error processing package exim4-config (--configure):
installed exim4-config package post-installation script subprocess
returned error exit status 127
Setting up exim4-daemon-light (4.91-5) ...
Job for exim4.service failed because the control process exited with
error code.
See "systemctl status exim4.service" and "journalctl -xe" for details.
invoke-rc.d: initscript exim4, action "start" failed.
● exim4.service - LSB: exim Mail Transport Agent
Loaded: loaded (/etc/init.d/exim4; generated)
Active: failed (Result: exit-code) since Sun 2018-06-10 10:28:22
CEST; 12ms ago
Docs: man:systemd-sysv-generator(8)
Process: 5225 ExecStart=/etc/init.d/exim4 start (code=exited, status=127)

Jun 10 10:28:22 tri-yann4 systemd[1]: Starting LSB: exim Mail Transport
Agent...
Jun 10 10:28:22 tri-yann4 exim4[5225]: Starting
MTA:/etc/exim4/update-exim4.conf.conf: line 32:
dc_eximconfig_configtype: command not found
Jun 10 10:28:22 tri-yann4 systemd[1]: exim4.service: Control process
exited, code=exited status=127
Jun 10 10:28:22 tri-yann4 systemd[1]: exim4.service: Failed with result
'exit-code'.
Jun 10 10:28:22 tri-yann4 systemd[1]: Failed to start LSB: exim Mail
Transport Agent.
dpkg: error processing package exim4-daemon-light (--configure):
installed exim4-daemon-light package post-installation script
subprocess returned error exit status 1
dpkg: dependency problems prevent configuration of exim4:
exim4 depends on exim4-daemon-light | exim4-daemon-heavy |
exim4-daemon-custom; however:
Package exim4-daemon-light is not configured yet.
Package exim4-daemon-heavy is not installed.
Package exim4-daemon-custom is not installed.

dpkg: error processing package exim4 (--configure):
dependency problems - leaving unconfigured
Errors were encountered while processing:
exim4-config
exim4-daemon-light
exim4
needrestart is being skipped since dpkg has failed
E: Sub-process /usr/bin/dpkg returned an error code (1)
tri-yann4:/home/valette#

update-exim4.conf.conf

Eric Valette

unread,
Jun 10, 2018, 5:00:02 AM6/10/18
to
On 6/10/18 10:34 AM, Eric Valette wrote:

> line 330 :export dc_directives ${dc_directives}

Shodul be export dc_directives=${dc_directives} as far as I understand.

-- eric

Eric Valette

unread,
Jun 10, 2018, 5:10:02 AM6/10/18
to
To fix I did :
1) use dash temporarilly
2) /etc/exim4/update-exim4.conf.conf.old
3) rerun install

and it worked. But I still think there is a non portable syntax line 330
of exim4-config.postins.

-- eric

Eric Valette

unread,
Jun 10, 2018, 5:10:02 AM6/10/18
to
On 6/10/18 10:59 AM, Eric Valette wrote:
> On 6/10/18 10:51 AM, Eric Valette wrote:

>     2) mv /etc/exim4/update-exim4.conf.conf /etc/exim4/update-exim4.conf.conf.old

Eric Valette

unread,
Jun 10, 2018, 6:10:02 AM6/10/18
to
On 6/10/18 11:57 AM, Eric Valette wrote:
> On 6/10/18 11:35 AM, Andreas Metzler wrote:
>
>> exports both dc_directives and any variable listed in dc_directives,
>> i.e. any external command will see both ${dc_directives} and
>> ${dc_eximconfig_configtype} et al.
>
> right but did you intent that? The rest of the script seems not to use
> explicitly anything but dc_directives in to awk script. Remains that the
> script is broken with bash and not sure only from experimental (but as
> the config file was already broken cannot be tottaly sure).


Why don't you reassign the bug to bash experimental if you are so sure?
Will do until you tell me why not

-- eric

Eric Valette

unread,
Jun 10, 2018, 6:10:02 AM6/10/18
to
On 6/10/18 11:35 AM, Andreas Metzler wrote:

> exports both dc_directives and any variable listed in dc_directives,
> i.e. any external command will see both ${dc_directives} and
> ${dc_eximconfig_configtype} et al.

right but did you intent that? The rest of the script seems not to use
explicitly anything but dc_directives in to awk script. Remains that the
script is broken with bash and not sure only from experimental (but as
the config file was already broken cannot be tottaly sure).

-- eric

Andreas Metzler

unread,
Jun 10, 2018, 8:20:02 AM6/10/18
to
Because as it is the bug report is less than helpful for the bash
maintainers.

> Will do until you tell me why not

Please be a little bit more cooperative. Discuss first, and act later
when there is a consensus.

Andreas Metzler

unread,
Jun 10, 2018, 9:10:03 AM6/10/18
to
Hello bash maintainers (debconf Cced),

I have tried debugging the issue to get a minimal testcase. I have had
some success. The issue is triggered by debconf.
/usr/share/debconf/confmodule changes IFS to \n and with bash5 this
change is persistent and breaks the maintainerscript. i.e. installing a
package using the following.postinst (simply invoking the script as
unprivildged user also works, no dummy-package necessary)

--------------------
#!/bin/sh
set -e
. /usr/share/debconf/confmodule
db_version 2.0
list="item1 item2"
for i in $list ; do
echo $i 1>&2
done
--------------------

will
a) print
item1 item2
with bash5 and
b) print
item1
item2
with bash4 and dash.

Unfortunately I have not been able to get a simpler testcase.

cu Andreas

Colin Watson

unread,
Jun 10, 2018, 9:30:03 AM6/10/18
to
On Sun, Jun 10, 2018 at 03:03:28PM +0200, Andreas Metzler wrote:
> I have tried debugging the issue to get a minimal testcase. I have had
> some success. The issue is triggered by debconf.
> /usr/share/debconf/confmodule changes IFS to \n and with bash5 this
> change is persistent and breaks the maintainerscript.

Does this patch help?

diff --git a/confmodule b/confmodule
index 8347c0b0..e6157520 100644
--- a/confmodule
+++ b/confmodule
@@ -46,6 +46,7 @@ _db_cmd () {
# Set to newline to get whole line.
IFS='
' read -r _db_internal_line
+ IFS="$_db_internal_IFS"
# Disgusting, but it's the only good way to split the line,
# preserving all other whitespace.
RET="${_db_internal_line#[! ][ ]}"

(If so, that would suggest that the problem might be specifically in
variable assignments preceding builtins.)

--
Colin Watson [cjwa...@debian.org]

Colin Watson

unread,
Jun 10, 2018, 7:00:03 PM6/10/18
to
On Sun, Jun 10, 2018 at 04:04:13PM +0200, Andreas Metzler wrote:
> On 2018-06-10 Colin Watson <cjwa...@debian.org> wrote:
> > On Sun, Jun 10, 2018 at 03:03:28PM +0200, Andreas Metzler wrote:
> >> I have tried debugging the issue to get a minimal testcase. I have had
> >> some success. The issue is triggered by debconf.
> >> /usr/share/debconf/confmodule changes IFS to \n and with bash5 this
> >> change is persistent and breaks the maintainerscript.
>
> > Does this patch help?
>
> yes, resetting IFS to its default value in confmodule helps.

Thanks. For completeness, could you try this variant patch? If shells
are going to be unreliable about setting IFS in this way, then I'd
rather just separate out the assignments altogether.

diff --git a/confmodule b/confmodule
index 8347c0b0..3ef7a309 100644
--- a/confmodule
+++ b/confmodule
@@ -42,10 +42,11 @@ _db_cmd () {
_db_internal_IFS="$IFS"
IFS=' '
printf '%s\n' "$*" >&3
- IFS="$_db_internal_IFS"
# Set to newline to get whole line.
IFS='
-' read -r _db_internal_line
+'
+ read -r _db_internal_line
+ IFS="$_db_internal_IFS"
# Disgusting, but it's the only good way to split the line,
# preserving all other whitespace.
RET="${_db_internal_line#[! ][ ]}"

(This does still seem like a bash bug though, unless there's some arcane
interpretation of the standards that I'm unaware of.)

Cheers,

--
Colin Watson [cjwa...@debian.org]

積丹尼 Dan Jacobson

unread,
Jun 11, 2018, 5:00:03 AM6/11/18
to
OK downgraded to bash4, restored /etc/exim4/update-exim4.conf.conf from
backups, and was able to upgrade exim4.

Andreas Metzler

unread,
Jun 11, 2018, 3:10:03 PM6/11/18
to
On 2018-06-11 積丹尼 Dan Jacobson <jid...@jidanni.org> wrote:
> Why use bash at all if e.g.,

> $ checkbashisms /usr/sbin/update-exim4.conf.template
> could not find any possible bashisms in bash script /usr/sbin/update-exim4.conf.template

> means one can just use #!/bin/sh ?

Hello,

Exim, does use #!/bin/sh. However bash can provide /bin/sh (Run
"dpkg-reconfigure dash" to enable or disable), and bash5 is afaict
buggy, it is not /bin/sh-compliant. This specific bug severly breaks
scripting. It is not limited to exim, e.g. any debconf using package
has a good chance of breaking.

Colin Watson

unread,
Jun 12, 2018, 1:30:02 AM6/12/18
to
On Mon, Jun 11, 2018 at 08:52:11PM +0200, Andreas Metzler wrote:
> On 2018-06-11 Colin Watson <cjwa...@debian.org> wrote:
> > On Sun, Jun 10, 2018 at 04:04:13PM +0200, Andreas Metzler wrote:
> > > yes, resetting IFS to its default value in confmodule helps.
>
> > Thanks. For completeness, could you try this variant patch? If shells
> > are going to be unreliable about setting IFS in this way, then I'd
> > rather just separate out the assignments altogether.
> [snip]
>
> Yes, this variant of the patch also works.
>
> Thanks to your handholding we now have a minimal reproducer for the
> issue:

Thanks. Now that you have a reproducer that doesn't involve debconf and
so I won't be interfering with debugging, I've uploaded debconf 1.5.67
with that confmodule patch. I know it's a bash5 bug and will hopefully
be fixed, but we might as well be conservative in debconf when it's easy
to do so.

--
Colin Watson [cjwa...@debian.org]

Luca Boccassi

unread,
Dec 9, 2018, 11:45:05 AM12/9/18
to
On Tue, 12 Jun 2018 06:22:09 +0100 Colin Watson <cjwa...@debian.org>
wrote:
> On Mon, Jun 11, 2018 at 08:52:11PM +0200, Andreas Metzler wrote:
> > On 2018-06-11 Colin Watson <cjwa...@debian.org> wrote:
> > > On Sun, Jun 10, 2018 at 04:04:13PM +0200, Andreas Metzler wrote:
> > > > yes, resetting IFS to its default value in confmodule helps.
> > 
> > > Thanks.  For completeness, could you try this variant patch?  If
shells
> > > are going to be unreliable about setting IFS in this way, then
I'd
> > > rather just separate out the assignments altogether.
> > [snip]
> > 
> > Yes, this variant of the patch also works.
> > 
> > Thanks to your handholding we now have a minimal reproducer for the
> > issue:

> Thanks.  Now that you have a reproducer that doesn't involve debconf
and
> so I won't be interfering with debugging, I've uploaded debconf
1.5.67
> with that confmodule patch.  I know it's a bash5 bug and will
hopefully
> be fixed, but we might as well be conservative in debconf when it's
easy
> to do so.

> -- 
> Colin Watson                                       [cjwatson@debian.o
rg]

Hi,

FYI, this was fixed in bash 5.0 beta1:

$ ./bash --version
GNU bash, version 5.0.0(1)-beta (x86_64-pc-linux-gnu)
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ ./bash -o posix -c 'v=ok; v=bug read x </dev/null; echo "$v"'
ok

--
Kind regards,
Luca Boccassi
signature.asc
0 new messages