文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>15.构建LFS系统──安装系统基础软件(七)

15.构建LFS系统──安装系统基础软件(七)

时间:2006-11-17  来源:anima

十五、构建LFS系统──安装系统基础软件(七)


30.E2fsprogs-1.39

E2fsprogs 提供用于 ext2 文件系统的工具。它还支持 ext3 日志文件系统。

预计编译时间: 0.4 SBU

所需磁盘空间: 31.2 MB


安装E2fsprogs

root:/sources/diffutils-2.8.1# tar -zxvf $LFS/sources/e2fsprogs-1.39.tar.gz -C $LFS/sources

root:/sources/diffutils-2.8.1# cd $LFS/sources/e2fsprogs-1.39


推荐在 E2fsprogs 的源码目录外面来编译它:


root:/sources/e2fsprogs-1.39# mkdir -v build

mkdir: created directory `build'

root:/sources/e2fsprogs-1.39# cd build

root:/sources/e2fsprogs-1.39/build#



为编译E2fsprogs做准备:


root:/sources/e2fsprogs-1.39/build# ../configure --prefix=/usr --with-root-prefix="" \

> --enable-elf-shlibs –disable-evms



配置选项的含义:

--with-root-prefix="" 有的程序(如 e2fsck )对系统来说是非常重要的,例如,在 /usr 没有挂载的情况下。这些程序和库就应放在像 /lib 和 /sbin 这些目录中。如果没有把上面的参数传递给 E2fsprogs 的 configure 脚本,它就会把程序放在 /usr 目录下。 --enable-elf-shlibs 这会创建共享的库,供 E2fsprogs 包中的一些程序使用。 --disable-evms 这个选项禁止了企业卷管理系统(EVMS)插件的支持。因为这个插件并没有更新到适合最新的 EVMS 接口并且 EVMS 并不是基本 LFS 系统的一部分,所以我们并不需要这个插件。请参考 EVMS 网站 http://evms.sourceforge.net/ 以获得更多信息。


编译软件包:


root:/sources/e2fsprogs-1.39/build# make


要测试结果,请运行:make check 。


E2fsprogs 的一个测试会尝试分配 256 MB 内存。如果你没有充足的RAM空间,推荐打开足够的交换分区。参见“在新分区上创建新文件系统”和“挂载新分区”获取关于创建和激活交换分区的细节。



安装二进制和文档:


root:/sources/e2fsprogs-1.39/build# make install



安装共享库:


root:/sources/e2fsprogs-1.39/build# make install-libs




E2fsprogs 的内容

安装的程序: badblocks, blkid, chattr, compile_et, debugfs, dumpe2fs, e2fsck, e2image, e2label, filefrag, findfs, fsck, fsck.ext2, fsck.ext3, logsave, lsattr, mk_cmds, mke2fs, mkfs.ext2, mkfs.ext3, mklost+found, resize2fs, tune2fs, uuidgen.

安装的库: libblkid.{a,so}, libcom_err.{a,so}, libe2p.{a,so}, libext2fs.{a,so}, libss.{a,so}, libuuid.{a,so}

简要描述

badblocks

用来检查设备(通常是硬盘分区)上的坏块

blkid

定位并打印出块设备属性的命令行工具

chattr

在 ext2 和 ext3 文件系统上改变文件属性

compile_et

用来将错误代码(error-code)和相关出错信息的列表 转化为适用于 com_err 库的 C 语言文件

debugfs

文件系统调试器。能用来检查和改变 ext2 文件系统的状态

dumpe2fs

打印特定设备上现存的文件系统的超级块(super block)和块群(blocks group)的信息

e2fsck

用来检查和修复 ext2 和 ext3 文件系统

e2image

将关键的 ext2 文件系统数据保存到一个文件中

e2label

显示或者改变指定设备上的 ext2 文件系统标识

filefrag

报告一个文件的碎片情况

findfs

通过卷标或通用唯一标识符(UUID)寻找文件系统

fsck

用来检查或者修理文件系统

fsck.ext2

默认检查 ext2 文件系统

fsck.ext3

默认检查 ext3 文件系统

logsave

把一个命令的输出保存在日志文件中

lsattr

列出 ext2 文件系统上的文件属性

mk_cmds

将一个包含命令列表的文件转化为适用于子系统库 libss 的 C 源文件

mke2fs

用来创建 ext2 或 ext3 文件系统

mkfs.ext2

默认创建 ext2 文件系统

mkfs.ext3

默认创建 ext3 文件系统

mklost+found

在 ext2 文件系统上创建一个 lost+found 目录,并给该目录预分配磁盘数据块,以减轻 e2fsck 命令的负担。

resize2fs

可以用来增大或缩小 ext2 文件系统

tune2fs

调整 ext2 文件系统的可调参数

uuidgen

创建一个新的通用唯一标识符(UUID)。这个新 UUID 可以被认为是在所有已创建的 UUID 中独一无二的,不论是在本地的系统或者别的系统,过去还是将来。

libblkid

包含设备识别和节点释放的库函数

libcom_err

通用错误显示库

libe2p

用于 dumpe2fs, chattr, lsattr

libext2fs

允许用户级的程序操作 ext2 文件系统

libss

用于 debugfs

libuuid

用来给对象产生通用唯一标识符(UUID)使之可以在本地系统之外引用







31.File-4.17

File 是用来判断文件类型的工具。

预计编译时间: 0.1 SBU

所需磁盘空间: 7.5 MB


安装File

root:/sources/e2fsprogs-1.39/build# tar -zxvf $LFS/sources/file-4.17.tar.gz -C $LFS/sources

root:/sources/e2fsprogs-1.39/build# cd $LFS/sources/file-4.17


为编译File做准备:


root:/sources/file-4.17# ./configure –prefix=/usr



编译软件包:


root:/sources/file-4.17# make


这个软件包没有附带测试程序。


安装软件包:


root:/sources/file-4.17# make install




File 的内容

安装的程序: file

安装的库: libmagic.{a,so}

简要描述

file

测试每一个指定的文件并且试图对它们进行分类。有三个测试集,按照下面的顺序执行:文件系统测试、幻数(magic number)测试、语言测试。第一个测试成功后会打印文件文件类型。

libmagic

包含产生幻数(magic number)的函数,供file程序使用。







32.Findutils-4.2.27

Findutils 包含查找文件的工具,既能即时查找(递归的搜索目录,并可以显示、创建和维护文件),也能在数据库里查找(通常比递归查找快但是在数据库没有及时更新的情况下,结果并不可靠)。

预计编译时间: 0.2 SBU

所需磁盘空间: 12 MB


安装Findutils

root:/sources/file-4.17# mv $LFS/sources/findutils-4.2.27 $LFS/sources/old2

root:/sources/file-4.17# tar -zxvf $LFS/sources/findutils-4.2.27.tar.gz -C $LFS/sources

root:/sources/file-4.17# cd $LFS/sources/findutils-4.2.27



为编译Findutils做准备:


root:/sources/findutils-4.2.27# ./configure --prefix=/usr --libexecdir=/usr/lib/findutils \

> --localstatedir=/var/lib/locate



配置选项的含义:

--localstatedir 将 locate 数据库的位置指定为 /var/lib/locate ,以符合 FHS 标准。



编译软件包:


root:/sources/findutils-4.2.27# make


要测试结果,请运行:make check 。


安装软件包:


root:/sources/findutils-4.2.27# make install



LFS-Bootscripts 包中的一些脚本依赖于 find。因为在系统启动的前期,/usr 目录还是无法访问的(比如还没有挂载上),因此这个程序需要放在根分区上。 updatedb 脚本也需要用完全路径来修正:


root:/sources/findutils-4.2.27# mv -v /usr/bin/find /bin

`/usr/bin/find' -> `/bin/find'

