123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622 |
- <?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="pre-why">
- <?dbhtml filename="package-choices.html"?>
- <title>Rationale for Packages in the Book</title>
- <para>As stated earlier, the goal of LFS is to build a complete and usable
- foundation-level system. This includes all packages needed to replicate
- itself while providing a relatively minimal base from which to customize
- a more complete system based on the choices of the user. This does not
- mean that LFS is the smallest system possible. Several important packages
- are included that are not strictly required. The lists below document the
- rationale for each package in the book.</para>
- <itemizedlist>
- <listitem>
- <para>Acl</para>
- <para>This package contains utilities to administer Access
- Control Lists, which are used to define more fine-grained
- discretionary access rights for files and directories.
- </para>
- </listitem>
- <listitem>
- <para>Attr</para>
- <para>This package contains programs for administering
- extended attributes on filesystem objects.
- </para>
- </listitem>
- <listitem>
- <para>Autoconf</para>
- <para>This package contains programs for producing shell scripts that
- can automatically configure source code from a developer's
- template. It is often needed to rebuild a package after updates
- to the build procedures.</para>
- </listitem>
- <listitem>
- <para>Automake</para>
- <para>This package contains programs for generating Make files from
- a template. It is often needed to rebuild a package after updates
- to the build procedures.</para>
- </listitem>
- <listitem>
- <para>Bash</para>
- <para>This package satisfies an LSB core requirement to provide
- a Bourne Shell interface to the system. It was chosen over
- other shell packages because of its common usage and extensive
- capabilities beyond basic shell functions.</para>
- </listitem>
- <listitem>
- <para>Bc</para>
- <para>This package provides an arbitrary precision numeric processing language.
- It satisfies a requirement needed when building the Linux kernel.</para>
- </listitem>
- <listitem>
- <para>Binutils</para>
- <para>This package contains a linker, an assembler, and other
- tools for handling object files. The programs in this package are
- needed to compile most of the packages in an LFS system and beyond.</para>
- </listitem>
- <listitem>
- <para>Bison</para>
- <para>This package contains the GNU version of yacc (Yet Another
- Compiler Compiler) needed to build several other LFS programs.</para>
- </listitem>
- <listitem>
- <para>Bzip2</para>
- <para>This package contains programs for compressing and decompressing
- files. It is required to decompress many LFS packages.</para>
- </listitem>
- <listitem>
- <para>Check</para>
- <para>This package contains a test harness for other programs.</para>
- </listitem>
- <listitem>
- <para>Coreutils</para>
- <para>This package contains a number of essential programs for viewing
- and manipulating files and directories. These programs are needed for
- command line file management, and are necessary for the installation
- procedures of every package in LFS.</para>
- </listitem>
- <listitem revision="systemd">
- <para>D-Bus</para>
- <para>This package contains programs to implement a message bus system,
- which a simple way for applications to talk to one another.
- </para>
- </listitem>
- <listitem>
- <para>DejaGNU</para>
- <para>This package contains a framework for testing other programs.
- It is only installed in the temporary toolchain.</para>
- </listitem>
- <listitem>
- <para>Diffutils</para>
- <para>This package contains programs that show the differences
- between files or directories. These programs can be used to create
- patches, and are also used in many packages' build procedures.</para>
- </listitem>
- <listitem>
- <para>E2fsprogs</para>
- <para>This package contains the utilities for handling the ext2, ext3
- and ext4 file systems. These are the most common and thoroughly
- tested file systems that Linux supports.</para>
- </listitem>
- <listitem revision="sysv">
- <para>Eudev</para>
- <para>This package is a device manager. It dynamically controls the entries
- in the /dev directory as devices are added or removed from the system.
- </para>
- </listitem>
- <listitem>
- <para>Expat</para>
- <para>This package contains a relatively small XML parsing library. It
- is required by the XML::Parser Perl module.</para>
- </listitem>
- <listitem>
- <para>Expect</para>
- <para>This package contains a program for carrying out scripted
- dialogues with other interactive programs. It is commonly used
- for testing other packages. It is only installed in the temporary
- toolchain.</para>
- </listitem>
- <listitem>
- <para>File</para>
- <para>This package contains a utility for determining the type of a
- given file or files. A few packages need it to build.</para>
- </listitem>
- <listitem>
- <para>Findutils</para>
- <para>This package contains programs to find files in a file system.
- It is used in many packages' build scripts.</para>
- </listitem>
- <listitem>
- <para>Flex</para>
- <para>This package contains a utility for generating programs that
- recognize patterns in text. It is the GNU version of the lex
- (lexical analyzer) program. It is required to build several
- LFS packages.</para>
- </listitem>
- <listitem>
- <para>Gawk</para>
- <para>This package contains programs for manipulating text files.
- It is the GNU version of awk (Aho-Weinberg-Kernighan). It is used in
- many other packages' build scripts.</para>
- </listitem>
- <listitem>
- <para>Gcc</para>
- <para>This package is the Gnu Compiler Collection. It contains the
- C and C++ compilers as well as several others not built by LFS.
- </para>
- </listitem>
- <listitem>
- <para>GDBM</para>
- <para>This package contains the GNU Database Manager library. It
- is used by one other LFS package, Man-DB.</para>
- </listitem>
- <listitem>
- <para>Gettext</para>
- <para>This package contains utilities and libraries for
- internationalization and localization of numerous packages.</para>
- </listitem>
- <listitem>
- <para>Glibc</para>
- <para>This package contains the main C library. Linux programs would
- not run without it.</para>
- </listitem>
- <listitem>
- <para>GMP</para>
- <para>This package contains math libraries that provide useful functions
- for arbitrary precision arithmetic. It is required to build Gcc.</para>
- </listitem>
- <listitem>
- <para>Gperf</para>
- <para>This package contains a program that generates a perfect hash
- function from a key set. It is required for Eudev.</para>
- </listitem>
- <listitem>
- <para>Grep</para>
- <para>This package contains programs for searching through files. These
- programs are used by most packages' build scripts.</para>
- </listitem>
- <listitem>
- <para>Groff</para>
- <para>This package contains programs for processing and formatting text.
- One important function of these programs is to format man pages.</para>
- </listitem>
- <listitem>
- <para>GRUB</para>
- <para>This package is the Grand Unified Boot Loader. It is one
- of several boot loaders available, but is the most flexible.
- </para>
- </listitem>
- <listitem>
- <para>Gzip</para>
- <para>This package contains programs for compressing and
- decompressing files. It is needed to decompress many packages in LFS
- and beyond.</para>
- </listitem>
- <listitem>
- <para>Iana-etc</para>
- <para>This package provides data for network services and protocols.
- It is needed to enable proper networking capabilities.</para>
- </listitem>
- <listitem>
- <para>Inetutils</para>
- <para>This package contains programs for basic network
- administration.</para>
- </listitem>
- <listitem>
- <para>Intltool</para>
- <para>This package contains tools for extracting translatable
- strings from source files.</para>
- </listitem>
- <listitem>
- <para>IProute2</para>
- <para>This package contains programs for basic and advanced IPv4 and
- IPv6 networking. It was chosen over the other common network
- tools package (net-tools) for its IPv6 capabilities. </para>
- </listitem>
- <listitem>
- <para>Kbd</para>
- <para>This package contains key-table files, keyboard utilities
- for non-US keyboards, and a number of console fonts.</para>
- </listitem>
- <listitem>
- <para>Kmod</para>
- <para>This package contains programs needed to administer Linux
- kernel modules.</para>
- </listitem>
- <listitem>
- <para>Less</para>
- <para>This package contains a very nice text file viewer that
- allows scrolling up or down when viewing a file. It is also used by
- Man-DB for viewing manpages.</para>
- </listitem>
- <listitem>
- <para>Libcap</para>
- <para>This package implements the user-space interfaces to
- the POSIX 1003.1e capabilities available in Linux kernels.
- </para>
- </listitem>
- <listitem>
- <para>Libelf</para>
- <para>The elfutils project provides libraries and tools for ELF files
- and DWARF data. Most utilities in this package are available in
- other packages, but the library is needed to build the Linux
- kernel using the default (and most efficient) configuration.</para>
- </listitem>
- <listitem>
- <para>Libffi</para>
- <para>This package implements a portable, high level programming
- interface to various calling conventions. Some programs may not know
- at the time of compilation what arguments are to be passed to a
- function. For instance, an interpreter may be told at run-time about
- the number and types of arguments used to call a given function. Libffi
- can be used in such programs to provide a bridge from the interpreter
- program to compiled code.</para>
- </listitem>
- <listitem>
- <para>Libpipeline</para>
- <para>The Libpipeline package contains a library for manipulating
- pipelines of subprocesses in a flexible and convenient way. It is
- required by the Man-DB package.</para>
- </listitem>
- <listitem>
- <para>Libtool</para>
- <para>This package contains the GNU generic library support
- script. It wraps the complexity of using shared libraries in a
- consistent, portable interface. It is needed by the test
- suites in other LFS packages.</para>
- </listitem>
- <listitem>
- <para>Linux Kernel</para>
- <para>This package is the Operating System. It is the Linux in
- the GNU/Linux environment.</para>
- </listitem>
- <listitem>
- <para>M4</para>
- <para>This package contains a general text macro processor useful
- as a build tool for other programs.</para>
- </listitem>
- <listitem>
- <para>Make</para>
- <para>This package contains a program for directing the building
- of packages. It is required by almost every package in LFS.</para>
- </listitem>
- <listitem>
- <para>Man-DB</para>
- <para>This package contains programs for finding and viewing man pages.
- It was chosen instead of the <application>man</application> package
- due to superior internationalization capabilities. It supplies
- the man program.</para>
- </listitem>
- <listitem>
- <para>Man-pages</para>
- <para>This package contains the actual contents of the basic
- Linux man pages.</para>
- </listitem>
- <listitem>
- <para>Meson</para>
- <para>This package provides a software tool for automating the building
- of software. The main goal for Meson is to minimize the amount of time
- that software developers need to spend configuring their build
- system.</para>
- </listitem>
- <listitem>
- <para>MPC</para>
- <para>This package contains functions for the arithmetic of complex
- numbers. It is required by Gcc.</para>
- </listitem>
- <listitem>
- <para>MPFR</para>
- <para>This package contains functions for multiple precision
- arithmetic. It is required by Gcc.</para>
- </listitem>
- <listitem>
- <para>Ninja</para>
- <para>This package contains a small build system with a focus on speed.
- It is designed to have its input files generated by a higher-level build
- system, and to run builds as fast as possible.</para>
- </listitem>
- <listitem>
- <para>Ncurses</para>
- <para>This package contains libraries for terminal-independent
- handling of character screens. It is often used to provide
- cursor control for a menuing system. It is needed by a number of
- packages in LFS.</para>
- </listitem>
- <listitem>
- <para>Openssl</para>
- <para>This package provides management tools and libraries relating to
- cryptography. These are useful for providing cryptographic functions to
- other packages, including the Linux kernel.</para>
- </listitem>
- <listitem>
- <para>Patch</para>
- <para>This package contains a program for modifying or creating files by
- applying a <emphasis>patch</emphasis> file typically created
- by the <application>diff</application> program. It is needed by
- the build procedure for several LFS packages.</para>
- </listitem>
- <listitem>
- <para>Perl</para>
- <para>This package is an interpreter for the runtime language
- PERL. It is needed for the installation and test suites of several LFS
- packages.</para>
- </listitem>
- <listitem>
- <para>Pkg-config</para>
- <para>This package provides a program to return meta-data about an
- installed library or package.</para>
- </listitem>
- <listitem>
- <para>Procps-NG</para>
- <para>This package contains programs for monitoring processes. These
- programs are useful for system administration, and are also used by
- the LFS Bootscripts.</para>
- </listitem>
- <listitem>
- <para>Psmisc</para>
- <para>This package contains programs for displaying information
- about running processes. These programs are useful for system
- administration.</para>
- </listitem>
- <listitem>
- <para>Python 3</para>
- <para>This package provides an interpreted language that has a design
- philosophy that emphasizes code readability.</para>
- </listitem>
- <listitem>
- <para>Readline</para>
- <para>This package is a set of libraries that offers command-line
- editing and history capabilities. It is used by Bash.</para>
- </listitem>
- <listitem>
- <para>Sed</para>
- <para>This package allows editing of text without opening it in a
- text editor. It is also needed by most LFS packages' configure
- scripts.</para>
- </listitem>
- <listitem>
- <para>Shadow</para>
- <para>This package contains programs for handling passwords
- in a secure way.</para>
- </listitem>
- <listitem revision="sysv">
- <para>Sysklogd</para>
- <para>This package contains programs for logging system messages,
- such as those given by the kernel or daemon processes when unusual
- events occur.</para>
- </listitem>
- <listitem revision="systemd">
- <para>Systemd</para>
- <para>This package provides an <application>init</application> program
- and several additional boot and system control capabilities as an
- alternative to Sysvinit. It is used by many commercial distributions.
- </para>
- </listitem>
- <listitem revision="sysv">
- <para>Sysvinit</para>
- <para>This package provides the <application>init</application>
- program, which is the parent of all other processes on the Linux
- system. </para>
- </listitem>
- <listitem>
- <para>Tar</para>
- <para>This package provides archiving and extraction capabilities
- of virtually all packages used in LFS.</para>
- </listitem>
- <listitem>
- <para>Tcl</para>
- <para>This package contains the Tool Command Language used
- in many test suites in LFS packages. It is only installed in
- the temporary toolchain.</para>
- </listitem>
- <listitem>
- <para>Texinfo</para>
- <para>This package contains programs for reading, writing, and
- converting info pages. It is used in the installation
- procedures of many LFS packages.</para>
- </listitem>
- <listitem>
- <para>Util-linux</para>
- <para>This package contains miscellaneous utility programs.
- Among them are utilities for handling file systems, consoles,
- partitions, and messages.</para>
- </listitem>
- <listitem>
- <para>Vim</para>
- <para>This package contains an editor. It was chosen because of its
- compatibility with the classic vi editor and its huge number of powerful
- capabilities. An editor is a very personal choice for
- many users and any other editor could be substituted if desired.</para>
- </listitem>
- <listitem>
- <para>XML::Parser</para>
- <para>This package is a Perl module that interfaces with Expat.</para>
- </listitem>
- <listitem>
- <para>XZ Utils</para>
- <para>This package contains programs for compressing and decompressing
- files. It provides the highest compression generally available
- and is useful for decompressing packages in XZ or LZMA format.</para>
- </listitem>
- <listitem>
- <para>Zlib</para>
- <para>This package contains compression and decompression routines
- used by some programs.</para>
- </listitem>
- <listitem>
- <para>Zstd</para>
- <para>This package contains compression and decompression routines
- used by some programs. It provide high compression ratios and a very
- wide range of compression / speed trade-offs.</para>
- </listitem>
- </itemizedlist>
- </sect1>
|