Changeset 6a3b6af for chapter04/settingenviron.xml
- Timestamp:
- 01/15/2006 12:10:43 PM (18 years ago)
- 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
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
chapter04/settingenviron.xml
rb0ed1af r6a3b6af 1 1 <?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" [ 3 4 <!ENTITY % general-entities SYSTEM "../general.ent"> 4 5 %general-entities; 5 6 ]> 7 6 8 <sect1 id="ch-tools-settingenviron"> 7 <title>Setting Up the Environment</title> 8 <?dbhtml filename="settingenvironment.html"?> 9 <?dbhtml filename="settingenvironment.html"?> 9 10 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> 14 17 15 18 <screen><userinput>cat > ~/.bash_profile << "EOF" … … 17 20 EOF</userinput></screen> 18 21 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> 32 33 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> or35 <filename>.bash_profile</filename> files, but rather reads the36 <filename>.bashrc</filename> file instead. Create the37 <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> 38 39 39 40 <screen><userinput>cat > ~/.bashrc << "EOF" … … 46 47 EOF</userinput></screen> 47 48 48 <para>The <command>set +h</command> command turns off49 <command>bash</command>'s hash function. Hashing is ordinarily a useful 50 feature—<command>bash</command> uses a hash table to remember the51 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 adifferent 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—<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> 59 60 60 <para>Setting the user file-creation mask (umask) to 022 ensures that newly61 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> 65 66 66 <para>The <envar>LFS</envar> variable should be set to the 67 chosen mountpoint.</para>67 <para>The <envar>LFS</envar> variable should be set to the chosen mount 68 point.</para> 68 69 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> 78 78 79 <para>By putting <filename class="directory">/tools/bin</filename> ahead of the80 standard <envar>PATH</envar>, all the programs installed in <xref81 linkend="chapter-temporary-tools"/> are picked up by the shell immediately after82 their installation. This, combined with turning off hashing, limits the risk83 that old programs are used from the host when the same programs are available in84 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> 85 85 86 <para>Finally, to have the environment fully prepared for building the87 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> 88 88 89 89 <screen><userinput>source ~/.bash_profile</userinput></screen> 90 90 91 91 </sect1> 92
Note:
See TracChangeset
for help on using the changeset viewer.