root:/sources/findutils-4.2.27# sed -i -e 's/find:=${BINDIR}/find:=\/bin/' /usr/bin/updatedb

root:/sources/findutils-4.2.27#




Findutils 的内容

安装的程序: bigram, code, find, frcode, locate, updatedb, xargs

简要描述

bigram

以前用来创建 locate 数据库。

code

以前用来创建 locate 数据库。它是 frcode 的前身。

find

在一个目录和其子目录里面找符合条件的文件

frcode

被 updatedb 调用来压缩文件名列表,它使用的是前端压缩(front-compression),可以减小数据库4到5倍。

locate

扫描一个文件名称数据库,可以列出在数据库中符合条件的文件或者目录。

updatedb

更新 locate 数据库。它会扫描整个文件系统,包括所有挂载的文件系统(除非设定参数禁止),并且把每一个找到的文件和目录放到 locate 数据库里面。

xargs

可以在一系列文件上运行同一个命令









33.Flex-2.5.33

Flex 软件包包含一个能生成识别文本模式的程序的工具。

预计编译时间: 0.1 SBU

所需磁盘空间: 8.4 MB


安装Flex

root:/sources/findutils-4.2.27# tar -jxvf $LFS/sources/flex-2.5.33.tar.bz2 -C $LFS/sources

