Преглед изворни кода

Improve the heuristic for selecting a supported/working locale

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@7143 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
Matthew Burgess пре 20 година
родитељ
комит
c45b780761
4 измењених фајлова са 58 додато и 14 уклоњено
  1. 5 0
      chapter01/changelog.xml
  2. 11 11
      chapter06/glibc.xml
  3. 40 1
      chapter07/profile.xml
  4. 2 2
      general.ent

+ 5 - 0
chapter01/changelog.xml

@@ -114,6 +114,11 @@ First a summary, then a detailed log.</para>
 </itemizedlist>
 </itemizedlist>
 </listitem>
 </listitem>
 
 
+<listitem><para>November 12, 2005 [matt]: Improve the heuristic for determining
+a locale that is supported by both Glibc and packages outside LFS (bug 1642).
+Many thanks to Alexander Patrakov for highlighting the numerous issues and for
+reviewing the various suggested fixes.</para></listitem>
+
 <listitem><para>November 11, 2005 [matt]: Omit running Bzip2's testsuite as a
 <listitem><para>November 11, 2005 [matt]: Omit running Bzip2's testsuite as a
 separate step, as <command>make</command> runs it automatically (bug 1652).
 separate step, as <command>make</command> runs it automatically (bug 1652).
 </para></listitem>
 </para></listitem>

+ 11 - 11
chapter06/glibc.xml

@@ -136,11 +136,11 @@ with:</para>
 <screen><userinput>make localedata/install-locales</userinput></screen>
 <screen><userinput>make localedata/install-locales</userinput></screen>
 
 
 <para>To save time, an alternative to running the
 <para>To save time, an alternative to running the
-previous command (which generates and installs every locale Glibc is
-aware of) is to install only those locales that are wanted and needed.
-This can be achieved by using the <command>localedef</command>
-command. Information on this command is located in the
-<filename>INSTALL</filename> file in the Glibc source.  However, there
+previous command (which generates and installs every locale listed in the
+glibc-&glibc-version;/localedata/SUPPORTED file) is to install only those
+locales that are wanted and needed.  This can be achieved by using the
+<command>localedef</command> command. Information on this command is located in
+the <filename>INSTALL</filename> file in the Glibc source.  However, there
 are a number of locales that are essential in order for the tests of
 are a number of locales that are essential in order for the tests of
 future packages to pass, in particular, the
 future packages to pass, in particular, the
 <emphasis>libstdc++</emphasis> tests from GCC. The following
 <emphasis>libstdc++</emphasis> tests from GCC. The following
@@ -169,12 +169,12 @@ programmers making assumptions that break in such locales, LFS should
 not be used in locales that utilize multibyte character sets
 not be used in locales that utilize multibyte character sets
 (including UTF-8) or right-to-left writing order.  Numerous unofficial
 (including UTF-8) or right-to-left writing order.  Numerous unofficial
 and unstable patches are required to fix these problems, and it has
 and unstable patches are required to fix these problems, and it has
-been decided by the LFS developers not to support such complex locales.  This applies to the
-ja_JP and fa_IR locales as well&mdash;they have been installed only for
-GCC and Gettext tests to pass, and the <command>watch</command> program
-(part of the Procps package) does not work properly in them. Various
-attempts to circumvent these restrictions are documented in
-internationalization-related hints.</para>
+been decided by the LFS developers not to support such complex locales at this
+time.  This applies to the ja_JP and fa_IR locales as well&mdash;they have been
+installed only for GCC and Gettext tests to pass, and the
+<command>watch</command> program (part of the Procps package) does not work
+properly in them. Various attempts to circumvent these restrictions are
+documented in internationalization-related hints.</para>
 
 
 <para>Build the linuxthreads man pages, which are a great reference
 <para>Build the linuxthreads man pages, which are a great reference
 on the threading API (applicable to NPTL as well):</para>
 on the threading API (applicable to NPTL as well):</para>

+ 40 - 1
chapter07/profile.xml

@@ -83,7 +83,46 @@ will print:</para>
 
 
 <screen>ISO-8859-1</screen>
 <screen>ISO-8859-1</screen>
 
 
-<para>This results in a final locale setting of <quote>en_GB.ISO-8859-1</quote>.</para>
+<para>This results in a final locale setting of <quote>en_GB.ISO-8859-1</quote>.
+It is important that the locale found using the heuristic above is tested prior
+to it being added to the Bash startup files:</para>
+
+<screen><userinput>LC_ALL=[locale name] locale country
+LC_ALL=[locale name] locale language
+LC_ALL=[locale name] locale charmap
+LC_ALL=[locale name] locale int_curr_symbol
+LC_ALL=[locale name] locale int_prefix</userinput></screen>
+
+<para>The above commands should print the country and language names, the
+character encoding used by the locale, the local currency and the prefix to dial
+before the telephone number in order to get into the country. If any of the
+commands above fail with a message similar to the one shown below, this means
+that your locale was either not installed in Chapter 6 or is not supported by
+the default installation of Glibc.</para>
+
+<para><computeroutput>locale: Cannot set LC_* to default locale: No such file or directory</computeroutput></para>
+
+<para>If this happens, you should either install the desired locale using the <command>localedef</command> command, or consider choosing a different locale.
+Further instructions assume that there are no such error messages from Glibc.
+</para>
+
+<para>Some packages beyond LFS may also lack support for your chosen locale. One
+example is the X library (part of the X Window System), which outputs the
+following error message:</para>
+
+<para><computeroutput>Warning: locale not supported by Xlib, locale set to C</computeroutput></para>
+
+<para>Sometimes it is possible to fix this by removing the charmap part of the
+locale specification, as long as that does not change the character map that
+Glibc associates with the locale (this can be checked by running the
+<command>locale charmap</command> command in both locales).  For example, one
+would have to change &quot;de_DE.ISO-8859-15@euro&quot; to
+&quot;de_DE@euro&quot; in order to get this locale recognized by Xlib.</para>
+
+<para>Other packages can also function incorrectly (but may not necessarily
+display any error messages) if the locale name does not meet their expectations.
+In those cases, investigating how other Linux distributions support your locale
+might provide some useful information.</para>
 
 
 <para>Once the proper locale settings have been determined, create the
 <para>Once the proper locale settings have been determined, create the
 <filename>/etc/profile</filename> file:</para>
 <filename>/etc/profile</filename> file:</para>

+ 2 - 2
general.ent

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 <?xml version="1.0" encoding="ISO-8859-1"?>
-<!ENTITY version "SVN-20051111">
-<!ENTITY releasedate "November 11, 2005">
+<!ENTITY version "SVN-20051112">
+<!ENTITY releasedate "November 12, 2005">
 <!ENTITY milestone "6.2">
 <!ENTITY milestone "6.2">
 <!ENTITY generic-version "development"> <!-- Use "development", "testing", or "x.y[-pre{x}]" -->
 <!ENTITY generic-version "development"> <!-- Use "development", "testing", or "x.y[-pre{x}]" -->