# cvs commit: LFS/latex/chapter06 glibc.tex

gerard at linuxfromscratch.org gerard at linuxfromscratch.org
Thu Feb 20 06:22:59 PST 2003

gerard      03/02/20 09:22:59

Modified:    latex/chapter06 glibc.tex
Log:
applied a patch by Alex fixing sentences and grammar

Revision  Changes    Path
1.11      +61 -67    LFS/latex/chapter06/glibc.tex

Index: glibc.tex
===================================================================
RCS file: /home/cvsroot/LFS/latex/chapter06/glibc.tex,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- glibc.tex	19 Feb 2003 17:12:38 -0000	1.10
+++ glibc.tex	20 Feb 2003 14:22:59 -0000	1.11
@@ -42,37 +42,36 @@

\subsection{Glibc installation}

-Before starting to install glibc, you must cd into the
+Before starting to install glibc, you must \command{cd} into the
-inside the \filename|glibc-2.3.1| directory, not in \filename|/usr/src| as
+in that directory, not in \filename|/usr/src| as
you normally would do.

This package is known to behave badly when you have changed its default
optimization flags (including the -march and -mcpu options).  Therefore, if
you have defined any environment variables that override default
optimizations, such as \var{CFLAGS} and \var{CXXFLAGS}, we recommend
-unsetting or modifying them when building Glibc.
+unsetting them when building Glibc.

\noindent Basically, compiling Glibc in any other way than the book suggests is
putting your system at a very high risk.

-\bigskip \noindent We'll start by applying a patch to Glibc that fixes the
-following:
+\bigskip \noindent We'll start by applying a patch that does the following:

\begin{itemize}
\item It converts all occurrences of \emph{\$(PERL)} to \filename|/usr/bin/perl| in the\\ \filename|malloc/Makefile| file. This is done because Glibc can't autodetect -the location of perl because the Perl package hasn't been +the location of \filename|perl| because the Perl package hasn't been installed yet. And if Glibc thinks Perl isn't installed, the -mtrace perl program won't be installed either. +\filename|mtrace| perl program won't be installed either. \item It replaces all occurrences of \username{root} with \username{0} in the \filename|login/Makefile| file. This is done because Glibc itself isn't installed yet and therefore username to userid resolving isn't working yet, so a -\command{chown root$<$file$>$} will fail, however it'll work fine if you use the -numeric IDs (such as \command{chown 0$<$file$>$}). +\command{chown root$<$file$>$} will fail. Using numeric IDs (as in +\command{chown 0$<$file$>$}) works fine. \end{itemize} \command{patch -Np1 -i ../glibc-2.3.1-root-perl.patch} @@ -82,14 +81,14 @@ libraries. Even though static binaries have all the necessary parts of Glibc built-in, they still rely on one external library set: Glibc's NSS libraries. These libraries, among other things, tell programs where the -system's password database is (\filename|/etc/password|, or NIS, or +system's password database is (in \filename|/etc/password|, NIS, or whatever other scheme has been configured). Glibc has undergone some changes since version 2.2.x and the new NSS -code is incompatible with the old one. So when Glibc is installed, it -will install its new NSS libraries and static programs will load these -new NSS libraries and start to abort with segmentation fault error. -This patch undoes a few of the changes to overcome the problem. +code that comes with it is incompatible with the old one. When Glibc is +installed, static programs will load these new NSS Libraries and will +abort with \emph{segmentation fault} errors. This patch undoes some of the +changes to overcome the problem. If you started chapter 5 with a host system that uses Glibc-2.2.x or older, you must apply the following patch. We will install Glibc again at the end @@ -103,9 +102,8 @@ \bigskip \command{touch /etc/ld.so.conf} -\bigskip \noindent It is recommended by the Glibc installation -documentation to build Glibc outside of the source directory in a dedicated -directory: +\bn The documentation that comes with Glibc recommends to build the package +not in the source directory but in a separate, dedicated directory: \bigskip \command{mkdir ../glibc-build \&\&\\ \indent cd ../glibc-build} @@ -119,19 +117,20 @@ \bn The meaning of the configure options are: \begin{itemize} -\item \command{-{}-disable-profile}: This disables the building of libraries -with profiling information. This command may be omitted if you plan to do +\item \command{-{}-disable-profile}: This disables the building of the +libraries with profiling information. Omit this option if you plan to do profiling. \index{-{}-disable-profile} -\item \command{-{}-enable-add-ons}: This enables the add-on that we install -with Glibc, linuxthreads +\item \command{-{}-enable-add-ons}: This enables any add-on that we install +with Glibc, in our case the Glibc-linuxthreads package. \index{-{}-enable-add-ons} -\item \command{-{}-libexecdir=/usr/bin}: This will cause the pt\_chown -program to be installed in the \filename|/usr/bin| directory. +\item \command{-{}-libexecdir=/usr/bin}: This will cause the +\filename|pt\_chown| program to be installed in the \filename|/usr/bin| +directory. \end{itemize} \noindent During this stage you will see the following warning: @@ -143,23 +142,23 @@ *** Check the INSTALL file for required versions. \end{BVerbatim} -\bigskip \noindent The missing \command{msgfmt} (from the gettext package -which we will install later in this chapter) won't cause any problems. -\command{msgfmt} is used to generate the binary translation files that are -used to make your system talk in a different language. Because these -translation files have already been generated for you, there is no need for -msgfmt. You'd only need \command{msgfmt} if you change the translation -source files (the \filename|*.po| files in the \filename|po| subdirectory) -which would require you to re-generate the binary files. +\bigskip \noindent The missing \command{msgfmt} (from the Gettext package, +which we'll install later) won't cause any problems. The \command{msgfmt} +program is used to generate the binary translation files that are used to +make your system talk in a different language. Because these translation +files have already been generated for you, there is no need for +\filename|msgfmt|. You'd only need this program if you change the +translation source files (the \filename|*.po| files in the \filename|po| +subdirectory), which would require you to re-generate the binary files. \bigskip \noindent Because Glibc hasn't been installed yet, one of the -tests that was run by the \command{configure} script failed. This test is -supposed to test \command{gcc} to determine whether or not a cross-compiler -is installed. However, Glibc needs to be installed already to run this -test. Since the test failed, the configure script automatically assumed we -do have a cross-compiler. We have to override that assumption by explicitly -telling Glibc we're not cross-compiling. Not doing this has a couple of -unintended side effects, such as the timezone files not being installed. +tests that was run by the \command{configure} script has failed. This test +is supposed to test \command{gcc} to determine whether or not a +cross-compiler is installed. However, Glibc needs to be already installed +to run this test. Since the test failed, the configure script assumes we +have a cross-compiler. We have to override that assumption by explicitly +telling Glibc we're not cross-compiling. Not doing this would have a couple +of unintended side effects, such as the timezone files not being installed. \bigskip \command{echo "cross-compiling = no"$>\$ configparms}

@@ -177,33 +176,34 @@

\bigskip \command{make install}

-\bigskip \noindent Locales aren't installed when you ran make install, so
-we have to do that ourselves now. Locales are used by Glibc to make your
-Linux system talk in a different language:
+\bn The locales (used by Glibc to make your Linux system talk in a
+different language) weren't installed when you ran the previous command, so
+we have to do that ourselves now:
+

\bigskip \command{make localedata/install-locales}

-\bigskip \noindent An alternative to running \command{make
-localedata/install-locales} is to only install those locales which you need
-or want. This can be achieved using the \command{localedef} command.
-Information on this can be found in the \filename|INSTALL| file in the
-\filename|glibc-2.3.1| tree.
+\bigskip \noindent An alternative to running the previous command is to
+install only those locales which you need or want. This can be achieved
+by using the \command{localedef} command. Information on this can be found
+in the \filename|INSTALL| file located in the \filename|glibc-2.3.1|
+directory.

\index{locales}

\bigskip \noindent To finish off the installation we'll reload Bash so it
-uses the libnss files. This will also get rid of the I have no name!''
-message in the command prompt:
+will use the new \filename|libnss_*| files. This will also get rid of the
+I have no name!'' message in the command prompt:

\subsection{Configuring Glibc}

-We need to create the \filename|/etc/nsswitch.conf| file. Although glibc
-should provide defaults when this file is missing or corrupt, its defaults
-don't work well with networking. That is dealt with in a later chapter.
-Also, our timezone needs to be set up.
+We need to create the \filename|/etc/nsswitch.conf| file, because, although
+Glibc provides defaults when this file is missing or orrupt, the Glibc
+defaults don't work well with networking. Also, our timezone eeds to be set
+up.

\noindent Create a new file \filename|/etc/nsswitch.conf| by running the
@@ -228,25 +228,19 @@
\index{nsswitch.conf}
\index{/etc/nsswitch.conf}

-\bigskip \noindent The tzselect script has to be run and the questions
-regarding your timezone have to be answered. When you're done, the script
-will give the location of the needed timezone file.
-
-\bigskip \noindent Create the \filename|/etc/localtime| symlink by running:
-
-\bigskip
-\command{ln -sf ../usr/share/zoneinfo/<tzselect's output> /etc/localtime}
+To find out what timezone you're in, run the following script:

-\bigskip \noindent tzselect's output can be something like \emph{EST5EDT}
+\bc{tzselect}

-\bigskip \noindent The symlink you'd create with that information would be:
-
-\bigskip \command{ln -sf ../usr/share/zoneinfo/EST5EDT /etc/localtime}
-
-\bigskip \noindent Or:
+output the name of your timezone, something like \emph{EST5EDT} or
+running:

+
+timezone that the \command{tzselect} script gave you.

\index{localtime}
\index{/etc/localtime}

--
Unsubscribe: send email to listar at linuxfromscratch.org
and put 'unsubscribe lfs-book' in the subject header of the message