root:/sources/findutils-4.2.27# cd $LFS/sources/flex-2.5.33



为编译Flex做准备:


root:/sources/flex-2.5.33# ./configure –prefix=/usr


编译软件包:


root:/sources/flex-2.5.33# make


要测试结果,请运行:make check 。


安装软件包:


root:/sources/flex-2.5.33# make install



一些程序试图在 /usr/lib 下面寻找 lex 库,可以创建一个符号链接来满足要求:


root:/sources/flex-2.5.33# ln -sv libfl.a /usr/lib/libl.a

create symbolic link `/usr/lib/libl.a' to `libfl.a'

root:/sources/flex-2.5.33#




一些程序并不知道 flex 而是试图寻找 lex 程序(flex 是实现 lex 功能的另一种也是更好的选择)。为了满足少数一些程序的需要,我们将创建一个 lex 脚本,这个脚本调用 flex 并通过它来模仿 lex 的输出文件命名惯例:

cat > /usr/bin/lex << "EOF"
#!/bin/sh
# Begin /usr/bin/lex

exec /usr/bin/flex -l "$@"

# End /usr/bin/lex
EOF
chmod -v 755 /usr/bin/lex


root:/sources/flex-2.5.33# cat > /usr/bin/lex << "EOF"

> #!/bin/sh

> # Begin /usr/bin/lex

>

> exec /usr/bin/flex -l "$@"

>

> # End /usr/bin/lex

> EOF

root:/sources/flex-2.5.33# chmod -v 755 /usr/bin/lex

mode of `/usr/bin/lex' changed to 0755 (rwxr-xr-x)

root:/sources/flex-2.5.33#



Flex 的内容

安装的程序: flex, lex

安装的库: libfl.a

简要描述

flex

是一个用来生成识别文本的模式程序的工具。模式识别在很多程序中是非常有用,用户设置一些查询规则,然后 flex 可以生成一个查询程序。人们使用 flex 可以比亲自编写查询程序更便捷。

lex

在 lex 仿真模式下运行 flex 的一个脚本

libfl.a

flex 库








34.GRUB-0.97

GRUB 程序包包含 GRand 统一引导装载程序。

预计编译时间: 0.2 SBU

所需磁盘空间: 10.2 MB


安装GRUB

root:/sources/flex-2.5.33# tar -zxvf $LFS/sources/grub-0.97.tar.gz -C $LFS/sources

root:/sources/flex-2.5.33# cd $LFS/sources/grub-0.97



如果你把这个包缺省的优化参数(包括 -march 和 -mcpu 参数)改变的话,它会有些不正常的表现。因此,如果你定义了任何优化参数的话,比如 CFLAGS 和 CXXFLAGS ,我们劝你在编译时 unset 或修改它们。

开始先打一个补丁来达到更好的硬件侦测、修复 GCC 4.x 的一些问题以及为一些磁盘控制器提供更好的 SATA 支持:



root:/sources/grub-0.97# patch -Np1 -i ../grub-0.97-disk_geometry-1.patch



为编译GRUB做准备:



root:/sources/grub-0.97# ./configure –prefix=/usr



编译软件包:



root:/sources/grub-0.97# make



要测试结果,请运行:make check 。



安装软件包:



root:/sources/grub-0.97# make install

root:/sources/grub-0.97# mkdir -v /boot/grub

mkdir: created directory `/boot/grub'

root:/sources/grub-0.97# cp -v /usr/lib/grub/i386-pc/stage{1,2} /boot/grub

`/usr/lib/grub/i386-pc/stage1' -> `/boot/grub/stage1'

`/usr/lib/grub/i386-pc/stage2' -> `/boot/grub/stage2'

root:/sources/grub-0.97#



把 i386-pc 换成适合你的平台的路径。

i386-pc 目录还包含一些 *stage1_5 文件,是为不同的文件系统准备的。看看有哪些文件,并把你所需要的拷贝到 /boot/grub 目录下。多数人需要 e2fs_stage1_5 和/或 reiserfs_stage1_5 文件。







GRUB 的内容

安装的程序: grub, grub-install, grub-md5-crypt, grub-set-default, grub-terminfo, mbchk

简要描述

grub

GRUB 的命令解释 shell

grub-install

在指定设备上安装 GRUB

grub-md5-crypt

以 MD5 加密一个密码

grub-set-default

