Changeset 490dc153


Ignore:
Timestamp:
02/05/2022 12:48:27 PM (8 months ago)
Author:
Xi Ruoyao <xry111@…>
Branches:
11.1, 11.1-rc1, 11.2, 11.2-rc1, arm, multilib, s6-init, trunk, xry111/arm64, xry111/clfs-ng, xry111/lfs-next, xry111/queue-11.3
Children:
d79ba5b
Parents:
69c4524
git-author:
Xi Ruoyao <xry111@…> (02/05/2022 03:36:39 AM)
git-committer:
Xi Ruoyao <xry111@…> (02/05/2022 12:48:27 PM)
Message:

remove "+h" in bash commands in chroot (#4998)

In the new cross-compilation approach, the $PATH in chroot does not
contain '/tools/bin'. So "+h" is useless in chroot as the newly
installed tools always replace the temporary counterpart at the same
location.

"+h" in chapter4/settingenviron.xml is kept deliberately. Currently
$LFS/tools/bin only contains programs prefixed with
"x86_64-lfs-linux-gnu-", and it's highly unlikely that any distro will
ever ship a program named with such prefix. So it may seems that we can
remove this "+h" as well. However, the situation may change in future
and we can take this oppertunity to teach the advantage and disvantage
of bash hash feature.

Files:
6 edited

Legend:

Unmodified
Added
Removed
  • chapter01/changelog.xml

    r69c4524 r490dc153  
    4444      <itemizedlist>
    4545        <listitem>
     46          <para>[xry111] - Rename <command>bash</command>
     47          <literal>+h</literal> directives in chroot.  Fixes
     48          <ulink url="&lfs-ticket-root;4998">#4998</ulink>.</para>
     49        </listitem>
     50        <listitem>
    4651          <para>[xry111] - Update to man-db-2.10.0.  Fixes
    4752          <ulink url="&lfs-ticket-root;5002">#5002</ulink>.</para>
  • chapter04/settingenviron.xml

    r69c4524 r490dc153  
    6565  the shell will always search the <envar>PATH</envar> when a program is to
    6666  be run. As such, the shell will find the newly compiled tools in
    67   <filename class="directory">$LFS/tools</filename> as soon as they are
    68   available without remembering a previous version of the same program in a
    69   different location.</para>
     67  <filename class="directory">$LFS/tools/bin</filename> as soon as they are
     68  available without remembering a previous version of the same program
     69  provided by the host distro, in
     70  <filename class='directory'>/usr/bin</filename> or
     71  <filename class='directory'>/bin</filename>.</para>
    7072      </listitem>
    7173    </varlistentry>
  • chapter07/chroot.xml

    r69c4524 r490dc153  
    2424    PS1='(lfs chroot) \u:\w\$ ' \
    2525    PATH=/usr/bin:/usr/sbin     \
    26     /bin/bash --login +h</userinput></screen>
     26    /bin/bash --login</userinput></screen>
    2727
    2828  <para>The <parameter>-i</parameter> option given to the <command>env</command>
     
    4545  <para>Notice that <filename class="directory">/tools/bin</filename> is not
    4646  in the <envar>PATH</envar>. This means that the cross toolchain will no longer be
    47   used in the chroot environment. This occurs when the shell does not
    48   <quote>remember</quote> the locations of executed binaries&mdash;for this
    49   reason, hashing is switched off by passing the <parameter>+h</parameter> option
    50   to <command>bash</command>.</para>
     47  used in the chroot environment.</para>
    5148
    5249  <para>Note that the <command>bash</command> prompt will say
  • chapter07/createfiles.xml

    r69c4524 r490dc153  
    185185  work:</para>
    186186
    187 <screen role="nodump"><userinput>exec /usr/bin/bash --login +h</userinput></screen>
    188 
    189   <para>Note the use of the <parameter>+h</parameter> directive. This tells
    190   <command>bash</command> not to use its internal path hashing. Without this
    191   directive, <command>bash</command> would remember the paths to binaries it has
    192   executed. To ensure the use of the newly compiled binaries as soon as they are
    193   installed, the <parameter>+h</parameter> directive will be used for the duration
    194   of this and the next chapter.</para>
     187<screen role="nodump"><userinput>exec /usr/bin/bash --login</userinput></screen>
    195188
    196189  <para>The <command>login</command>, <command>agetty</command>, and
  • chapter08/bash.xml

    r69c4524 r490dc153  
    9595    currently being executed):</para>
    9696
    97  <screen role="nodump"><userinput>exec /usr/bin/bash --login +h</userinput></screen>
    98 
    99     <note>
    100       <para>The parameters used make the <command>bash</command>
    101       process an interactive login shell and continues to disable hashing so
    102       that new programs are found as they become available.</para>
    103     </note>
     97 <screen role="nodump"><userinput>exec /usr/bin/bash --login</userinput></screen>
    10498
    10599  </sect2>
  • chapter08/revisedchroot.xml

    r69c4524 r490dc153  
    1414
    1515<screen><userinput>rm -rf /tmp/*</userinput></screen>
    16 
    17   <para>Now log out and reenter the chroot environment with an updated
    18   chroot command.  From now on, use this updated chroot command any time
    19   you need to reenter the chroot environment after exiting:</para>
    20 
    21 <screen role="nodump"><userinput>logout
    22 
    23 chroot "$LFS" /usr/bin/env -i          \
    24     HOME=/root TERM="$TERM"            \
    25     PS1='(lfs chroot) \u:\w\$ '        \
    26     PATH=/usr/bin:/usr/sbin            \
    27     /usr/bin/bash --login</userinput></screen>
    28 
    29   <para>Here the <parameter>+h</parameter> option is not used anymore, since
    30   all the previous programs have been replaced: hashing is therefore
    31   possible.</para>
    32 
    33   <para>If the virtual kernel file systems have been unmounted, either manually
    34   or through a reboot, ensure that the virtual kernel file systems are mounted
    35   when reentering the chroot. This process was explained in <xref
    36   linkend="ch-tools-bindmount"/> and <xref
    37   linkend="ch-tools-kernfsmount"/>.</para>
    3816
    3917  <para>There are also several files installed in the /usr/lib and /usr/libexec
Note: See TracChangeset for help on using the changeset viewer.