C. 依赖关系

LFS 中构建或安装的每一个包或多或少都会依赖于其它的包,甚至有些包甚至是循环依赖关系:第一个包依赖于第二个包,反过来,第二个包的生成或者是安装又需要第 一个包。因为存在这些依赖关系,所以在构建 LFS 系统的时候,软件包的编译或安装的顺序是十分重要的。本章的目的就是告知用户在构建 LFS 时每一个包的依赖项。

对于所有需要编译的软件包,我们列举出三种或者四种类型的依赖。第一种类型是「安装必选依赖」,否则在编译和安装的时候会出现问题。第二类是「测试套件依赖」,假如运行一些测试套件,除了第一类的必须安装外,第二类也需要安装。第三类是「必须之前安装」,此类需要在编译和安装之前就安装。在大多数情况下,是因为它们软件包中的脚本包含有到二进制文件的硬编码。如果不按照顺序编译它们,将会导致 /tools/bin/"binary" 路径变为真实路径写入脚本,然后安装到最终系统中去,这显然是不合适的。(译者注:这句话写的不是太清楚,大概解释一下:在真实系统中,可能会在某些脚本 中出现这样的路径信息:/usr/bin/vi,但是假如因为安装顺序的问题,这个路径就有可能变成 /tools/usr/bin/vi,最终导致脚本不能正常的运行,这显然是错误的。)

最后一类提及的「可供选择依赖」,安装方法在此文档类并没有提及,但是这些程序往往对用户来说又都是极其有用。这些软件包可能又有属于自己的「安装必选依赖」或者是「可用选择依赖」。对于这些依赖关系,推荐的做法是在学习完本书之后回到重建 LFS 包。在大多数情况下,重新安装的问题都记录在 BLFS 中。

Acl

安装必选依赖: Attr, Bash, Binutils, Coreutils, GCC, Gettext, Grep, M4, Make, Perl, Sed, 和 Texinfo
测试套件依赖: Automake, Diffutils, Findutils, 和 Libtool
必须预先安装: Coreutils, Sed, Tar, 和 Vim
可供选择依赖: None

Attr

安装必选依赖: Bash, Binutils, Coreutils, GCC, Gettext, Grep, M4, Make, Perl, Sed, 和 Texinfo
测试套件依赖: Automake, Diffutils, Findutils, 和 Libtool
必须预先安装: Acl 和 Libcap
可供选择依赖: None

Autoconf

安装必选依赖: Bash, Coreutils, Grep, M4, Make, Perl, Sed, 和 Texinfo
测试套件依赖: Automake, Diffutils, Findutils, GCC, 和 Libtool
必须预先安装: Automake
可供选择依赖: Emacs

Automake

安装必选依赖: Autoconf, Bash, Coreutils, Gettext, Grep, M4, Make, Perl, Sed, 和 Texinfo
测试套件依赖: Binutils, Bison, Bzip2, DejaGNU, Diffutils, Expect, Findutils, Flex, GCC, Gettext, Gzip, Libtool, 和 Tar
必须预先安装: None
可供选择依赖: None

Bash

安装必选依赖: Bash, Binutils, Bison, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make, Ncurses, Patch, Readline, Sed, 和 Texinfo
测试套件依赖: Shadow
必须预先安装: None
可供选择依赖: Xorg

Bc

安装必选依赖: Bash, Binutils, Bison, Coreutils, GCC, Glibc, Grep, Make, Perl, 和 Readline
测试套件依赖: Gawk
必须预先安装: Linux Kernel
可供选择依赖: None

Binutils

安装必选依赖: Bash, Binutils, Coreutils, Diffutils, File, Gawk, GCC, Glibc, Grep, Make, Perl, Sed, Texinfo 和 Zlib
测试套件依赖: DejaGNU 和 Expect
必须预先安装: None
可供选择依赖: None

Bison