为 Grub 设置默认启动入口

grub-terminfo

从 terminfo 名称产生 terminfo 命令。如果你在一个不常见的终端时,可以使用这个命令。

mbchk

检查多重启动内核的格式








35.Gawk-3.1.5

Gawk 软件包包含用于管理文本文件的程序。

预计编译时间: 0.2 SBU

所需磁盘空间: 18.2 MB


安装Gawk

root:/sources/grub-0.97# mv $LFS/sources/gawk-3.1.5 $LFS/sources/old2

root:/sources/grub-0.97# tar -jxvf $LFS/sources/gawk-3.1.5.tar.bz2 -C $LFS/sources

root:/sources/grub-0.97# cd $LFS/sources/gawk-3.1.5


在某些情况下,Gawk-3.1.5会释放一块没有分配的内存。应用下面的patch可以解决问题:


root:/sources/gawk-3.1.5# patch -Np1 -i ../gawk-3.1.5-segfault_fix-1.patch

patching file io.c

root:/sources/gawk-3.1.5#



为编译Gawk做准备:


root:/sources/gawk-3.1.5# ./configure --prefix=/usr –libexecdir=/usr/lib


由于在 configure 脚本中的一个 bug ,Gawk 就不会发现 Glibc 中的某些方面的locale支持。 这个bug会导致很多问题。例如,Gettext 测试单元会失败。解决这个问题的方法就是在 config.h 中添加丢失的宏定义:

cat >>config.h <<"EOF"
#define HAVE_LANGINFO_CODESET 1
#define HAVE_LC_MESSAGES 1
EOF


root:/sources/gawk-3.1.5# cat >>config.h <<"EOF"

> #define HAVE_LANGINFO_CODESET 1

> #define HAVE_LC_MESSAGES 1

> EOF

root:/sources/gawk-3.1.5#




编译软件包:


root:/sources/gawk-3.1.5# make


要测试结果,请运行:make check 。


安装软件包:


root:/sources/gawk-3.1.5# make install




Gawk 的内容

安装的程序: awk(→gawk), gawk, gawk-3.1.5, grcat, igawk, pgawk, pgawk-3.1.5, pwcat

简要描述

awk

指向 gawk 的链接

gawk

awk 的GNU版本,用来管理文本文件的程序。

gawk-3.1.5

gawk 的硬链接

grcat

读取组数据库 /etc/group

igawk

赋予 gawk 包含文件的能力

pgawk

gawk 的概要分析(profiling)版本

pgawk-3.1.5

pgawk 的硬链接

pwcat

/etc/passwd 读取密码数据库








36.Gettext-0.14.5

Gettext 用于系统的国际化和本地化,可以在编译程序的时候使用本国语言支持(NLS),可以使程序的输出使用用户设置的语言而不是英文。

预计编译时间: 1 SBU

所需磁盘空间: 65 MB


安装Gettext

root:/sources/gawk-3.1.5# mv $LFS/sources/gettext-0.14.5 $LFS/sources/old2

root:/sources/gawk-3.1.5# tar -zxvf $LFS/sources/gettext-0.14.5.tar.gz -C $LFS/sources

root:/sources/gawk-3.1.5# cd $LFS/sources/gettext-0.14.5


为编译Gettext做准备:


root:/sources/gettext-0.14.5# ./configure –prefix=/usr



编译软件包:


root:/sources/gettext-0.14.5# make && date +%c (开始于2006-11-14 20:48:40)

……

……

……

gcc -g -O2 -o .libs/fc5 format-c-5-prg.o ../lib/.libs/libgettextlib.so ../intl/.libs/libgnuintl.so -lc

creating fc5

make[3]: Leaving directory `/sources/gettext-0.14.5/gettext-tools/tests'

Making all in examples

make[3]: Entering directory `/sources/gettext-0.14.5/gettext-tools/examples'

Making all in po

make[4]: Entering directory `/sources/gettext-0.14.5/gettext-tools/examples/po'

make[4]: Nothing to be done for `all'.

make[4]: Leaving directory `/sources/gettext-0.14.5/gettext-tools/examples/po'

make[4]: Entering directory `/sources/gettext-0.14.5/gettext-tools/examples'

make[4]: Nothing to be done for `all-am'.

make[4]: Leaving directory `/sources/gettext-0.14.5/gettext-tools/examples'

make[3]: Leaving directory `/sources/gettext-0.14.5/gettext-tools/examples'

make[3]: Entering directory `/sources/gettext-0.14.5/gettext-tools'

