debconf: delaying package configuration, since apt-utils is not installed
is a notice, not a failure. In the test the install that printed it finished with exit
code 0 and the package worked. The line went away once apt-utils was
installed; with DEBIAN_FRONTEND=noninteractive as well, the next install
printed no debconf line at all.
If you only want quiet logs in a container build, you can ignore the line. If you want
it gone, install apt-utils first and set
DEBIAN_FRONTEND=noninteractive for the installs that follow.
The error
$ dpkg -l apt-utils 2>&1 | tail -1
un apt-utils <none> <none> (no description available)
exit code: 0
$ apt-get install -y jq > /tmp/a.log 2>&1; echo "install exit: $?"; grep -n -E "debconf|Setting up jq" /tmp/a.log
install exit: 0
14:debconf: delaying package configuration, since apt-utils is not installed
28:Setting up jq (1.7.1-3ubuntu0.24.04.2) ...
exit code: 0
$ jq --version
jq-1.7
exit code: 0
Why it happens
The ubuntu:24.04 image does not include apt-utils
(dpkg -l shows un, not installed). The line itself says what
debconf, the package configuration system, did about it: it delayed configuration
instead of doing it up front. jq was still set up (line 28 of the log) and ran. Setting
DEBIAN_FRONTEND=noninteractive alone did not remove the line; installing
nano that way printed it again:
$ DEBIAN_FRONTEND=noninteractive apt-get install -y nano > /tmp/b.log 2>&1; echo "install exit: $?"; grep -n -E "debconf|Setting up nano" /tmp/b.log
install exit: 0
12:debconf: delaying package configuration, since apt-utils is not installed
18:Setting up nano (7.2-2ubuntu0.2) ...
exit code: 0
The fix
$ apt-get install -y apt-utils > /tmp/c.log 2>&1; echo "install exit: $?"; grep -n -E "debconf|Setting up apt-utils" /tmp/c.log
install exit: 0
21:debconf: delaying package configuration, since apt-utils is not installed
35:Setting up apt-utils (2.8.4ubuntu0.1) ...
exit code: 0
...
$ DEBIAN_FRONTEND=noninteractive apt-get install -y less > /tmp/f.log 2>&1; echo "install exit: $?"; grep -c debconf /tmp/f.log; grep -n "Setting up less" /tmp/f.log
install exit: 0
0
15:Setting up less (590-2ubuntu2.1) ...
exit code: 0
The install of apt-utils printed the line one last time, since the
package was not there yet. After that, an install with
DEBIAN_FRONTEND=noninteractive printed zero debconf lines.
Installing apt-utils without the variable traded the line for others: the
next plain install, of file, printed six debconf lines,
starting with debconf: unable to initialize frontend: Dialog and
debconf: (TERM is not set, so the dialog frontend is not usable.), and
still finished with exit code 0. So the pair, apt-utils plus the
variable, is what gave a quiet log here. In a Dockerfile that is an
ENV or a prefix on the RUN line; neither was built in this test.
How it was reproduced
The capture was made in an ubuntu:24.04 container (Ubuntu 24.04.5 LTS,
apt 2.8.3, apt-utils 2.8.4ubuntu0.1 once installed) on Docker Engine 29.9.3, standing
in for Ubuntu in WSL. As root, after apt-get update, jq, nano,
apt-utils, file, faketime (for another post) and less were installed in that order, each with its output saved to a
log and searched with grep.
Frequently asked
- Is 'debconf: delaying package configuration, since apt-utils is not installed' an error?
- No. In the test the install that printed it returned exit code 0 and the package ran.
- How do I get rid of 'apt-utils is not installed'?
- Install apt-utils. In the test the line stopped after that, and the install with DEBIAN_FRONTEND=noninteractive that followed printed no debconf lines at all.
- Does DEBIAN_FRONTEND=noninteractive remove the apt-utils warning?
- Not on its own. In the test an install with the variable but without apt-utils still printed the line.
More decoded errors in the Fixes category. For the Dialog frontend lines in a Docker build, see debconf: unable to initialize frontend: Dialog.