安装必选依赖: Bash, Binutils, Coreutils, GCC, Gettext, Glibc, Grep, M4, Make, Perl, 和 Sed
测试套件依赖: Diffutils, Findutils, 和 Flex
必须预先安装: Kbd 和 Tar
可供选择依赖: Doxygen (test suite)

Bzip2

安装必选依赖: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Make, 和 Patch
测试套件依赖: None
必须预先安装: None
可供选择依赖: None

Check

安装必选依赖: GCC, Grep, Make, Sed, 和 Texinfo
测试套件依赖: None
必须预先安装: None
可供选择依赖: None

Coreutils

安装必选依赖: Bash, Binutils, Coreutils, GCC, Gettext, Glibc, GMP, Grep, Make, Patch, Perl, Sed, 和 Texinfo
测试套件依赖: Diffutils, E2fsprogs, Findutils, Shadow, 和 Util-linux
必须预先安装: Bash, Diffutils, Eudev, Findutils, 和 Man-DB
可供选择依赖: Perl Expect 和 IO:Tty modules (for test suite)

DejaGNU

安装必选依赖: Bash, Coreutils, Diffutils, GCC, Grep, Make, 和 Sed
测试套件依赖: None
必须预先安装: None
可供选择依赖: None

Diffutils

安装必选依赖: Bash, Binutils, Coreutils, Gawk, GCC, Gettext, Glibc, Grep, Make, Sed, 和 Texinfo
测试套件依赖: Perl
必须预先安装: None
可供选择依赖: None

E2fsprogs

安装必选依赖: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Gzip, Make, Sed, Texinfo, 和 Util-linux
测试套件依赖: Procps-ng 和 Psmisc
必须预先安装: None
可供选择依赖: None

Eudev

安装必选依赖: Bash, Binutils, Coreutils, Gawk, GCC, Glibc, Grep, Gperf, Make, 和 Sed
测试套件依赖: None
必须预先安装: None
可供选择依赖: None

Expat

安装必选依赖: Bash, Binutils, Coreutils, Gawk, GCC, Glibc, Grep, Make, 和 Sed
测试套件依赖: None
必须预先安装: XML::Parser
可供选择依赖: None

Expect

安装必选依赖: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Patch, Sed, 和 Tcl
测试套件依赖: None
必须预先安装: None
可供选择依赖: None

File

安装必选依赖: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make, Sed, 和 Zlib
测试套件依赖: None
必须预先安装: None
可供选择依赖: None

Findutils

安装必选依赖: Bash, Binutils, Coreutils, GCC, Gettext, Glibc, Grep, Make, Sed, 和 Texinfo
测试套件依赖: DejaGNU, Diffutils, 和 Expect
必须预先安装: None
可供选择依赖: None

Flex

安装必选依赖: Bash, Binutils, Coreutils, GCC, Gettext, Glibc, Grep, M4, Make, Patch, Sed, 和 Texinfo
测试套件依赖: Bison 和 Gawk
必须预先安装: IPRoute2, Kbd, 和 Man-DB
可供选择依赖: None

Gawk

安装必选依赖: Bash, Binutils, Coreutils, GCC, Gettext, Glibc, GMP, Grep, Make, MPFR, Patch, Readline, Sed, 和 Texinfo
测试套件依赖: Diffutils
必须预先安装: None
可供选择依赖: None

Gcc

安装必选依赖: Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, GCC, Gettext, Glibc, GMP, Grep, M4, Make, MPC, MPFR, Patch, Perl, Sed, Tar, 和 Texinfo
测试套件依赖: DejaGNU, Expect, 和 Shadow
必须预先安装: None
可供选择依赖: GNAT and ISL

GDBM

安装必选依赖: Bash, Binutils, Coreutils, Diffutils, GCC, Grep, Make, 和 Sed
测试套件依赖: None
必须预先安装: None
可供选择依赖: None

Gettext

安装必选依赖: Bash, Binutils, Coreutils, Gawk, GCC, Glibc, Grep, Make, Sed, 和 Texinfo
测试套件依赖: Diffutils, Perl, 和 Tcl
必须预先安装: Automake
可供选择依赖: None