make[3]: Nothing to be done for `all-am'.

make[3]: Leaving directory `/sources/gettext-0.14.5/gettext-tools'

make[2]: Leaving directory `/sources/gettext-0.14.5/gettext-tools'

make[1]: Leaving directory `/sources/gettext-0.14.5/gettext-tools'

make[1]: Entering directory `/sources/gettext-0.14.5'

make[1]: Nothing to be done for `all-am'.

make[1]: Leaving directory `/sources/gettext-0.14.5'

Tue Nov 14 20:52:19 2006 (结束于2006-11-14 20:52:19)

root:/sources/gettext-0.14.5#




要测试结果,请运行:make check 。 This takes a very long time, around 5 SUB.


安装软件包:


root:/sources/gettext-0.14.5# make install




Gettext 的内容

安装的程序: autopoint, config.charset, config.rpath, envsubst, gettext, gettext.sh, gettextize, hostname, msgattrib, msgcat, msgcmp, msgcomm, msgconv, msgen, msgexec, msgfilter, msgfmt, msggrep, msginit, msgmerge, msgunfmt, msguniq, ngettext, xgettext

安装的库: libasprintf.{a,so}, libgettextlib.so, libgettextpo.{a,so}, libgettextsrc.so

简要描述

autopoint

将标准的 gettext infrastructure 文件拷贝到源码包中

config.charset

产生一个依赖于系统的字符编码表

config.rpath

输出依赖于系统的变量,描述如何在可执行程序中设置库文件的实时查找路径。

envsubst

替换 shell 格式化字符串中的环境变量

gettext

通过在消息列表中查找,来将一种自然语言的消息翻译成用户的本地语言

gettext.sh

主要作为一个shell的函数库来为 gettext 服务

gettextize

拷贝所有的标准 Gettext 文件到软件包的顶层目录下,以进行国际化。

hostname

用不同的格式显示一个网络主机名

msgattrib

根据翻译目录中消息的属性过滤它们,并且操作这些属性。

msgcat

将给定的 .po 文件合并到一起

msgcmp

比较两个 .po 文件,看它们是否包含相同的 msgid 字符串

msgcomm

找出不同 .po 文件中的相同信息

msgconv

把一个翻译列表转化成另一种字符编码

msgen

建立一个英文翻译目录

msgexec

对一个翻译列表中的所有翻译执行同一个命令

msgfilter

对一个翻译列表中的所有翻译使用同一个过滤器

msgfmt

从翻译列表生成一个二进制的消息列表

msggrep

将一个翻译列表中的所有符合给定格式或者属于给定源文件的消息展开

msginit

生成一个新的 .po 文件,并使用用户环境中的消息来对这个文件进行初始化。

msgmerge

将两个翻译合并成一个

msgunfmt

将二进制翻译文件反编译成源文件

msguniq

将翻译目录中重复的翻译合并成一个

ngettext

显示依赖于数字格式的文本文件的本国语言翻译

xgettext

从源文件中展开消息行, 用来创建起始翻译模板

libasprintf

定义 autosprintf 类,使 C 的函数以 C++ 程序可使用的结构输出,与 <string> 字符串和 <iostream> 流一起使用。

libgettextlib

包含多个 gettext 程序使用的函数,是私有库

libgettextpo

用来写处理 .po 文件的程序。当 Gettext 自带的标准程序(如 msgcomm, msgcmp, msgattrib, msgen)不能满足要求时,可以使用这个库。

libgettextsrc

包含多个 gettext 程序使用的函数,是私有库。






37.Grep-2.5.1a

Grep 可以搜索文件中符合指定匹配模式的行。

预计编译时间: 0.1 SBU

所需磁盘空间: 4.8 MB


安装Grep

root:/sources/gettext-0.14.5# mv $LFS/sources/grep-2.5.1a $LFS/sources/old2

root:/sources/gettext-0.14.5# tar -jxvf $LFS/sources/grep-2.5.1a.tar.bz2 -C $LFS/sources

root:/sources/gettext-0.14.5# cd $LFS/sources/grep-2.5.1a


当前的 Grep 包有很多bug,尤其是对多字节的loacles的支持。RedHat 采用下面的这个patch来解决部分问题:


root:/sources/grep-2.5.1a# patch -Np1 -i ../grep-2.5.1a-redhat_fixes-2.patch

patching file doc/grep.1

patching file lib/posix/regex.h

patching file src/dfa.c

patching file src/grep.c

patching file src/search.c

patching file src/search.c.orig

patching file tests/fmbtest.sh

patching file tests/Makefile.am

patching file tests/Makefile.in

root:/sources/grep-2.5.1a#



需要修改测试文件的权限,才能使打过patch后在测试中通过:


root:/sources/grep-2.5.1a# chmod +x tests/fmbtest.sh



为编译Grep做准备:


root:/sources/grep-2.5.1a# ./configure --prefix=/usr –bindir=/bin



编译软件包:


root:/sources/grep-2.5.1a# make


要测试结果,请运行:make check 。


安装软件包:


root:/sources/grep-2.5.1a# make install




Grep 的内容

安装的程序: egrep(→grep), fgrep(→grep), grep

简要描述

egrep

打印出匹配扩展正则表达式模式的行

fgrep

对固定字符串列表进行匹配

grep

对基本正则表达式进行匹配






38.Groff-1.18.1.1

Groff 软件包包含几个处理和格式化文本的程序。Groff 把标准的文本和特殊的命令翻译成格式化的输出,就像你在 man 手册页里看到的那样。

预计编译时间: 0.4 SBU

所需磁盘空间: 39.2 MB


安装Groff

root:/sources/grep-2.5.1a# tar -zxvf $LFS/sources/groff-1.18.1.1.tar.gz -C $LFS/sources

root:/sources/grep-2.5.1a# cd $LFS/sources/groff-1.18.1.1


应用下面的patch来添加 "ascii8" 和 "nippon" 设备到 Groff:


root:/sources/groff-1.18.1.1# patch -Np1 -i ../groff-1.18.1.1-debian_fixes-1.patch



注意

这些设备在转换一些非 ISO-8859-1 编码的非英语的 man 手册页时,会用到。现在对于 Groff-1.19.x 没有同样功能的patch:



许多屏幕字体没有 Unicode 的单引号和破折号。告诉 Groff 使用等价的 ASCII 字符:


root:/sources/groff-1.18.1.1# sed -i -e 's/2010/002D/' -e 's/2212/002D/' \ > -e 's/2018/0060/' -e 's/2019/0027/' font/devutf8/R.proto



Groff 希望环境变量 PAGE 包含缺省的纸张尺寸。对于在美国的人来说,就用下面的命令,如果你住在其他地方,可能需要把 PAGE=letter 改成 PAGE=A4 。


为编译 Groff 做准备:

PAGE=<paper_size> ./configure --prefix=/usr --enable-multibyte


root:/sources/groff-1.18.1.1# PAGE=A4 ./configure --prefix=/usr --enable-multibyte




编译软件包:


root:/sources/groff-1.18.1.1# make


这个软件包没有附带测试程序。


安装软件包:


root:/sources/groff-1.18.1.1# make install



有些文档程序,比如 xman ,没有下面的符号链接会不能正常工作:


root:/sources/groff-1.18.1.1# ln -sv eqn /usr/bin/geqn

create symbolic link `/usr/bin/geqn' to `eqn'

