# Package Rationale

CLFS includes many packages, a number of which might not necessarily be required for a "minimal" system, but still considered very useful. The purpose of this page is to list the reasoning for each package's inclusion in the book.

- Autoconf

  The Autoconf package contains programs for producing shell scripts that can automatically configure source code.

- Automake

  The Automake package contains programs for generating Makefiles for use with Autoconf.

- Bash

  This package contains the Bourne-Again SHell.

- Binutils

  This package contains programs for handling object files. The programs in this package are needed for compiling most of the packages in CLFS.

- Bison

  Required by several package in CLFS

- Bzip2

  The programs in this package are useful for compressing files to reduce size. They are also needed to uncompress tarballs for many CLFS packages.

- CLFS-Bootscripts

  This package contains a number of scripts that run at boottime, performing essential tasks such as mounting/checking filesystems and starting the network interface.

- CLooG-PPL

  Used by GCC

- Coreutils

  This package contains many basic command-line file-management tools, required for installation of every package in CLFS.

- DejaGNU

  This package is needed for the testsuites of several packages, especially GCC and Binutils

- DHCPCD

  This package allows for automatic configuration of network interfaces from a DHCP server

- Diffutils

  This package contains programs to compare files, and can also be used to create patches. Required by the installation procedures of many CLFS packages.

- EGLIBC

  Any dynamically-linked C program (which is nearly everything in CLFS) needs a C library to compile and run.

- Expect

  This package is needed for the testsuites for several packages.

- E2fsprogs

  The programs in this package are used for the creation and maintenance of ext2/3/4 filesystems.

- File

  This package contains a program that determines the type of a given file. It is needed by some CLFS packages.

- Findutils

  This package contains programs for finding files based on certain criteria, and optionally performing commands on them. Used by the installation procedures of many CLFS packages.

- Flex

  This package contains a tool for generating text scanners. It is used by multiple packages in CLFS

- Gawk

  This package contains programs for manipulating text files, using the AWK language. It is used by the installation procedures of many packages in CLFS.

- Gcc

  This package contains a C compiler, which is required to compile most of the packages in CLFS.

- Gettext

  A tool that allows programmers to easily implement i18n in their programs. It is a required dependency for a number of packages

- Glib

  Required for pkg-config

- GMP

  Required by GCC

- Grep

  Programs for searching for text in files. Required by many packages in CLFS.

- Groff

  Required by Man

- Gzip

  Useful for compressing files to reduce size. Also needed to uncompress tarballs for many CLFS packages

- Iana-Etc

  This package provides the `/etc/services` and `/etc/protocols` files. These files map port names to port numbers as well as protocol names to their corresponding numbers. These files are essential for many network based programs to work properly.

- IProute2

  This package contains programs for administering network interfaces.

- IPutils

  This package contains several basic network-management tools.

- Kbd

  Contains keytable files and keyboard utilities compatible with the Linux kernel.

- Less

  A program that lets you view text files one page at a time. Used by Man for displaying manpages.

- Libee

  This package contains an event expression library.

- Libestr

  This package contains a library for string essentials.

- Libtool

  The Libtool package contains the GNU generic library support script. It is used by some CLFS packages.

- Linux-Headers

  This package consists of santized headers from the Linux Kernel. These headers are required for Glibc to compile.

- Linux Kernel

  The Linux operating system.

- M4

  This package contains a macro processor. It is required by several CLFS packages, including Bison.

- Make

  Required for installation of most CLFS packages

- Man

  Used for viewing manpages

- Man-Pages

  A number of useful manpages, not supplied by other packages

- MPC

  Required by GCC

- MPFR

  Required by GCC

- Module-Init-Tools

  This package contains programs that assist in

- Ncurses

  Needed by several packages in CLFS, such as Vim, Bash, and Less

- Patch

  Used for applying patches in several CLFS packages

- Perl

  The Perl package contains the Practical Extraction and Report Language. It is required by several CLFS packages.

- Pkg-config

  Needed by E2fsprogs

- PPL

  Used by GCC

- Procps

  Provides a number of small, useful utilities that give information about the `/proc` filesystem.

- Psmisc

  Provides more utilties that give information about the `/proc` filesystem.

- Readline

  The Readline library provides a set of functions for use by applications that allow users to edit command lines as they are typed in. This is essential for input in programs like `bash` to work properly.

- Rsyslog

  Rsyslog is an enhanced multi-threaded syslogd that supports multiple backends with very little dependencies. It provides a program that logs various system events into files in `/var/log`.

- Sed

  This package contains a stream editor. It is used in the installation procedures of most CLFS packages.

- Shadow

  This package contains programs that assist in the administration of users and groups, and passwords.

- Sysvinit

  Sysvinit is the init daemon that the clfs-bootscripts were written to work with.

- Tar

  Required to unpack the tar archives in which all CLFS packages are distributed

- Tcl

  Needed for the testsuites of several packages

- Texinfo

  This package contains programs for viewing, installing and converting info pages. It is used in the installation procedures of many CLFS packages.

- Udev

  The Udev package contains programs for dynamic creation of device nodes.

- Util-linux

  The Util-linux package contains miscellaneous utility programs. Among them are utilities for handling file systems, consoles, partitions, and messages. It also includes libraries that are required by E2fsprogs.

- Vim

  The Vim package contains a text editor. Users may substitute Nano, Joe, Emacs, or whatever other editor they prefer.

- XZ-Utils

  Useful for compressing files to reduce size. Also needed to uncompress tarballs for many CLFS packages

- Zlib

  The Zlib package contains compression and decompression routines used by some programs.