Glibc

安装必选依赖: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Gzip, Linux API Headers, Make, Perl, Sed, 和 Texinfo
测试套件依赖: File
必须预先安装: None
可供选择依赖: None

GMP

安装必选依赖: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, M4, Make, Sed, 和 Texinfo
测试套件依赖: None
必须预先安装: MPFR 和 GCC
可供选择依赖: None

Gperf

安装必选依赖: Bash, Binutils, Coreutils, GCC, Glibc, 和 Make
测试套件依赖: Diffutils 和 Expect
必须预先安装: None
可供选择依赖: None

Grep

安装必选依赖: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Patch, Sed, 和 Texinfo
测试套件依赖: Gawk
必须预先安装: Man-DB
可供选择依赖: Pcre

Groff

安装必选依赖: Bash, Binutils, Bison, Coreutils, Gawk, GCC, Glibc, Grep, Make, Patch, Sed, 和 Texinfo
测试套件依赖: No test suite available
必须预先安装: Man-DB 和 Perl
可供选择依赖: GPL Ghostscript

GRUB

安装必选依赖: Bash, Binutils, Bison, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Ncurses, Sed, Texinfo, 和 Xz
测试套件依赖: None
必须预先安装: None
可供选择依赖: None

Gzip

安装必选依赖: Bash, Binutils, Coreutils, GCC, Glibc, Grep, Make, Sed, 和 Texinfo
测试套件依赖: Diffutils 和 Less
必须预先安装: Man-DB
可供选择依赖: None

Iana-Etc

安装必选依赖: Coreutils, Gawk, 和 Make
测试套件依赖: No test suite available
必须预先安装: Perl
可供选择依赖: None

Inetutils

安装必选依赖: Bash, Binutils, Coreutils, GCC, Glibc, Grep, Make, Ncurses, Patch, Sed, Texinfo, 和 Zlib
测试套件依赖: No test suite available
必须预先安装: Tar
可供选择依赖: None

Intltool

安装必选依赖: Bash, Gawk, Glibc, Make, Perl, Sed, 和 XML::Parser
测试套件依赖: Perl
必须预先安装: None
可供选择依赖: None

IProute2

安装必选依赖: Bash, Bison, Coreutils, Flex, GCC, Glibc, Make, 和 Linux API Headers
测试套件依赖: No test suite available
必须预先安装: None
可供选择依赖: None

Kbd

安装必选依赖: Bash, Binutils, Bison, Check, Coreutils, Flex, GCC, Gettext, Glibc, Gzip, Make, Patch, 和 Sed
测试套件依赖: No test suite available
必须预先安装: None
可供选择依赖: None

Kmod

安装必选依赖: Bash, Binutils, Bison, Coreutils, Flex, GCC, Gettext, Glibc, Gzip, Make, Pkg-config, Sed, Xz-Utils, 和 Zlib
测试套件依赖: No test suite available
必须预先安装: Eudev
可供选择依赖: None

Less

安装必选依赖: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Ncurses, 和 Sed
测试套件依赖: No test suite available
必须预先安装: Gzip
可供选择依赖: Pcre

Libcap

安装必选依赖: Attr, Bash, Binutils, Coreutils, GCC, Glibc, Perl, Make, 和 Sed
测试套件依赖: No test suite available
必须预先安装: None
可供选择依赖: Linux-PAM

Libelf

安装必选依赖: Bash, Binutils, Coreutils, GCC, Glibc, 和 Make
测试套件依赖: No test suite available
必须预先安装: Linux Kernel
可供选择依赖: None

Libffi

安装必选依赖: Bash, Binutils, Coreutils, GCC, Glibc, Make, 和 Sed
测试套件依赖: DejaGnu
必须预先安装: Python
可供选择依赖: None

Libpipeline

安装必选依赖: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make, Sed, 和 Texinfo
测试套件依赖: Check
必须预先安装: Man-DB
可供选择依赖: None

Libtool