root:/sources/groff-1.18.1.1# ln -sv tbl /usr/bin/gtbl

create symbolic link `/usr/bin/gtbl' to `tbl'

root:/sources/groff-1.18.1.1#




Groff 的内容

安装的程序: addftinfo, afmtodit, eqn, eqn2graph, geqn(→eqn), grn, grodvi, groff, groffer, grog, grolbp, grolj4, grops, grotty, gtbl(→tbl), hpftodit, indxbib, lkbib, lookbib, mmroff, neqn, nroff, pfbtops, pic, pic2graph, post-grohtml, pre-grohtml, refer, soelim, tbl, tfmtodit, troff

简要描述

addftinfo

读取一个 troff 字体文件并增加一些 groff 系统使用的附加点阵字体。

afmtodit

建立同 groff 和 grops 一起使用的字体文件。

eqn

将嵌于 troff 输入文件中的方程描述翻译成 troff 能够理解的命令

eqn2graph

把 EQN 等式转换成反图像

geqn

指向 eqn 的连接

grn

groff 的 gremlin 文件预处理器

grodvi

groff 的产生 TeX dvi 格式的驱动

groff

groff 文档格式系统的前端。通常它调用 troff 程序和对指定设备适用的后处理器

groffer

把 groff 文件和 man 文档显示在 X 和 tty 上

grog

读取文件然后猜测使用 -e, -man, -me, -mm, -ms, -p, -s, -t 中的哪个 groff 参数来打印文件。并把带有这个参数的 groff 命令输出到标准输出。

