summaryrefslogtreecommitdiffstats
path: root/chapter03/introduction.xml
blob: c96f187b3337302003c6733b3fdab76337f44de6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../general.ent">
  %general-entities;
]>

<sect1 id="ch-materials-introduction">
  <?dbhtml filename="introduction.html"?>

  <title>Introduction</title>

  <para>This chapter includes a list of packages that need to be downloaded in
  order to build a basic Linux system. The listed version numbers correspond to
  versions of the software that are known to work, and this book is based on
  their use. We highly recommend against using different versions because the build
  commands for one version may not work with a different version, unless the
  different version is specified by a LFS errata or security advisory.
  The newest package versions may also have problems that require
  work-arounds. These work-arounds will be developed and stabilized in the
  development version of the book.</para>

  <para>For some packages, the release tarball and the (Git or SVN)
  repository snapshot tarball for this release may be published with
  similar file name.  A release tarball contains generated files (for
  example, <command>configure</command> script generated by
  <command>autoconf</command>), in addition to the contents of the
  corresponding repository snapshot.  The book uses release tarballs
  whenever possible. Using a repository snapshot instead of a release
  tarball specified by the book will cause problems.</para>

  <para>Download locations may not always be accessible. If a download
  location has changed since this book was published, Google (<ulink
  url="http://www.google.com/"/>) provides a useful search engine for
  most packages. If this search is unsuccessful, try one of the
  alternative means of downloading at <ulink
  url="&lfs-root;lfs/mirrors.html#files"/>. </para>

  <para>Downloaded packages and patches will need to be stored somewhere
  that is conveniently available throughout the entire build. A working
  directory is also required to unpack the sources and build them.
  <filename class="directory">$LFS/sources</filename> can be used both
  as the place to store the tarballs and patches and as a working
  directory. By using this directory, the required elements will be
  located on the LFS partition and will be available during all stages
  of the building process.</para>

  <para>To create this directory, execute the following command, as user
  <systemitem class="username">root</systemitem>, before starting the download
  session:</para>

<screen role="nodump"><userinput>mkdir -v $LFS/sources</userinput></screen>

  <para>Make this directory writable and sticky. <quote>Sticky</quote>
  means that even if multiple users have write permission on a
  directory, only the owner of a file can delete the file within a
  sticky directory. The following command will enable the write and
  sticky modes:</para>

<screen role="nodump"><userinput>chmod -v a+wt $LFS/sources</userinput></screen>

  <para>There are several ways to obtain all the necessary packages and patches
  to build LFS:</para>

  <itemizedlist>
    <listitem>
      <para>The files can be downloaded individually as described in the
      next two sections.</para>
    </listitem>
    <listitem>
      <para>For stable versions of the book, a tarball of all the needed files
      can be downloaded from one of the LFS files mirrors listed at
      <ulink url="https://www.linuxfromscratch.org/mirrors.html#files"/>.</para>
    </listitem>
    <listitem>
      <para>The files can be downloaded using <command>wget</command> and
      a wget-list as described below.</para>
    </listitem>
  </itemizedlist>

  <para>To download all of the packages and patches by using
  <ulink url="../wget-list">wget-list</ulink> as an input to the
  <command>wget</command> command, use:</para>

<screen role="nodump"><userinput>wget --input-file=wget-list --continue --directory-prefix=$LFS/sources</userinput></screen>

  <note><para>
    The <filename>wget-list</filename> file mentioned above retrieves all
    packages for both the sysV and systemd versions of LFS.  There are a total
    of five additional small packages not needed for the currrent book.  The
    <filename>md5sums</filename> file mentioned below is specific to the
    current book.
  </para></note>

  <para>Additionally, starting with LFS-7.0, there is a separate file,
  <ulink url="../md5sums">md5sums</ulink>, which can be used to verify that all
  the correct packages are available before proceeding.  Place that file in
  <filename class="directory">$LFS/sources</filename> and run:</para>

<screen role="nodump"><userinput>pushd $LFS/sources
  md5sum -c md5sums
popd</userinput></screen>

  <para>This check can be used after retrieving the needed files with any of the
  methods listed above.</para>

</sect1>