Estoy usando Arch Linux, y he seguido las instrucciones en la wiki sobre cómo configurar mi ubicación.
Casi todos los programas que se ejecutan se quejan de la configuración regional, incluso locale. Se parece a esto:
% locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=en-US
LC_TIME=en-US
LC_COLLATE="POSIX"
LC_MONETARY=en-US
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT=en-US
LC_IDENTIFICATION="POSIX"
LC_ALL=
o:
% perl
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_TIME = "en-US",
LC_NUMERIC = "en-US",
LC_MONETARY = "en-US",
LC_MEASUREMENT = "en-US",
LC_CTYPE = "en_US.UTF-8",
LANG = (unset)
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C")
Algo un poco confuso es que /etc/locale.gentiene varios ejemplos; todas las líneas UTF-8 tienen "algo.UTF-8", y ejecuta locale-genprogramas en_US.UTF-8... donemientras se está ejecutando, pero locale -a, que se supone que muestra los programas locales disponibles en_US.utf8. He intentado varias combinaciones de ambos formatos en /etc/locale-geny LOCALE=en /etc/rc.conf, pero nada ha solucionado el problema.
Información Adicional:
% locale -a
C
POSIX
en_US
en_US.iso88591
en_US.utf8
La sugerencia de Bruce Ediger de configurar LANG=Cy LC_ALL=en_US.UTF-8trabajar (de hecho, la configuración lo LC_ALLarregló, la configuración LANGno importó), pero me gustaría saber qué está sucediendo. Según SUS , LC_ALL anulará todas las demás variables LC_ * si está configurado y no es nulo. En mi sistema, está configurado, pero es nulo, por lo que debe ignorarse y, en su lugar, deben usarse otros valores. Eso no es lo que está pasando, parece que las aplicaciones están llamando setlocalecon LC_ALL, para conseguir una NULLvuelta, y generar un error, incluso cuando otras llamadas a setlocaledevuelven una cadena buena.
Aquí está la parte superior de una ltracede locale(desplácese hacia la derecha para ver los valores de retorno de la función)
% ltrace locale
(0, 0, 0, -1, 0x7f5c1ae44510) = 0x7f5c1ae47140
__libc_start_main(0x401d70, 1, 0x7fff7c8cfbf8, 0x404610, 0x4046a0 <unfinished ...>
setlocale(0, "") = "en_US.UTF-8"
setlocale(5, "") = "en_US.UTF-8"
textdomain("libc") = "libc"
argp_parse(0x607280, 1, 0x7fff7c8cfbf8, 0, 0x7fff7c8cfad4) = 0
setlocale(6, "") = NULL
dcgettext(0, 0x405aa8, 5, 0, 0) = 0x405aa8
error(0, 2, 0x405aa8, 1, 0locale: Cannot set LC_ALL to default locale: No such file or directory)
.utf8en LOCALEy LC_*, pero al parecer .UTF-8trabaja aquí también ... En cuanto a es-ES: ¿Parece (y sin .utf8) en locale -a?
export LANG=Cy export LC_ALL=en_US.UTF-8ver qué pasa. Mi computadora portátil Arch Linux tiene LOCALE="en_US.UTF-8"/etc/rc.conf, y no puedo entender dónde establece mi computadora portátil LANG = C.
/etc/locale.conf? Parece que escribiste accidentalmente LANG=en-US(con guión) en lugar de LANG=en_US(con guión bajo).
/etc/locale.gensería útil también.
locale -a?