LFS が目指すのは、完成した形での実用可能な基盤システムを構築することです。 LFS に含まれるパッケージ群は、パッケージの個々を構築していくために必要となるものばかりです。 そこからは最小限の基盤となるシステムを作り出します。 そしてユーザーの望みに応じて、より完璧なシステムへと拡張していくものとなります。 LFS は極小システムを意味するわけではありません。 厳密には必要のないパッケージであっても、重要なものとして含んでいるものもあります。 以下に示す一覧は、本書内の各パッケージの採用根拠について説明するものです。
Acl
このパッケージはアクセス制御リスト (Access Control Lists) を管理するツールを提供します。 これはファイルやディレクトリに対して、きめ細かくさまざまなアクセス権限を定義するために利用されます。
Attr
このパッケージはファイルシステムオブジェクト上の拡張属性を管理するプログラムを提供します。
Autoconf
このパッケージは、以下に示すようなシェルスクリプトを生成するプログラムを提供します。 つまり開発者が意図しているテンプレートに基づいて、ソースコードを自動的に設定する (configure する) ためのシェルスクリプトです。 特定のパッケージのビルド方法に変更があった場合は、パッケージ再構築を行うことになるため、その場合に本パッケージが必要となります。
Automake
このパッケージは、テンプレートとなるファイルから Makefile を生成するためのプログラムを提供します。 特定のパッケージのビルド方法に変更があった場合は、パッケージ再構築を行うことになるため、その場合に本パッケージが必要となります。
Bash
このパッケージは、システムとのインターフェースを実現する Bourne シェルを提供し、LSB コア要件を満たします。 他のシェルを選ばずにこれを選ぶのは、一般的に多用されていて拡張性が高いからです。
Bc
このパッケージは、任意精度 (arbitrary precision) の演算処理言語を提供します。 Linux カーネルの構築に必要となります。
Binutils
このパッケージは、リンカー、アセンブラーのような、オブジェクトファイルを取り扱うプログラムを提供します。 各プログラムは LFS における他のパッケージをコンパイルするために必要となります。
Bison
このパッケージは yacc (Yet Another Compiler Compiler) の GNU バージョンを提供します。 LFS プログラムをビルドする際に、これを必要とするものがあります。
Bzip2
このパッケージは、ファイルの圧縮、伸張 (解凍) を行うプログラムを提供します。 これは LFS パッケージの多くを伸張 (解凍) するために必要です。
Check
このパッケージは、他のプログラムに対するテストハーネス (test harness) を提供します。
Coreutils
このパッケージは、ファイルやディレクトリを参照あるいは操作するための基本的なプログラムを数多く提供します。 各プログラムはコマンドラインからの実行によりファイル制御を行うために必要です。 また LFS におけるパッケージのインストールに必要となります。
DejaGNU
このパッケージは、他のプログラムをテストするフレームワークを提供します。
Diffutils
このパッケージは、ファイルやディレクトリ間の差異を表示するプログラムを提供します。 各プログラムはパッチを生成するために利用されます。 したがってパッケージのビルド時に利用されることが多々あります。
E2fsprogs
このパッケージは ext2, ext3, ext4 の各ファイルシステムを取り扱うユーティリティを提供します。 各ファイルシステムは Linux がサポートする一般的なものであり、十分なテストが実施されているものです。
Expat
このパッケージは比較的小規模の XML 解析ライブラリを生成します。 XML-Parser Perl モジュールがこれを必要とします。
Expect
このパッケージは、スクリプトで作られた対話型プログラムを通じて、他のプログラムとのやりとりを行うプログラムを提供します。 通常は他のパッケージをテストするために利用します。
File
このパッケージは、指定されたファイルの種類を判別するユーティリティプログラムを提供します。 他のパッケージのビルドスクリプト内にてこれを必要とするものもあります。
Findutils
このパッケージは、ファイルシステム上のファイルを検索するプログラムを提供します。 これは他のパッケージにて、ビルド時のスクリプトにおいて利用されています。
Flex
このパッケージは、テキスト内の特定パターンの認識プログラムを生成するユーティリティを提供します。 これは lex (字句解析; lexical analyzer) プログラムの GNU 版です。 LFS 内の他のパッケージの中にこれを必要としているものがあります。
Gawk
このパッケージはテキストファイルを操作するプログラムを提供します。 プログラムは GNU 版の awk (Aho-Weinberg-Kernighan) です。 これは他のパッケージにて、ビルド時のスクリプトにおいて利用されています。
GCC
これは GNU コンパイラーコレクションパッケージです。 C コンパイラーと C++ コンパイラーを含みます。また LFS ではビルドしないコンパイラーも含まれています。
GDBM
このパッケージは GNU データベースマネージャーライブラリを提供します。 LFS が扱う Man-DB パッケージがこれを利用しています。
Gettext
このパッケージは、各種パッケージが国際化を行うために利用するユーティリティやライブラリを提供します。
Glibc
このパッケージは C ライブラリです。Linux 上のプログラムはこれがなければ動作させることができません。
GMP
このパッケージは数値演算ライブラリを提供するもので、任意精度演算 (arbitrary precision arithmetic) についての有用な関数を含みます。 これは GCC をビルドするために必要です。
Gperf
このパッケージは、キーセットから完全なハッシュ関数を生成するプログラムを提供します。 Udev がこれを必要としています。
Grep
このパッケージはファイル内を検索するプログラムを提供します。 これは他のパッケージにて、ビルド時のスクリプトにおいて利用されています。
Groff
このパッケージは、テキストを処理し整形するプログラムをいくつか提供します。 重要なものプログラムとして man ページを生成するものを含みます。
GRUB
これは Grand Unified Boot Loader です。 ブートローダーとして利用可能なものの中でも、これが最も柔軟性に富むものです。
Gzip
このパッケージは、ファイルの圧縮と伸張 (解凍) を行うプログラムを提供します。 LFS において、パッケージを伸張 (解凍) するために必要です。
Iana-etc
このパッケージは、ネットワークサービスやプロトコルに関するデータを提供します。 ネットワーク機能を適切に有効なものとするために、これが必要です。
Inetutils
このパッケージは、ネットワーク管理を行う基本的なプログラム類を提供します。
Intltool
本パッケージはソースファイルから翻訳対象となる文字列を抽出するツールを提供します。
IProute2
このパッケージは、IPv4、IPv6 による基本的な、あるいは拡張したネットワーク制御を行うプログラムを提供します。 IPv6 への対応があることから、よく使われてきたネットワークツールパッケージ (net-tools) に変わって採用されました。
Kbd
このパッケージは、米国以外のキーボードに対してのキーテーブルファイルやキーボードユーティリティを生成します。 また端末上のフォントも提供します。
Kmod
このパッケージは Linux カーネルモジュールを管理するために必要なプログラムを提供します。
Less
このパッケージはテキストファイルを表示する機能を提供するものであり、表示中にスクロールを可能とします。 多くのパッケージでは、ページング出力を行うためにこれを利用しています。
Libcap
このパッケージは Linux カーネルにて利用される POSIX 1003.1e 機能へのユーザー空間からのインターフェースを実装します。
Libelf
elfutils プロジェクトでは、ELF ファイルや DWARF データに対するライブラリやツールを提供しています。 他のパッケージに対して各種ユーティリティーは有用なものですが、ライブラリは Linux カーネルのビルドに必要であり、デフォルトの(最も効果的な)カーネル設定にて利用されます。
Libffi
このパッケージは、さまざまな呼出規約(calling conventions)に対しての、移植性に優れた高レベルプログラミングインターフェースを提供します。 プログラムをコンパイルするその時点においては、関数に対してどのような引数が与えられるかが分からない場合があります。 例えばインタープリターの場合、特定の関数を呼び出す際の引数の数や型は、実行時に指定されます。 libffi はそういうプログラムであっても、インタープリタープログラムからコンパイルコードへのブリッジを提供します。
Libpipeline
Libpipeline パッケージは、サブプロセスのパイプラインを柔軟にかつ容易に操作するライブラリを提供します。 これは Man-DB パッケージが必要としています。
Libtool
このパッケージは GNU の汎用的なライブラリに対してのサポートスクリプトを提供します。 これは、複雑な共有ライブラリの取り扱いを単純なものとし、移植性に優れた一貫した方法を提供します。 LFS パッケージのテストスイートにおいて必要となります。
Libxcrypt
このパッケージは libcrypt
ライブラリを提供するものであり、さまざまなパッケージ(代表的なものとして
Shadow)がパスワードのハッシュ処理のために必要としています。 これは Glibc における、かつての
libcrypt
実装を置き換えるものです。
Linux Kernel
このパッケージは "オペレーティングシステム" であり GNU/Linux 環境における Linux です。
M4
このパッケージは汎用的なテキストマクロプロセッサーを提供するものであり、他のプログラムを構築するツールとして利用することができます。
Make
このパッケージは、パッケージ構築を指示するプログラムを提供します。 LFS におけるパッケージでは、ほぼすべてにおいて必要となります。
Man-DB
このパッケージは man ページを検索し表示するプログラムを提供します。 man パッケージではなく本パッケージを採用しているのは、その方が国際化機能が優れているためです。 このパッケージは man プログラムを提供しています。
Man-pages
このパッケージは Linux の基本的な man ページを提供します。
Meson
このパッケージは、ソフトウェアを自動的にビルドするソフトウエアツールを提供します。 Meson が目指すのは、ソフトウェア開発者がビルドシステムの設定にかける時間を、できるだけ減らすことにあります。 これは Systemd のビルドに必要であり、また BLFS における多くのパッケージにも必要です。
MPC
このパッケージは複素数演算のための関数を提供します。 GCC パッケージがこれを必要としています。
MPFR
このパッケージは倍精度演算 (multiple precision) の関数を提供します。 GCC パッケージがこれを必要としています。
Ninja
このパッケージは、処理速度を重視した軽量なビルドシステムを提供します。 高レベルなビルドシステムが生成したファイルを入力として、ビルド実行をできるだけ高速に行うように設計されています。 このパッケージは Meson が必要としています。
Ncurses
このパッケージは、端末に依存せず文字キャラクターを取り扱うライブラリを提供します。 メニュー表示時のカーソル制御を実現する際に利用されます。 LFS の他のパッケージでは、たいていはこれを必要としています。
Openssl
このパッケージは暗号化に関する管理ツールやライブラリを提供します。 Linux カーネルや他のパッケージに対して、暗号化機能を提供するものとして有用です。
Patch
このパッケージは、パッチ ファイルの適用により、特定のファイルを修正したり新規生成したりするためのプログラムを提供します。 パッチファイルは diff プログラムにより生成されます。 LFS パッケージの中には、構築時にこれを必要とするものがあります。
Perl
このパッケージは、ランタイムに利用されるインタープリター言語 PERL を提供します。 LFS の他のパッケージでは、インストール時やテストスイートの実行時にこれを必要とするものがあります。
Pkgconf
このパッケージは、開発用ライブラリに対するコンパイラーフラグやリンカーフラグを設定するためのプログラムを提供します。 このプログラムは、pkg-config の単純な置き換えプログラムとして利用することができます。 そもそもこのプログラムは、数多くのパッケージによるシステム構築に必要となるものです。 元々の Pkg-config パッケージに比べて活発に開発されており、処理速度も若干早くなっています。
Procps-NG
このパッケージは、プロセスの監視を行うプログラムを提供します。 システム管理にはこのパッケージが必要となります。 また LFS ブートスクリプトではこれを利用しています。
Psmisc
このパッケージは、実行中のプロセスに関する情報を表示するプログラムを提供します。 システム管理にはこのパッケージが必要となります。
Python 3
このパッケージは、ソースコードの可読性の向上を意図して開発されたインタープリター言語を提供します。
Readline
このパッケージは、コマンドライン上での入力編集や履歴管理を行うライブラリを提供します。 これは Bash が利用しています。
Sed
このパッケージは、テキストの編集を、テキストエディターを用いることなく可能とします。 LFS パッケージにおける configure スクリプトは、多くのパッケージがこれを必要としています。
Shadow
このパッケージは、セキュアな手法によりパスワード制御を行うプログラムを提供します。
Sysklogd
このパッケージは、システムメッセージログを扱うプログラムを提供します。 例えばカーネルが出力するログや、デーモンプロセスが異常発生時に出力するログなどです。
Sysvinit
このパッケージは init プログラムを提供します。 これは Linux システム上のすべてのプロセスの基点となるものです。
Udev
このパッケージはデバイスマネージャーです。 /dev ディレクトリに登録されたデバイスノードの所有者、パーミッション、名称、シンボリックリンクを動的に制御します。 これによりデバイスは、システムへの追加または削除が行われます。
Tar
このパッケージは、アーカイブや圧縮機能を提供するもので LFS が扱うすべてのパッケージにて利用されています。
Tcl
このパッケージはツールコマンド言語 (Tool Command Language) を提供します。 テストスイートの実行に必要となります。
Texinfo
このパッケージは Info ページに関しての入出力や変換を行うプログラムを提供します。 LFS が扱うパッケージのインストール時には、たいてい利用されます。
Util-linux
このパッケージは数多くのユーティリティプログラムを提供します。 その中には、ファイルシステムやコンソール、パーティション、メッセージなどを取り扱うユーティリティがあります。
Vim
このパッケージはテキストエディターを提供します。 これを採用しているのは、従来の vi エディタとの互換性があり、しかも数々の有用な機能を提供するものだからです。 テキストエディターは個人により好みはさまざまですから、もし別のエディターを利用したいなら、そちらを用いても構いません。
Wheel
このパッケージは Python wheel パッケージング標準に基づいた標準実装の Python モジュールを提供します。
XML::Parser
このパッケージは Expat とのインターフェースを実現する Perl モジュールです。
XZ Utils
このパッケージはファイルの圧縮、伸張 (解凍) を行うプログラムを提供します。 一般的に用いられるものの中では高い圧縮率を実現するものであり、特に XZ フォーマットや LZMA フォーマットの伸張 (解凍) に利用されます。
Zlib
このパッケージは、圧縮や解凍の機能を提供するもので、他のプログラムがこれを利用しています。
Zstd
このパッケージは、一定のプログラムが利用している圧縮、伸張(解凍)ルーチンを提供します。 高圧縮率に加えて、圧縮、処理速度間のトレードオフを広範囲に提供します。