grolbp

LBP-4 和 LBP-8 激光打印机系列的 groff 驱动

grolj4

产生适用于HP Laserjet4 打印机的 PCL5 格式的 groff 驱动

grops

将 GNU troff 的输出翻译成 PostScript

grotty

将 GNU troff 的标准输出翻译成适合类打字机设备的格式

gtbl

指向 tbl 的连接

hpftodit

使用 groff -Tlj4 从一个 HP-tagged 字体文件中创建 groff 使用的字体文件。

indxbib

建立同 refer, lookbib, lkbib 一起使用的文件的文献数据库的反向列表

lkbib

在文献数据库中搜索包括指定关键字的条目,并将其输出到标准输出

lookbib

打印一个标准错误的提示,除非标准输入不是终端。从标准输入读入关键字搜索在指定文件中的文献数据库中的含有这些关键字的条目,并将结果输出到标准输出。

mmroff

一个简易的 groff 预处理器

neqn

将方程格式化,使其成为适应 ASCII 输出的脚本

nroff

这个脚本用 nroff 命令仿真 groff 命令

pfbtops

将 .pfb 格式的 Postscript 字体翻译成 ASCII 码

pic

将内嵌于 troff 或 TeX 输入文件中的图像编译成 troff 或 TeX 理解的指令

pic2graph

把 PIC 图表转换成反图像

post-grohtml

将GNU troff 的输出翻译成 HTML

pre-grohtml

将GNU troff 的输出翻译成 HTML

refer

将一个文件拷贝到标准输出并丢弃 .[ 和 .] 之间作为引用的内容和在 .R1 和 .R2 之间解释如何处理这些引用的命令

soelim

读取文件将其中的 .so 文件 表格替换为 文件 的内容

tbl

将内嵌于 troff 或者 TeX 输入文件中的表格编译成 troff 或者 TeX 理解的指令

tfmtodit

建立 groff -Tdvi 使用的字体文件

troff

和 Unix 的 troff 高度兼容。一般运行 groff 来调用它,groff 依照合适的顺序并使用合适的参数来执行预处理程序和后处理程序。








39.Gzip-1.3.5

gzip 包含用 Lempel-Ziv 编码(LZ77)来压缩和解压文件的程序。

预计编译时间: 少于 0.1 SBU

所需磁盘空间: 2.2 MB


安装Gzip

root:/sources/groff-1.18.1.1# mv $LFS/sources/gzip-1.3.5 $LFS/sources/old2

root:/sources/groff-1.18.1.1# tar -zxvf $LFS/sources/gzip-1.3.5.tar.gz -C $LFS/sources

root:/sources/groff-1.18.1.1# cd $LFS/sources/gzip-1.3.5


Gzip 有两个安全漏洞,下面的补丁可以修正它:


root:/sources/gzip-1.3.5# patch -Np1 -i ../gzip-1.3.5-security_fixes-1.patch

patching file gzip.c

root:/sources/gzip-1.3.5#



为编译Gzip做准备:


root:/sources/gzip-1.3.5# ./configure –prefix=/usr



gzexe 脚本里包含对 gzip 程序的硬路径引用。由于我们后面要改变 gzip 程序的位置,就需要用下面的命令改变脚本中的硬路径:


root:/sources/gzip-1.3.5# sed -i 's@"BINDIR"@/bin@g' gzexe.in



编译软件包:


root:/sources/gzip-1.3.5# make



这个软件包没有附带测试程序。


安装软件包:


root:/sources/gzip-1.3.5# make install


把 gzip 程序移动到 /bin 目录并创建一些常用的符号连接:


root:/sources/gzip-1.3.5# mv -v /usr/bin/gzip /bin

`/usr/bin/gzip' -> `/bin/gzip'

root:/sources/gzip-1.3.5# rm -v /usr/bin/{gunzip,zcat}

removed `/usr/bin/gunzip'

removed `/usr/bin/zcat'

root:/sources/gzip-1.3.5# ln -sv gzip /bin/gunzip

create symbolic link `/bin/gunzip' to `gzip'

root:/sources/gzip-1.3.5# ln -sv gzip /bin/zcat

create symbolic link `/bin/zcat' to `gzip'

root:/sources/gzip-1.3.5# ln -sv gzip /bin/compress

create symbolic link `/bin/compress' to `gzip'

root:/sources/gzip-1.3.5# ln -sv gunzip /bin/uncompress

create symbolic link `/bin/uncompress' to `gunzip'

root:/sources/gzip-1.3.5#




