Por lo general, corro aptitude -y install locales
a continuación dpkg-reconfigure locales
para establecer la configuración regional.
Ahora quiero ponerlo en un script de shell, ¿cómo puedo hacer de manera confiable lo siguiente, de forma automática / no interactiva?
- Elija
en_US.UTF-8
y configúrelo como predeterminado del sistema - Deshabilitar todas las demás configuraciones regionales
- (Opcional) Verifique si
/etc/default/locale
contiene una entrada única deLANG=en_US.UTF-8
lo esperado
File "/usr/share/apt-listchanges/ALChacks.py", line 32, in <module> sys.stderr.write(_("Can't set locale; make sure $LC_* and $LANG are correct!\n"))
...locale-gen --purge en_GB.UTF-8
una instalación limpia, obtiene este resultado inesperado: ¿Generating locales (this might take a while)... en_US.UTF-8... done Generation complete.
Alguna idea de cómo configurar la lista de configuraciones regionales como lo hace en dpkg-reconfigure configuraciones regionales de forma no interactiva?No se pudo obtener la respuesta anterior para trabajar. En cambio, uso este método (para Dockerfiles):
fuente
en_GB.UTF-8
configuración regional configurada en CircleCI; esta fue la mejor respuesta que estaba funcionando. Con la esperanza de que debido a este comentario, Google pueda mostrar esto como relevante cuando las personas intentan buscar el problema que estaba teniendo.Para reconfigurar la zona horaria y las configuraciones regionales de forma no interactiva, desde un script, esto es lo que funciona para mí (en Debian):
Para configurar la zona horaria, primero creo '/ etc / localtime' como un enlace suave al archivo zoneinfo apropiado en el directorio '/ usr / share / zoneinfo'. Luego, ejecuto el comando dpkg-reconfigure , y todo se pondrá en su lugar. Entonces, por ejemplo, para configurar la zona horaria 'Europa / Bruselas':
(Tenga en cuenta que AREA es un subdirectorio bajo '/ usr / share / info', y ZONE es un archivo bajo el subdirectorio AREA).
Para configurar las configuraciones regionales, primero ejecuto un script sed que creará una nueva copia del archivo '/etc/locale.gen', basado en el contenido del archivo '/ usr / share / i18n / SUPPORTED'. Todas las líneas del archivo de entrada se copiarán, pero se convertirán en un comentario a menos que sea una entrada de una configuración regional UTF-8 para un idioma que deseo que esté disponible en mi sistema (por ejemplo, inglés, holandés, francés, y alemán):
A continuación, configuro el entorno local predeterminado en la base de datos de debconf, por ejemplo, en inglés británico :
Posteriormente elimino el archivo '/ etc / default / locale' existente (solo para asegurarme de que su contenido anterior no interferirá con mi nueva configuración), y ejecuto el comando dpkg-reconfigure para generar todas las configuraciones regionales que el script sed seleccionó , y para crear un nuevo archivo '/ etc / default / locale' con solo una entrada para establecer la variable 'LANG' en mi entorno local predeterminado seleccionado:
Luego, según mis requisitos, es posible que desee ejecutar algunos comandos de actualización de configuración regional , para anular, por ejemplo, las variables que afectan el formato de los valores y establecerlas en una configuración regional diferente (como el inglés irlandés ):
(Podría haber especificado todos estos parámetros en una sola invocación del comando update-locale , pero aparentemente, el orden en que las entradas se escriben en el archivo '/ etc / default / locale' es impredecible si lo hago. prefiero que siempre estén en el mismo orden, por eso los genero uno por uno.)
Y finalmente, es posible que desee ejecutar el comando update-locale por última vez, para configurar la variable LANGUAGE (es decir, la lista de idiomas en los que quiero que se muestren los mensajes de texto traducibles):
Agregue todo esto a un script bash, y puede reconfigurar fácilmente su configuración regional con una simple ejecución del script, que no requerirá ninguna interacción adicional del usuario.
En mi experiencia, sin embargo, la nueva configuración no se activará por completo hasta después de reiniciar el sistema dos veces (al menos en Debian Jessie Xfce). Después del primer reinicio, el administrador de inicio de sesión tomará la nueva configuración correctamente, pero después de iniciar sesión, su sesión de usuario continuará utilizando la configuración anterior; luego, después del segundo reinicio, su sesión de usuario también tomará la nueva configuración.
fuente
Basado en el buen trabajo en la respuesta de @ EirikW. Específico para un
Dockerfile
:fuente
Para mí fue necesario configurar los 3 ENV-Vars adicionales:
Sin embargo, gracias a ErikWs por su respuesta: ( https://serverfault.com/a/689947 )
fuente