安装 Bash-2.05a

估计编译时间:		1 SBU 
估计所需硬盘空间:     24 MB

Bash的安装

在你要安装Bash之前,你必须先确定你拥有/usr/lib/libcurses.a/usr/lib/libncurses.a两个文件。如果你的主系统是LFS系统,那么在安装正确的情况下,所有文件都会存在。

如果两个文件都没有,你就要安装Ncurses开发包。这个包通常被称为ncurses-devncurses-static 。如果已经安装了这个包,或你刚安装了它,那么再检查一下这两个文件。通常仍没有libcurses.a 。如果是这样,就创建一个libcurses.a的符号链接,以root身份运行下面这一个命令:

ln -s libncurses.a /usr/lib/libcurses.a

现在我们可以继续了。用下面的命令安装Bash:

./configure --enable-static-link \
    --prefix=$LFS/static --with-curses &&
make &&
make install

如果make install阶段以下面这样结束:

install-info: unknown option `--dir-file=/mnt/lfs/usr/info/dir' 
usage: install-info [--version] [--help] [--debug] [--maxwidth=nnn] 
	[--section regexp title] [--infodir=xxx] [--align=nnn] 
	[--calign=nnn] [--quiet] [--menuentry=xxx]
	[--info-dir=xxx] 
	[--keep-old] [--description=xxx] [--test]
	[--remove] [--] filename 
make[1]: *** [install] Error 1 
make[1]: Leaving directory `/mnt/lfs/usr/src/bash-2.05a/doc' 
make: [install] Error 2 (ignored)

这意味着你可能正在使用Debian-2.2 (potato), 并且你的texinfo包版本太老了。这个错误无关大局,我们在第六章中动态编译bash的时候会把info页安装上去,所以你可以放心地忽略它。据反馈,在当前版本的Debian (3.0;又叫 Woody)中没有这样的错误。

命令解释

--enable-static-link: 这个配置命令使bash被静态链接。

--prefix=$LFS/static:这个配置命令把Bash的所有文件安装到$LFS/static目录下,这个目录在chroot环境下或在最终的LFS系统中将成为 /static 目录。

--with-curses: 这使bash链接到 curses库而不是缺省的 termcap 库,那个库已经废弃了(obsolete)。

其实静态链接的bash并不一定要链接到libncurses (也可以暂时链接到静态的termcap ,因为我们在第六章中要重新安装bash,那个时候链接到libncurses就行了),不过这样可以测试Ncurses包是否正确安装了。如果没有,在本章稍后安装Texinfo包时就会有问题。它要求用ncurses,并且termcap不能可靠地用在那里。

每行最后的&&用处很大,它使后一个命令仅在前一个命令返回值为0(表示正确执行)的情况下才执行。在所有的命令都是拷贝 &粘贴的情况下,我们必须保证如果./configure出错,make就不执行,同样地,如果 make 出错,make install就不执行,诸如此类。

Bash的内容

最后检查于 version 2.05a.

包含的程序

bash, sh (link to bash) and bashbug

具体说明

bash

Bash是Bourne-Again Shell的缩写,它在UNIX系统中作为命令行解释器被广泛使用。 Bash是一个从标准输入--键盘--中读取命令的程序。用户敲击一个命令,这个程序读取这些命令并且根据命令进行相应的操作(比如运行一个程序)。

bashbug

bashbug is 帮助用户编写用标准格式和提交有关bash的bug报告的脚本

sh

sh是一个到bash的链接. 当运行sh的时候, bash会试图模拟成最近的sh历史环境来起动, 同时确定使用POSIX标准.

安装Bash依赖于

最后检查于 version 2.05a.

Bash: bash, sh
Binutils: ar, as, ld, ranlib, size
Diffutils: cmp
Fileutils: chmod, cp, install, ln, ls, mkdir, mv, rm
Gcc: cc, cc1, collect2, cpp0, gcc
Grep: egrep, grep
Make: make
Gawk: awk
Sed: sed
Sh-utils: basename, echo, expr, hostname, sleep, uname
Texinfo: install-info
Textutils: cat, tr, uniq