安装必选依赖: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make, Sed, 和 Texinfo
测试套件依赖: Autoconf, Automake, 和 Findutils
必须预先安装: None
可供选择依赖: None

Linux Kernel

安装必选依赖: Bash, Bc, Binutils, Coreutils, Diffutils, Findutils, GCC, Glibc, Grep, Gzip, Kmod, Libelf, Make, Ncurses, OpenSSL, Perl, 和 Sed
测试套件依赖: No test suite available
必须预先安装: None
可供选择依赖: None

M4

安装必选依赖: Bash, Binutils, Coreutils, GCC, Glibc, Grep, Make, Sed, and Texinfo
测试套件依赖: Diffutils
必须预先安装: Autoconf 和 Bison
可供选择依赖: libsigsegv

Make

安装必选依赖: Bash, Binutils, Coreutils, GCC, Gettext, Glibc, Grep, Make, Sed, 和 Texinfo
测试套件依赖: Perl 和 Procps-ng
必须预先安装: None
可供选择依赖: None

Man-DB

安装必选依赖: Bash, Binutils, Bzip2, Coreutils, Flex, GCC, GDBM, Gettext, Glibc, Grep, Groff, Gzip, Less, Libpipeline, Make, Sed, 和 Xz
测试套件依赖: Util-linux
必须预先安装: None
可供选择依赖: None

Man-Pages

安装必选依赖: Bash, Coreutils, 和 Make
测试套件依赖: No test suite available
必须预先安装: None
可供选择依赖: None

Meson

安装必选依赖: Ninja 和 Python
测试套件依赖: No test suite available
必须预先安装: Systemd
可供选择依赖: None

MPC

安装必选依赖: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, GMP, Make, MPFR, Sed, 和 Texinfo
测试套件依赖: None
必须预先安装: GCC
可供选择依赖: None

MPFR

安装必选依赖: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, GMP, Make, Sed, 和 Texinfo
测试套件依赖: None
必须预先安装: Gawk 和 GCC
可供选择依赖: None

Ncurses

安装必选依赖: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make, Patch, 和 Sed
测试套件依赖: No test suite available
必须预先安装: Bash, GRUB, Inetutils, Less, Procps-ng, Psmisc, Readline, Texinfo, Util-linux, 和 Vim
可供选择依赖: None

Ninja

安装必选依赖: Binutils, Coreutils, Gcc, 和 Python
测试套件依赖: None
必须预先安装: Meson
可供选择依赖: Asciidoc, Doxygen, Emacs, 和 re2c

Openssl

安装必选依赖: Binutils, Coreutils, Gcc, Make, 和 Perl
测试套件依赖: None
必须预先安装: Linux
可供选择依赖: None

Patch

安装必选依赖: Bash, Binutils, Coreutils, GCC, Glibc, Grep, Make, 和 Sed
测试套件依赖: Diffutils
必须预先安装: None
可供选择依赖: Ed

Perl

安装必选依赖: Bash, Binutils, Coreutils, Gawk, GCC, GDBM, Glibc, Grep, Groff, Make, Sed, 和 Zlib
测试套件依赖: Iana-Etc 和 Procps-ng
必须预先安装: Autoconf
可供选择依赖: None

Pkg-config

安装必选依赖: Bash, Binutils, Coreutils, Gawk, GCC, Glibc, Grep, Make, Popt, 和 Sed
测试套件依赖: None
必须预先安装: Kmod
可供选择依赖: None

Popt

安装必选依赖: Bash, Binutils, Coreutils, Gawk, GCC, Glibc, Grep, 和 Make
测试套件依赖: Diffutils 和 Sed
必须预先安装: Pkg-config
可供选择依赖: None

Procps-ng

安装必选依赖: Bash, Binutils, Coreutils, GCC, Glibc, Make, 和 Ncurses
测试套件依赖: DejaGNU
必须预先安装: None
可供选择依赖: None

Psmisc

