Saltar al contenido

¿Cómo se configura una configuración regional de forma no interactiva en Debian / Ubuntu?

Basta ya de buscar en otras webs porque llegaste al lugar necesario, tenemos la solución que necesitas hallar pero sin complicarte.

Solución:

Solución 1:

No se pudo hacer que la respuesta de @ stone funcione. En su lugar, uso este método (para Dockerfiles):

# Configure timezone and locale
echo "Europe/Oslo" > /etc/timezone && 
    dpkg-reconfigure -f noninteractive tzdata && 
    sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && 
    sed -i -e 's/# nb_NO.UTF-8 UTF-8/nb_NO.UTF-8 UTF-8/' /etc/locale.gen && 
    echo 'LANG="nb_NO.UTF-8"'>/etc/default/locale && 
    dpkg-reconfigure --frontend=noninteractive locales && 
    update-locale LANG=nb_NO.UTF-8

Solución 2:

Ver locale-gen:

 locale-gen --purge en_US.UTF-8

y

 echo -e 'LANG="en_US.UTF-8"nLANGUAGE="en_US:en"n' > /etc/default/locale

Solución 3:

Basado en el buen trabajo en la respuesta de @ EirikW. Específico para un Dockerfile:

ENV LANG=en_GB.UTF-8
RUN apt-get install -y locales && 
    sed -i -e "s/# $LANG.*/$LANG UTF-8/" /etc/locale.gen && 
    dpkg-reconfigure --frontend=noninteractive locales && 
    update-locale LANG=$LANG

Solución 4:

Para mí fue necesario configurar los 3 ENV-Vars adicionales:

# - Set the locale + timezone --------------------------------------------------
RUN echo "Europe/Vienna" > /etc/timezone && 
    dpkg-reconfigure -f noninteractive tzdata && 
    sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && 
    sed -i -e 's/# de_AT.UTF-8 UTF-8/de_AT.UTF-8 UTF-8/' /etc/locale.gen && 
    echo 'LANG="de_AT.UTF-8"'>/etc/default/locale && 
    dpkg-reconfigure --frontend=noninteractive locales && 
    update-locale LANG=de_AT.UTF-8

ENV LANG de_AT.UTF-8
ENV LANGUAGE de_AT.UTF-8
ENV LC_ALL de_AT.UTF-8

Sin embargo, gracias a ErikWs por su respuesta: (https://serverfault.com/a/689947)


Solución 5:

Para reconfigurar la zona horaria y las configuraciones regionales de forma no interactiva, desde dentro de 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 apropiado zoneinfo archivo en el directorio ‘/ usr / share / zoneinfo’. Luego, ejecuto el dpkg-reconfigure comando, y todo se pondrá en su lugar. Entonces, por ejemplo, para configurar la zona horaria ‘Europa / Bruselas’:

    AREA='Europe'
    ZONE='Brussels'
    
    ZONEINFO_FILE='/usr/share/zoneinfo/'"$AREA"'/'"$ZONE"
    ln --force --symbolic "$ZONEINFO_FILE" '/etc/localtime'
    dpkg-reconfigure --frontend=noninteractive tzdata
    

    (Tenga en cuenta que el AREA es un subdirectorio en ‘/ usr / share / info’ y la ZONA es un archivo en el subdirectorio AREA).

  • Para configurar las configuraciones regionales, primero ejecuto un sed script que creará una nueva copia del archivo ‘/etc/locale.gen’, basada en el contenido del archivo ‘/ usr / share / i18n / SUPPORTED’. Se copiarán todas las líneas del archivo de entrada, 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):

    sed --regexp-extended --expression='
    
       1  
             i
    # This file lists locales that you wish to have built. You can find a list
    # of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add
    # user defined locales to /usr/local/share/i18n/SUPPORTED. If you change
    # this file, you need to rerun locale-gen.
    
    
    
          
    
       /^(en|nl|fr|de)(_[[:upper:]]+)?(.UTF-8)?(@[^[:space:]]+)?[[:space:]]+UTF-8$/!   s/^/# /
    
    ' /usr/share/i18n/SUPPORTED >  /etc/locale.gen
    

    A continuación, configuro el entorno local predeterminado en la base de datos de debconf, por ejemplo, a Inglés británico:

    debconf-set-selections <<< 'locales locales/default_environment_locale select en_GB.UTF-8'
    

    Posteriormente elimino el archivo '/ etc / default / locale' existente (solo para asegurarme de que su contenido anterior no interfiera con mi nueva configuración), y ejecuto el dpkg-reconfigure comando para generar todas las configuraciones regionales que el sed script seleccionado, y para crear un nuevo archivo '/ etc / default / locale' con solo una entrada para establecer la variable 'LANG' en mi entorno local predeterminado seleccionado:

    rm --force --verbose /etc/default/locale
    dpkg-reconfigure --frontend=noninteractive locales
    

    Luego, dependiendo de mis requisitos, es posible que desee ejecutar algunos actualizar-locale comandos, para anular, por ejemplo, las variables que afectan el formato de los valores, y establecerlos en una configuración regional diferente (como Inglés irlandés):

    update-locale LC_NUMERIC='en_IE.UTF-8'
    update-locale LC_TIME='en_IE.UTF-8'
    update-locale LC_MONETARY='en_IE.UTF-8'
    update-locale LC_PAPER='en_IE.UTF-8'
    update-locale LC_NAME='en_IE.UTF-8'
    update-locale LC_ADDRESS='en_IE.UTF-8'
    update-locale LC_TELEPHONE='en_IE.UTF-8'
    update-locale LC_MEASUREMENT='en_IE.UTF-8'
    update-locale LC_IDENTIFICATION='en_IE.UTF-8'
    

    (Podría haber especificado todos estos parámetros en una sola invocación del actualizar-locale comando, pero aparentemente, el orden en que las entradas se escriben en el archivo '/ etc / default / locale' es impredecible si lo hago. Prefiero que estén siempre en el mismo orden, por eso los genero uno por uno).

    Y finalmente, es posible que desee ejecutar el actualizar-locale comando una última vez, para configurar la variable IDIOMA (es decir, la lista de idiomas en los que quiero que se muestren los mensajes de texto traducibles):

    update-locale LANGUAGE='en_GB:en_US:en'
    

Mezcle todo esto en un script bash y podrá reconfigurar fácilmente la configuración regional con una simple ejecución del script, lo que no requerirá ninguna interacción del usuario.

En mi experiencia, sin embargo, la nueva configuración no se activará por completo hasta que reinicie su 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 que inicie sesión, su sesión de usuario continuará usando la configuración anterior; luego, después del segundo reinicio, su sesión de usuario también tomará la nueva configuración.

Si aceptas, tienes la opción de dejar un ensayo acerca de qué te ha parecido esta reseña.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *