Ignore:
Timestamp:
01/15/2006 12:10:43 PM (18 years ago)
Author:
Manuel Canales Esparcia <manuel@…>
Branches:
10.0, 10.0-rc1, 10.1, 10.1-rc1, 11.0, 11.0-rc1, 11.0-rc2, 11.0-rc3, 11.1, 11.1-rc1, 11.2, 11.2-rc1, 11.3, 11.3-rc1, 12.0, 12.0-rc1, 12.1, 12.1-rc1, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.5-systemd, 7.6, 7.6-systemd, 7.7, 7.7-systemd, 7.8, 7.8-systemd, 7.9, 7.9-systemd, 8.0, 8.1, 8.2, 8.3, 8.4, 9.0, 9.1, arm, bdubbs/gcc13, ml-11.0, multilib, renodr/libudev-from-systemd, s6-init, trunk, xry111/arm64, xry111/arm64-12.0, xry111/clfs-ng, xry111/lfs-next, xry111/loongarch, xry111/loongarch-12.0, xry111/loongarch-12.1, xry111/mips64el, xry111/pip3, xry111/rust-wip-20221008, xry111/update-glibc
Children:
3467c02f
Parents:
b0ed1af
Message:

Indented chapter 04.

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@7275 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

File:
1 edited

Legend:

Unmodified
Added
Removed
  • chapter04/settingenviron.xml

    rb0ed1af r6a3b6af  
    11<?xml version="1.0" encoding="ISO-8859-1"?>
    2 <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
     2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
     3  "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
    34  <!ENTITY % general-entities SYSTEM "../general.ent">
    45  %general-entities;
    56]>
     7
    68<sect1 id="ch-tools-settingenviron">
    7 <title>Setting Up the Environment</title>
    8 <?dbhtml filename="settingenvironment.html"?>
     9  <?dbhtml filename="settingenvironment.html"?>
    910
    10 <para>Set up a good working environment by creating two new startup
    11 files for the <command>bash</command> shell. While logged in as user
    12 <emphasis>lfs</emphasis>, issue the
    13 following command to create a new <filename>.bash_profile</filename>:</para>
     11  <title>Setting Up the Environment</title>
     12
     13  <para>Set up a good working environment by creating two new startup files
     14  for the <command>bash</command> shell. While logged in as user
     15  <systemitem class="username">lfs</systemitem>, issue the following command
     16  to create a new <filename>.bash_profile</filename>:</para>
    1417
    1518<screen><userinput>cat &gt; ~/.bash_profile &lt;&lt; "EOF"
     
    1720EOF</userinput></screen>
    1821
    19 <para>When logged on as user <emphasis>lfs</emphasis>, the
    20 initial shell is usually a <emphasis>login</emphasis> shell which reads the
    21 <filename>/etc/profile</filename> of the host (probably containing
    22 some settings and environment variables) and then
    23 <filename>.bash_profile</filename>. The <command>exec env
    24 -i.../bin/bash</command> command in the
    25 <filename>.bash_profile</filename> file replaces the running shell
    26 with a new one with a completely empty environment, except for the
    27 <envar>HOME</envar>, <envar>TERM</envar>, and
    28 <envar>PS1</envar> variables. This ensures that no unwanted and
    29 potentially hazardous environment variables from the host system leak
    30 into the build environment. The technique used here achieves the goal
    31 of ensuring a clean environment.</para>
     22  <para>When logged on as user <systemitem class="username">lfs</systemitem>,
     23  the initial shell is usually a <emphasis>login</emphasis> shell which reads
     24  the <filename>/etc/profile</filename> of the host (probably containing some
     25  settings and environment variables) and then <filename>.bash_profile</filename>.
     26  The <command>exec env -i.../bin/bash</command> command in the
     27  <filename>.bash_profile</filename> file replaces the running shell with a new
     28  one with a completely empty environment, except for the <envar>HOME</envar>,
     29  <envar>TERM</envar>, and <envar>PS1</envar> variables. This ensures that no
     30  unwanted and potentially hazardous environment variables from the host system
     31  leak into the build environment. The technique used here achieves the goal of
     32  ensuring a clean environment.</para>
    3233
    33 <para>The new instance of the shell is a <emphasis>non-login</emphasis>
    34 shell, which does not read the <filename>/etc/profile</filename> or
    35 <filename>.bash_profile</filename> files, but rather reads the
    36 <filename>.bashrc</filename> file instead. Create the
    37 <filename>.bashrc</filename> file now:</para>
     34  <para>The new instance of the shell is a <emphasis>non-login</emphasis>
     35  shell, which does not read the <filename>/etc/profile</filename> or
     36  <filename>.bash_profile</filename> files, but rather reads the
     37  <filename>.bashrc</filename> file instead. Create the
     38  <filename>.bashrc</filename> file now:</para>
    3839
    3940<screen><userinput>cat &gt; ~/.bashrc &lt;&lt; "EOF"
     
    4647EOF</userinput></screen>
    4748
    48 <para>The <command>set +h</command> command turns off
    49 <command>bash</command>'s hash function. Hashing is ordinarily a useful
    50 feature&mdash;<command>bash</command> uses a hash table to remember the
    51 full path of executable files to avoid searching the <envar>PATH</envar> time
    52 and again to find the same executable. However, the new tools
    53 should be used as soon as they are installed. By switching off the
    54 hash function, the shell will always search the <envar>PATH</envar> when a program is
    55 to be run. As such, the shell will find the newly compiled
    56 tools in <filename class="directory">$LFS/tools</filename> as soon as
    57 they are available without remembering a previous version of the same
    58 program in a different location.</para>
     49  <para>The <command>set +h</command> command turns off
     50  <command>bash</command>'s hash function. Hashing is ordinarily a useful
     51  feature&mdash;<command>bash</command> uses a hash table to remember the
     52  full path of executable files to avoid searching the <envar>PATH</envar>
     53  time and again to find the same executable. However, the new tools should
     54  be used as soon as they are installed. By switching off the hash function,
     55  the shell will always search the <envar>PATH</envar> when a program is to
     56  be run. As such, the shell will find the newly compiled tools in
     57  <filename class="directory">$LFS/tools</filename> as soon as they are
     58  available without remembering a previous version of the same program in a
     59  different location.</para>
    5960
    60 <para>Setting the user file-creation mask (umask) to 022 ensures that newly
    61 created files and directories are only writable by their owner, but
    62 are readable and executable by anyone (assuming default modes are used
    63 by the open(2) system call, new files will end up with permission mode
    64 644 and directories with mode 755).</para>
     61  <para>Setting the user file-creation mask (umask) to 022 ensures that newly
     62  created files and directories are only writable by their owner, but are
     63  readable and executable by anyone (assuming default modes are used by the
     64  <function>open(2)</function> system call, new files will end up with permission
     65  mode 644 and directories with mode 755).</para>
    6566
    66 <para>The <envar>LFS</envar> variable should be set to the
    67 chosen mount point.</para>
     67  <para>The <envar>LFS</envar> variable should be set to the chosen mount
     68  point.</para>
    6869
    69 <para>The <envar>LC_ALL</envar> variable controls the
    70 localization of certain programs, making their messages follow the
    71 conventions of a specified country.  If the host system uses a version
    72 of Glibc older than 2.2.4, having <envar>LC_ALL</envar> set to something other than
    73 <quote>POSIX</quote> or <quote>C</quote> (during this chapter) may
    74 cause issues if you exit the chroot environment and wish to return
    75 later. Setting <envar>LC_ALL</envar> to <quote>POSIX</quote>
    76 or <quote>C</quote> (the two are equivalent) ensures that
    77 everything will work as expected in the chroot environment.</para>
     70  <para>The <envar>LC_ALL</envar> variable controls the localization of certain
     71  programs, making their messages follow the conventions of a specified country.
     72  If the host system uses a version of Glibc older than 2.2.4, having
     73  <envar>LC_ALL</envar> set to something other than <quote>POSIX</quote> or
     74  <quote>C</quote> (during this chapter) may cause issues if you exit the chroot
     75  environment and wish to return later. Setting <envar>LC_ALL</envar> to
     76  <quote>POSIX</quote> or <quote>C</quote> (the two are equivalent) ensures that
     77  everything will work as expected in the chroot environment.</para>
    7878
    79 <para>By putting <filename class="directory">/tools/bin</filename> ahead of the
    80 standard <envar>PATH</envar>, all the programs installed in <xref
    81 linkend="chapter-temporary-tools"/> are picked up by the shell immediately after
    82 their installation. This, combined with turning off hashing, limits the risk
    83 that old programs are used from the host when the same programs are available in
    84 the chapter 5 environment.</para>
     79  <para>By putting <filename class="directory">/tools/bin</filename> ahead of the
     80  standard <envar>PATH</envar>, all the programs installed in <xref
     81  linkend="chapter-temporary-tools"/> are picked up by the shell immediately after
     82  their installation. This, combined with turning off hashing, limits the risk
     83  that old programs are used from the host when the same programs are available in
     84  the chapter 5 environment.</para>
    8585
    86 <para>Finally, to have the environment fully prepared for building the
    87 temporary tools, source the just-created user profile:</para>
     86  <para>Finally, to have the environment fully prepared for building the
     87  temporary tools, source the just-created user profile:</para>
    8888
    8989<screen><userinput>source ~/.bash_profile</userinput></screen>
    9090
    9191</sect1>
    92 
Note: See TracChangeset for help on using the changeset viewer.