locale-gen.sh does not work because of missing referenced locales
The file /usr/share/i18n/locales contains only en_US, but that file references other locale files that are not part of the Mariner installation.
So when you run locale-gen.sh you get the following error:
en_US.ISO-8859-1...[error] cannot open locale definition file `en_GB': No such file or directory
To make locale generation work I had to copy the following locales from my Ubuntu install:
- en_GB
- i18n
- i18n_ctype
- iso14651_t1
- iso14651_t1_common
- translit_* (it was missing many of these, but maybe not all are necessary)
I just ran into this and found a workaround - install glibc-i18n which (at a whopping 15Mb!) includes all the additional locale definition files.
Still seems like locale-gen.sh should work out of the box without needing to install other packages manually.
@JelteF, Install the package glibc-i18n since it is not pre-installed. We are closing the issue since it is not a bug.
I really don't understand why you are not considering this a bug. The en_US.ISO-8859-1 locale does not work!
@JelteF , as we informed you, we have created internal ADO bug to handle the issue and we are re-opening this issue.
To document my clarification of the problem here too. The locale-gen.sh command that's included in the base image fails when run.
❯ docker run -it mcr.microsoft.com/cbl-mariner/base/core:2.0 /bin/bash
root [ / ]# locale-gen.sh
Generating locales...
en_US.ISO-8859-1...[error] cannot open locale definition file `en_GB': No such file or directory
I feel like there are two options to resolve this:
- Don't include
locale-gen.shin the base image and only install it whenglibc-i18nis installed. And the same should then be done for the file/usr/share/i18n/locales/en_US. - Make sure that
locale-gen.shdoesn't fail when run by removing theen_USlines from/etc/locale-gen.conf. (and probably also removing/usr/share/i18n/locales/en_US. - Make sure that
locale-gen.shdoesn't fail when run by adding all the necessary files foren_USto be compiled to the base image.