3.1. Introduction

#### Linux From Scratch - Version 13.0-systemd

### Chapter 3. Packages and Patches

- Prev

  Packages and Patches

- Next

  All Packages

- Up
- Home

# 3.1. Introduction

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 an LFS erratum 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.

For some packages, the release tarball and the (Git or SVN) repository snapshot tarball for that release may be published with similar or even identical file names. But the release tarball may contain some files which are essential despite not stored in the repository (for example, a configure script generated by autoconf), 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.

Download locations may not always be accessible. If a download location has changed since this book was published, Google (https://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 https://www.linuxfromscratch.org/lfs/mirrors.html#files.

### Important

Listed on the next page are several important packages located at `ftpmirror.gnu.org`. The canonical location of the subject packages are `ftp.gnu.org` but due to a long term distributed denial of services (DDOS) attack the site administrator suggested the LFS editors to use `ftpmirror.gnu.org` instead. See Slashdot News for details.

The `ftpmirror.gnu.org` URL actually redirects to one of the mirrors of the `ftp.gnu.org` site. You may also select a mirror manually instead of using `ftpmirror.gnu.org`. A list of mirrors is located at https://www.gnu.org/prep/ftp.en.html. If you choose to use the wget list described below, that file also can be modified to use your desired mirror.

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. `$LFS/sources` 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.

To create this directory, execute the following command, as user `root`, before starting the download session:

    mkdir -v $LFS/sources

Make this directory writable and sticky. “Sticky” 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:

    chmod -v a+wt $LFS/sources

There are several ways to obtain all the necessary packages and patches to build LFS:

- The files can be downloaded individually as described in the next two sections.

- For stable versions of the book, a tarball of all the needed files can be downloaded from one of the mirror sites listed at https://www.linuxfromscratch.org/mirrors.html#files.

- The files can be downloaded using wget and a wget-list as described below.

To download all of the packages and patches by using wget-list-systemd as an input to the wget command, use:

    wget --input-file=wget-list-systemd --continue --directory-prefix=$LFS/sources

Additionally, starting with LFS-7.0, there is a separate file, md5sums, which can be used to verify that all the correct packages are available before proceeding. Place that file in `$LFS/sources` and run:

    pushd $LFS/sources
      md5sum -c md5sums
    popd

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

If the packages and patches are downloaded as a non-`root` user, these files will be owned by the user. The file system records the owner by its UID, and the UID of a normal user in the host distro is not assigned in LFS. So the files will be left owned by an unnamed UID in the final LFS system. If you won't assign the same UID for your user in the LFS system, change the owners of these files to `root` now to avoid this issue:

    chown root:root $LFS/sources/*

- Prev

  Packages and Patches

- Next

  All Packages

- Up
- Home