Gzip 的内容

安装的程序: compress(→gzip), gunzip(→gzip), gzexe, gzip, uncompress(→gunzip), zcat(→gzip), zcmp, zdiff, zegrep, zfgrep, zforce, zgrep, zless, zmore, znew

简要描述

compress

压缩和解压缩文件

gunzip

解压由 gzip 压缩过的文件

gzexe

将文件压缩成可以自解压的可执行文件

gzip

通过 Lempel-Ziv 编码(LZ77)压缩指定的文件

uncompress

解压由 gzip 压缩过的文件

zcat

将解压缩的数据写到标准输出上

zcmp

在压缩文件上调用 cmp 命令

zdiff

在压缩文件上调用 diff 命令

zegrep

在压缩文件上调用 egrep 命令

zfgrep

在压缩文件上调用 fgrep 命令

zforce

强制性地为每一个 gzip 文件加上 .gz 扩展名,这样gzip 就不会对它们再次进行压缩。这个程序可能在一个文件经过传输后名字被截短的情况下能够派上用场。

zgrep

在压缩文件上调用 grep 命令

zless

在压缩文件上调用 less 命令

zmore

在压缩文件上调用 more 命令

znew

将.Z格式的文件(使用 compress 压缩)转压缩成.gz格式(使用 gzip 压缩)







40.Inetutils-1.4.2

Inetutils 包含基本的网络程序。

预计编译时间: 0.2 SBU

所需磁盘空间: 8.9 MB


安装Inetutils

root:/sources/gzip-1.3.5# tar -zxvf $LFS/sources/inetutils-1.4.2.tar.gz -C $LFS/sources

root:/sources/gzip-1.3.5# cd $LFS/sources/inetutils-1.4.2



应用一个patch,使其能够在GCC-4.0.3下编译:


root:/sources/inetutils-1.4.2# patch -Np1 -i ../inetutils-1.4.2-gcc4_fixes-3.patch

patching file ftp/ftp_var.h

patching file libinetutils/ttymsg.c

root:/sources/inetutils-1.4.2#



我们并不安装 Inetutils 的全部程序,然而,它默认会把所有程序的 man 文档都装上。下面的补丁能解决这个问题:


root:/sources/inetutils-1.4.2# patch -Np1 -i ../inetutils-1.4.2-no_server_man_pages-1.patch



为编译Inetutils做准备:


root:/sources/inetutils-1.4.2# ./configure --prefix=/usr --libexecdir=/usr/sbin \

> --sysconfdir=/etc --localstatedir=/var \

> --disable-logger --disable-syslogd \

> --disable-whois –disable-servers



配置选项的含义:

--disable-logger 阻止 inetutils 安装 logger 程序,脚本利用这个程序向系统日志守护进程传递消息。我们不安装它是因为 Util-linux 包含一个更好的版本。 --disable-syslogd 这个参数阻止 inetutils 安装 System Log Daemon(系统日志守护进程),我们将在后面的 Sysklogd 软件包中安装它。 --disable-whois 阻止 inetutils 编译 whois 客户端,因为它已经很陈旧了。在 BLFS book 里面有安装更好的 whois 客户端的指导。 --disable-servers 阻止安装几种网络服务器。这些服务器对于基本的 LFS 系统是不合适的,有的还不安全,很多服务器都有更好的替代者。参见 http://www.linuxfromscratch.org/blfs/view/svn/basicnet/inetutils.html 。



编译软件包:


root:/sources/inetutils-1.4.2# make


这个软件包没有附带测试程序。


安装软件包:


root:/sources/inetutils-1.4.2# make install



把 ping 程序移动到符合 FHS 标准的位置:


root:/sources/inetutils-1.4.2# mv -v /usr/bin/ping /bin

`/usr/bin/ping' -> `/bin/ping'

root:/sources/inetutils-1.4.2#




Inetutils 的内容

安装的程序: ftp, ping, rcp, rlogin, rsh, talk, telnet, tftp

简要描述

ftp

文件传输协议程序

ping

向网络主机发送请求应答包,并报告回复所需的时间。

rcp

远程文件拷贝

rlogin

远程登陆

rsh

运行远程 shell

talk

与另一个用户交谈

telnet

TELNET 协议接口

tftp

小文件传输程序







相关阅读 更多 +
排行榜 更多 +
激萌手账

激萌手账

游戏工具 下载
躺平不要慌

躺平不要慌

音乐节奏 下载
嗨自拍修图

嗨自拍修图

图像拍照 下载