From 55e45ba6bb06af775f14515e76c0e8906fa0035d Mon Sep 17 00:00:00 2001 From: Lukas Fittl Date: Thu, 7 Dec 2023 13:17:35 -0800 Subject: [PATCH 1/2] Debian images: Use locale-gen instead of localdef The use of manually calling localdef caused any future update to the locales package to remove the manually installed locales, since locale-gen takes precendence. This would usually be encountered when a downstream Dockerfile added additional packages, and as a side effect caused an upgrade to the locales package. Fix by relying on the /etc/locale.gen file, which is the official place to specify which locales should be installed. Fixes #1112 --- 11/bookworm/Dockerfile | 3 ++- 11/bullseye/Dockerfile | 3 ++- 12/bookworm/Dockerfile | 3 ++- 12/bullseye/Dockerfile | 3 ++- 13/bookworm/Dockerfile | 3 ++- 13/bullseye/Dockerfile | 3 ++- 14/bookworm/Dockerfile | 3 ++- 14/bullseye/Dockerfile | 3 ++- 15/bookworm/Dockerfile | 3 ++- 15/bullseye/Dockerfile | 3 ++- 16/bookworm/Dockerfile | 3 ++- 16/bullseye/Dockerfile | 3 ++- Dockerfile-debian.template | 3 ++- 13 files changed, 26 insertions(+), 13 deletions(-) diff --git a/11/bookworm/Dockerfile b/11/bookworm/Dockerfile index 69f863bef2..b0b53d519b 100644 --- a/11/bookworm/Dockerfile +++ b/11/bookworm/Dockerfile @@ -55,7 +55,8 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ + locale-gen ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/11/bullseye/Dockerfile b/11/bullseye/Dockerfile index f7bb865651..0de7a2e8b9 100644 --- a/11/bullseye/Dockerfile +++ b/11/bullseye/Dockerfile @@ -55,7 +55,8 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ + locale-gen ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/12/bookworm/Dockerfile b/12/bookworm/Dockerfile index 4203c226e1..376ea147a0 100644 --- a/12/bookworm/Dockerfile +++ b/12/bookworm/Dockerfile @@ -55,7 +55,8 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ + locale-gen ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/12/bullseye/Dockerfile b/12/bullseye/Dockerfile index ad25a552ad..354ee5e25c 100644 --- a/12/bullseye/Dockerfile +++ b/12/bullseye/Dockerfile @@ -55,7 +55,8 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ + locale-gen ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/13/bookworm/Dockerfile b/13/bookworm/Dockerfile index 9b1dab9be8..c37ad7fc5f 100644 --- a/13/bookworm/Dockerfile +++ b/13/bookworm/Dockerfile @@ -55,7 +55,8 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ + locale-gen ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/13/bullseye/Dockerfile b/13/bullseye/Dockerfile index be787cf111..83f6d9fd84 100644 --- a/13/bullseye/Dockerfile +++ b/13/bullseye/Dockerfile @@ -55,7 +55,8 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ + locale-gen ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/14/bookworm/Dockerfile b/14/bookworm/Dockerfile index 36a84c8abf..1eb9c3eeb9 100644 --- a/14/bookworm/Dockerfile +++ b/14/bookworm/Dockerfile @@ -55,7 +55,8 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ + locale-gen ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/14/bullseye/Dockerfile b/14/bullseye/Dockerfile index 798ca635eb..401e823764 100644 --- a/14/bullseye/Dockerfile +++ b/14/bullseye/Dockerfile @@ -55,7 +55,8 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ + locale-gen ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/15/bookworm/Dockerfile b/15/bookworm/Dockerfile index 3f9eff6e8e..60741cddbd 100644 --- a/15/bookworm/Dockerfile +++ b/15/bookworm/Dockerfile @@ -55,7 +55,8 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ + locale-gen ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/15/bullseye/Dockerfile b/15/bullseye/Dockerfile index f93842e4b2..1b5ca69a65 100644 --- a/15/bullseye/Dockerfile +++ b/15/bullseye/Dockerfile @@ -55,7 +55,8 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ + locale-gen ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/16/bookworm/Dockerfile b/16/bookworm/Dockerfile index 55e6934a4a..359a948d40 100644 --- a/16/bookworm/Dockerfile +++ b/16/bookworm/Dockerfile @@ -55,7 +55,8 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ + locale-gen ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/16/bullseye/Dockerfile b/16/bullseye/Dockerfile index 3d650c2b79..a906a74505 100644 --- a/16/bullseye/Dockerfile +++ b/16/bullseye/Dockerfile @@ -55,7 +55,8 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ + locale-gen ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/Dockerfile-debian.template b/Dockerfile-debian.template index 0d897a9af4..1dced5e469 100644 --- a/Dockerfile-debian.template +++ b/Dockerfile-debian.template @@ -49,7 +49,8 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ + locale-gen ENV LANG en_US.utf8 RUN set -eux; \ From a42b68455866552c2ad2fc9a8e18d46b50712139 Mon Sep 17 00:00:00 2001 From: Lukas Fittl Date: Thu, 7 Dec 2023 14:37:56 -0800 Subject: [PATCH 2/2] Debian packages: Add explicit check for locale-gen creating locales In case Debian changes the logic of how locale-gen works, this will flag it early during the build process. --- 11/bookworm/Dockerfile | 5 +++-- 11/bullseye/Dockerfile | 5 +++-- 12/bookworm/Dockerfile | 5 +++-- 12/bullseye/Dockerfile | 5 +++-- 13/bookworm/Dockerfile | 5 +++-- 13/bullseye/Dockerfile | 5 +++-- 14/bookworm/Dockerfile | 5 +++-- 14/bullseye/Dockerfile | 5 +++-- 15/bookworm/Dockerfile | 5 +++-- 15/bullseye/Dockerfile | 5 +++-- 16/bookworm/Dockerfile | 5 +++-- 16/bullseye/Dockerfile | 5 +++-- Dockerfile-debian.template | 5 +++-- 13 files changed, 39 insertions(+), 26 deletions(-) diff --git a/11/bookworm/Dockerfile b/11/bookworm/Dockerfile index b0b53d519b..4406b7a246 100644 --- a/11/bookworm/Dockerfile +++ b/11/bookworm/Dockerfile @@ -55,8 +55,9 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ - locale-gen + echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen; \ + locale-gen; \ + locale -a | grep 'en_US.utf8' ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/11/bullseye/Dockerfile b/11/bullseye/Dockerfile index 0de7a2e8b9..ce3e8bb562 100644 --- a/11/bullseye/Dockerfile +++ b/11/bullseye/Dockerfile @@ -55,8 +55,9 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ - locale-gen + echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen; \ + locale-gen; \ + locale -a | grep 'en_US.utf8' ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/12/bookworm/Dockerfile b/12/bookworm/Dockerfile index 376ea147a0..165a9666bf 100644 --- a/12/bookworm/Dockerfile +++ b/12/bookworm/Dockerfile @@ -55,8 +55,9 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ - locale-gen + echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen; \ + locale-gen; \ + locale -a | grep 'en_US.utf8' ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/12/bullseye/Dockerfile b/12/bullseye/Dockerfile index 354ee5e25c..6a6dd9ee59 100644 --- a/12/bullseye/Dockerfile +++ b/12/bullseye/Dockerfile @@ -55,8 +55,9 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ - locale-gen + echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen; \ + locale-gen; \ + locale -a | grep 'en_US.utf8' ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/13/bookworm/Dockerfile b/13/bookworm/Dockerfile index c37ad7fc5f..d97ed4221c 100644 --- a/13/bookworm/Dockerfile +++ b/13/bookworm/Dockerfile @@ -55,8 +55,9 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ - locale-gen + echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen; \ + locale-gen; \ + locale -a | grep 'en_US.utf8' ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/13/bullseye/Dockerfile b/13/bullseye/Dockerfile index 83f6d9fd84..d88766fc44 100644 --- a/13/bullseye/Dockerfile +++ b/13/bullseye/Dockerfile @@ -55,8 +55,9 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ - locale-gen + echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen; \ + locale-gen; \ + locale -a | grep 'en_US.utf8' ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/14/bookworm/Dockerfile b/14/bookworm/Dockerfile index 1eb9c3eeb9..e99b2427b9 100644 --- a/14/bookworm/Dockerfile +++ b/14/bookworm/Dockerfile @@ -55,8 +55,9 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ - locale-gen + echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen; \ + locale-gen; \ + locale -a | grep 'en_US.utf8' ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/14/bullseye/Dockerfile b/14/bullseye/Dockerfile index 401e823764..d8d3461190 100644 --- a/14/bullseye/Dockerfile +++ b/14/bullseye/Dockerfile @@ -55,8 +55,9 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ - locale-gen + echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen; \ + locale-gen; \ + locale -a | grep 'en_US.utf8' ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/15/bookworm/Dockerfile b/15/bookworm/Dockerfile index 60741cddbd..e51062e703 100644 --- a/15/bookworm/Dockerfile +++ b/15/bookworm/Dockerfile @@ -55,8 +55,9 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ - locale-gen + echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen; \ + locale-gen; \ + locale -a | grep 'en_US.utf8' ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/15/bullseye/Dockerfile b/15/bullseye/Dockerfile index 1b5ca69a65..2bde90139d 100644 --- a/15/bullseye/Dockerfile +++ b/15/bullseye/Dockerfile @@ -55,8 +55,9 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ - locale-gen + echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen; \ + locale-gen; \ + locale -a | grep 'en_US.utf8' ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/16/bookworm/Dockerfile b/16/bookworm/Dockerfile index 359a948d40..684c6ee36a 100644 --- a/16/bookworm/Dockerfile +++ b/16/bookworm/Dockerfile @@ -55,8 +55,9 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ - locale-gen + echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen; \ + locale-gen; \ + locale -a | grep 'en_US.utf8' ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/16/bullseye/Dockerfile b/16/bullseye/Dockerfile index a906a74505..ecc31fc106 100644 --- a/16/bullseye/Dockerfile +++ b/16/bullseye/Dockerfile @@ -55,8 +55,9 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ - locale-gen + echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen; \ + locale-gen; \ + locale -a | grep 'en_US.utf8' ENV LANG en_US.utf8 RUN set -eux; \ diff --git a/Dockerfile-debian.template b/Dockerfile-debian.template index 1dced5e469..3d1884be00 100644 --- a/Dockerfile-debian.template +++ b/Dockerfile-debian.template @@ -49,8 +49,9 @@ RUN set -eux; \ ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; \ fi; \ apt-get update; apt-get install -y --no-install-recommends locales; rm -rf /var/lib/apt/lists/*; \ - echo en_US.UTF-8 UTF-8 >> /etc/locale.gen; \ - locale-gen + echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen; \ + locale-gen; \ + locale -a | grep 'en_US.utf8' ENV LANG en_US.utf8 RUN set -eux; \