安装必选依赖: Bash, Binutils, Coreutils, GCC, Gettext, Glibc, Grep, Make, Ncurses, 和 Sed
测试套件依赖: No test suite available
必须预先安装: None
可供选择依赖: None

Python

安装必选依赖: Bash, Binutils, Coreutils, GCC, Gdbm, Gettext, Glibc, Grep, Libffi, Make, Ncurses, 和 Sed
测试套件依赖: GDB 和 Valgrind
必须预先安装: Ninja
可供选择依赖: Berkeley DB, OpenSSL, SQLite, 和 Tk

Readline

安装必选依赖: Bash, Binutils, Coreutils, Gawk, GCC, Glibc, Grep, Make, Ncurses, Patch, Sed, 和 Texinfo
测试套件依赖: No test suite available
必须预先安装: Bash 和 Gawk
可供选择依赖: None

Sed

安装必选依赖: Bash, Binutils, Coreutils, GCC, Gettext, Glibc, Grep, Make, Sed, 和 Texinfo
测试套件依赖: Diffutils 和 Gawk
必须预先安装: E2fsprogs, File, Libtool, 和 Shadow
可供选择依赖: None

Shadow

安装必选依赖: Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, GCC, Gettext, Glibc, Grep, Make, 和 Sed
测试套件依赖: No test suite available
必须预先安装: Coreutils
可供选择依赖: Acl, Attr, Cracklib, 和 PAM

Sysklogd

安装必选依赖: Binutils, Coreutils, GCC, Glibc, Make, 和 Patch
测试套件依赖: No test suite available
必须预先安装: None
可供选择依赖: None

systemd

安装必选依赖: Acl, Attr, Bash, Binutils, Coreutils, Diffutils, Expat, Gawk, GCC, Glibc, Gperf, Grep, Intltool, Libcap, Meson, Sed, 和 Util-linux
测试套件依赖: None
必须预先安装: None
可供选择依赖: 有很多, 参考 BLFS systemd 相关页面

Sysvinit

安装必选依赖: Binutils, Coreutils, GCC, Glibc, Make, 和 Sed
测试套件依赖: No test suite available
必须预先安装: None
可供选择依赖: None

Tar

安装必选依赖: Acl, Attr, Bash, Binutils, Bison, Coreutils, GCC, Gettext, Glibc, Grep, Inetutils, Make, Sed, 和 Texinfo
测试套件依赖: Autoconf, Diffutils, Findutils, Gawk, 和 Gzip
必须预先安装: None
可供选择依赖: None

Tcl

安装必选依赖: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, 和 Sed
测试套件依赖: None
必须预先安装: None
可供选择依赖: None

Texinfo

安装必选依赖: Bash, Binutils, Coreutils, GCC, Gettext, Glibc, Grep, Make, Ncurses, Patch, 和 Sed
测试套件依赖: None
必须预先安装: None
可供选择依赖: None

Util-linux

安装必选依赖: Bash, Binutils, Coreutils, Diffutils, Eudev, Findutils, Gawk, GCC, Gettext, Glibc, Grep, Make, Ncurses, Sed, 和 Zlib
测试套件依赖: None
必须预先安装: None
可供选择依赖: Libcap-ng

Vim

安装必选依赖: Acl, Attr, Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Ncurses, 和 Sed
测试套件依赖: None
必须预先安装: None
可供选择依赖: Xorg, GTK+2, LessTif, Python, Tcl, Ruby, 和 GPM

XML::Parser

安装必选依赖: Bash, Binutils, Coreutils, Expat, GCC, Glibc, Make, 和 Perl
测试套件依赖: Perl
必须预先安装: Intltool
可供选择依赖: None

Xz

安装必选依赖: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, 和 Make
测试套件依赖: None
必须预先安装: Eudev, GRUB, Kmod, 和 Man-DB
可供选择依赖: None

Zlib

安装必选依赖: Bash, Binutils, Coreutils, GCC, Glibc, Make, 和 Sed
测试套件依赖: None
必须预先安装: File, Kmod, Perl, 和 Util-linux
可供选择依赖: None