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.