al usar stack
para construir un programa haskell dentro de la caja de herramientas de Fedora, obtuve un error extraño que podía rastrear a un problema de configuración regional. Hubo otros problemas, como que less
no mostraba secuencias de bytes UTF-8. La ejecución de locale
mostró errores:
$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=fr_FR.UTF-8
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=
La instalación del paquete glibc-langpack-fr
(en mi caso) resolvió el problema. Eso probablemente debería realizarse cuando se crea la caja de herramientas por primera vez. O podría ser parte de la documentación.
Sí, también he oído hablar de una rareza similar reportada por usuarios checos, pero como locale
parecía funcionar bien para variantes de en
(no solo en_US
), me olvidé de eso.
¿Sabe cómo se instala el paquete glibc-langpack-fr
en su host Fedora?
Gracias a @halfline , entiendo esto un poco mejor.
Es probable que reemplazar glibc-minimal-langpack
con glibc-all-langpacks
resuelva los problemas más urgentes:
# dnf -y swap glibc-minimal-langpack glibc-all-langpacks
Creo que una solución completa también implicaría eliminar /etc/rpm/macros.image-language-conf
y reinstalar todos los paquetes con traducciones faltantes. Eso implicaría algo similar al # 55, que deshace los efectos de tsflags=nodocs
.
También sería útil tener un caso de prueba concreto que pueda usar para validar mis experimentos.
Una solución o solución alternativa más simple por ahora podría ser simplemente ejecutar podman con LANG=C.utf8
.
Creo que eso debería solucionar la mayoría de los problemas actuales.
El caso de prueba minimalista es solo para ejecutar locale
:
<strong i="10">@toolbox</strong> ~ $ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=ja_JP.UTF-8
:
No sé si esto está siguiendo este problema o no, pero en una caja de herramientas reciente, la configuración regional ya no se conserva del host. ahora obtengo la configuración regional en_US.UTF-8
, sin error de configuración regional y los mismos problemas de vim que en # 14 (excepto que no se ejecuta dentro de tmux)
Actualmente, Toolbox solo instala glibc-langpack-en
de forma predeterminada.
editar Creo que esto se hereda de la imagen fedora:30
.
En el último fedora: 30 (y fedora: rawhide) se eliminó glibc-langpack-en
.
por ejemplo, esto afecta a https://bodhi.fedoraproject.org/updates/FEDORA-CONTAINER-2019-724ac61633
En realidad, me parece que el problema real es que fedora: 30 /etc/locale.conf
tiene LANG="en_US.UTF-8"
:
asumiendo que el cambio anterior es intencional.
Podríamos solucionarlo con sed -e 's/en_US/C' /etc/locale.conf
.
De acuerdo, parece cubierto por https://bugzilla.redhat.com/show_bug.cgi?id=1727489
Puede confirmar que la instalación de glibc-langpack-en
o glibc-alll-langpacks
soluciona este problema. Tenga en cuenta que el último pesa alrededor de 200 mb, que es la mitad del peso del recipiente.
Ejecutar $ toolbox run locale
en el host produce:
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
(...)
Parece ser inherente a la configuración regional del host, que no es el caso cuando se ejecuta $ locale
dentro de una sesión de shell en contenedor:
$ toolbox enter
⬢$ locale
LANG=C.UTF-8
LC_CTYPE="C.UTF-8"
(...)
Si bien no estoy seguro de si se trata de un problema separado, la instalación de glibc-langpack-en
o glibc-all-langpacks
soluciona. Estoy en Fedora 31 Silverblue.
Comentario más útil
Ejecutar
$ toolbox run locale
en el host produce:Parece ser inherente a la configuración regional del host, que no es el caso cuando se ejecuta
$ locale
dentro de una sesión de shell en contenedor:Si bien no estoy seguro de si se trata de un problema separado, la instalación de
glibc-langpack-en
oglibc-all-langpacks
soluciona. Estoy en Fedora 31 Silverblue.