文章详情

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

16.构建LFS系统──安装系统基础软件(八)

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

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


41.IPRoute2-2.6.16-060323

IPRoute2 包含了基本的和高级的基于 IPv4 网络的程序。

预计编译时间: 0.2 SBU

所需磁盘空间: 4.8 MB


安装IPRoute2

root:/sources/inetutils-1.4.2# tar -zxvf $LFS/sources/iproute2-2.6.16-060323.tar.gz -C $LFS/sources

root:/sources/inetutils-1.4.2# cd $LFS/sources/iproute2-2.6.16-060323



编译软件包:


root:/sources/iproute2-2.6.16-060323# make SBINDIR=/sbin



make 选项的含义:

SBINDIR=/sbin 确保将 IPRoute2 包中的二进制文件安装到 /sbin 目录中以符合 FHS 标准,因为一些 IPRoute2 二进制文件将会被 LFS-Bootscripts 使用。

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


安装软件包:


root:/sources/iproute2-2.6.16-060323# make SBINDIR=/sbin install



arpd 二进制文件链接到在 /usr 目录中的Berkeley DB库,并且使用数据库 /var/lib/arpd/arpd.db。因此,按照 FHS,它必须存在于 /usr/sbin目录中。移动它到那里:


root:/sources/iproute2-2.6.16-060323# mv -v /sbin/arpd /usr/sbin

`/sbin/arpd' -> `/usr/sbin/arpd'

root:/sources/iproute2-2.6.16-060323#




IPRoute2 的内容

安装的程序: arpd, ctstat(→lnstat), ifcfg, ifstat, ip, lnstat, nstat, routef, routel, rtacct, rtmon, rtpr, rtstat(→lnstat), ss, tc.

简要描述

arpd

用户空间的 ARP 守护进程。用在大型网络中,那里内核空间的 ARP 实现不是很合适;或者是用在设置一个蜜罐。

ctstat

连接状态工具

ifcfg

ip命令的shell脚本包装

ifstat

显示网络接口的统计信息,包括接口发送和接收到的包数量。

ip

主可执行程序,它包含以下几个功能:

ip link [device] 查看和修改设备状态

ip addr 查看地址的特性,添加新地址、删除旧地址。

ip neighbor 查看邻居的特性,添加新邻居、删除旧邻居。

ip rule 查看和修改路由规则

ip route 查看路由表和修改路由表规则

ip tunnel 查看和修改 IP 隧道及其特性

ip maddr 查看和修改多播地址及其特性

ip mroute 设置、修改、删除多播路由

ip monitor 不间断的监视设备状态、地址、路由

lnstat

提供 Linux 网络统计信息,用于替代旧的 rtstat 程序。

nstat

显示网络统计信息

routef

ip route 的一个组件,用于刷新路由表。

routel

ip route 的一个组件,用于列出路由表。

rtacct

显示 /proc/net/rt_acct 文件的内容

rtmon

路由监视工具

rtpr

将 ip -o 的输出转换为可读的格式

rtstat

路由状态工具

ss

类似于 netstat 命令,显示活动的连接。

tc

流量控制,用于实现服务质量(QOS)和服务级别(COS):

tc qdisc 建立排队规则

tc class 建立基于级别的队列调度

tc estimator 估算网络流量

tc filter 设置 QOS/COS 包过滤器

tc policy 设置 QOS/COS 规则








42.Kbd-1.12

Kbd 包含键盘映射表和键盘工具。

预计编译时间: 少于 0.1 SBU

所需磁盘空间: 12.3 MB


安装Kbd

root:/sources/iproute2-2.6.16-060323# tar -jxvf $LFS/sources/kbd-1.12.tar.bz2 -C $LFS/sources

root:/sources/iproute2-2.6.16-060323# cd $LFS/sources/kbd-1.12


Backspace 键和 Delete 键的功能在 kbd 包的键盘映射中是不一样的。下面的 patch 修正了 i386 的键盘映射中的这个问题:


root:/sources/kbd-1.12# patch -Np1 -i ../kbd-1.12-backspace-1.patch


打完 patch 之后,Backspace 键会产生字符编码 127,Delete 键会产生一个著名的逃脱序列。

应用 patch 来修正 Kbd 中的 setfont 在 GCC-4.0.3 下编译出错的问题:


root:/sources/kbd-1.12# patch -Np1 -i ../kbd-1.12-gcc4_fixes-1.patch

patching file src/psffontop.c

root:/sources/kbd-1.12#



为编译Kbd做准备:


root:/sources/kbd-1.12# ./configure --datadir=/lib/kbd

Configuring for DATADIR=/lib/kbd

checking for gcc

gcc is /usr/bin/gcc

You have <locale.h>

You have <libintl.h> and gettext()

Assuming that you want to enable NLS support.

(Otherwise, edit defines.h and delete the line with ENABLE_NLS)


Done. You can run make now.

root:/sources/kbd-1.12#



配置选项的含义:

--datadir=/lib/kbd 这个选项把键盘布局信息存放到根分区内,而不是存放在默认的 /usr/share/kbd。


编译软件包:


root:/sources/kbd-1.12# make



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


安装软件包:


root:/sources/kbd-1.12# make install



注意

对于一些语言(例如,白俄罗斯),在 Kbd 包中没有提供相应的键盘映射。系统假定使用 ISO-8859-5 编码,通常使用 CP1251 键盘映射。 这些语种的用户需要单独下载相应的键盘映射:



LFS-Bootscripts 包中的一些脚本依赖于 kbd_mode, openvt,和 setfont。因为 /usr 在启动的早些时候是无法访问的(没有挂载)。那些二进制文件需要放在根分区上:


root:/sources/kbd-1.12# mv -v /usr/bin/{kbd_mode,openvt,setfont} /bin

`/usr/bin/kbd_mode' -> `/bin/kbd_mode'

`/usr/bin/openvt' -> `/bin/openvt'

`/usr/bin/setfont' -> `/bin/setfont'

root:/sources/kbd-1.12#




Kbd 的内容

安装的程序: chvt, deallocvt, dumpkeys, fgconsole, getkeycodes, kbd_mode, kbdrate, loadkeys, loadunimap, mapscrn, openvt, psfaddtable(→psfxtable), psfgettable(→psfxtable), psfstriptable(→psfxtable), psfxtable, resizecons, setfont, setkeycodes, setleds, setmetamode, showconsolefont, showkey, unicode_start, unicode_stop

简要描述

chvt

改变前台虚拟终端

deallocvt

重新分配不用的虚拟终端

dumpkeys

显示键盘转换表

fgconsole

显示活动虚拟控制台的数量

getkeycodes

显示内核中扫描码与键盘码的转换表

kbd_mode

设置或显示键盘模式

kbdrate

设置或显示键盘重复和延迟的速度

loadkeys

加载键盘转换表

loadunimap

加载内核的 Unicode 到字体(unicode-to-font)之间的影射表

mapscrn

把用户定义的输出字符影射表加载到控制台驱动器中。注意这个程序已经过时,它实现的功能已经并入 setfont 程序。

openvt

在一个新虚拟终端启动一个程序

psfaddtable

链接到 psfxtable

psfgettable

链接到 psfxtable

psfstriptable

链接到 psfxtable

psfxtable

一套处理控制台字体的 Unicode 字符表的工具

resizecons

让内核改变控制台的大小

setfont

改变控制台的 EGA 或 VGA 字体

setkeycodes

告诉内核的键盘驱动程序在扫描码/键码(scancode-to-keycode)影射表中加入新的影射,当你的键盘上有某些特殊建的时候这个就很有用了。

setleds

设置当前终端键盘的发光二极管(LED)标志

setmetamode

设置键盘的元键(meta key)

showconsolefont

显示当前 EGA / VGA 终端的屏幕字体

showkey

测试键盘发出的扫描码和键码

unicode_start

使控制台进入 UNICODE 模式。在 LFS 系统中从不使用,因为应用程序并未配置为支持 UNICODE 。

unicode_stop

终止控制台的 UNICODE 模式







43.Less-394

Less 软件包包含一个文本文件查看器。

预计编译时间: 0.1 SBU

所需磁盘空间: 2.6 MB

安装 Less

root:/sources/kbd-1.12# tar -zxvf $LFS/sources/less-394.tar.gz -C $LFS/sources

root:/sources/kbd-1.12# cd $LFS/sources/less-394



为编译 Less 做准备:



root:/sources/less-394# ./configure --prefix=/usr --sysconfdir=/etc

配置选项的含义:

--sysconfdir=/etc 这个选项告诉程序建立软件包时在 /etc 目录里查找配制文件。



编译软件包:

root:/sources/less-394# make

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

安装软件包:



root:/sources/less-394# make install

./mkinstalldirs /usr/bin /usr/man/man1

/usr/bin/install -c less /usr/bin/less

/usr/bin/install -c lesskey /usr/bin/lesskey

/usr/bin/install -c lessecho /usr/bin/lessecho

/usr/bin/install -c -m 644 ./less.nro /usr/man/man1/less.1

/usr/bin/install -c -m 644 ./lesskey.nro /usr/man/man1/lesskey.1

/usr/bin/install -c -m 644 ./lessecho.nro /usr/man/man1/lessecho.1

root:/sources/less-394#





Less 的内容

安装的程序: less, lessecho, lesskey

简要描述

less

一个文件显示或分页程序。它显示某文件的内容,并可以分卷、寻找字符串、跳转到某一标记。

lessecho

在 Unix 系统中,可以用来扩展元字符,比如 * 和 ?

lesskey

为 less 定义按健








44. Make-3.80

Make 自动地确定一个大型程序的哪些片段需要重新编译,并且发出命令去重新编译它们。

预计编译时间: 0.1 SBU

所需磁盘空间: 7.8 MB

安装 Make

root:/sources/less-394# mv $LFS/sources/make-3.80 $LFS/sources/old2

root:/sources/less-394# tar -jxvf $LFS/sources/make-3.80.tar.bz2 -C $LFS/sources

root:/sources/less-394# cd $LFS/sources/make-3.80



为编译 Make 做准备:



root:/sources/make-3.80# ./configure --prefix=/usr





编译软件包:



root:/sources/make-3.80# make

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

安装软件包:



root:/sources/make-3.80# make install

Make 的内容

安装的程序: make

简要描述

make

自动地确定一个大型程序的哪些片段需要重新编译,并且发出命令去重新编译它们。













45.Man-DB-2.4.3

Man-DB 包含查找和显示 man 手册页的程序。

预计编译时间: 0.2 SBU

所需磁盘空间: 9 MB

安装 Man-DB

root:/sources/make-3.80# tar -zxvf $LFS/sources/man-db-2.4.3.tar.gz -C $LFS/sources

root:/sources/make-3.80# cd $LFS/sources/man-db-2.4.3



对 Man-DB 的源码需要做三个调整。

第一,改变已翻译的 Man-DB 带的 manual 页的位置,使其在传统和 UTF-8 的 locale 环境下均能使用:



root:/sources/man-db-2.4.3# mv man/de{_DE.88591,} &&

> mv man/es{_ES.88591,} &&

> mv man/it{_IT.88591,} &&

> mv man/ja{_JP.eucJP,} &&

> sed -i 's,\*_\*,??,' man/Makefile.in

第二,使用 sed 的替换功能来删除 man_db.conf 文件中的 "/usr/man" 行, 来避免在使用像 whatis 这样的命令时的冗余结果:



root:/sources/man-db-2.4.3# sed -i '/\t\/usr\/man/d' src/man_db.conf.in

第三,改变 Man-DB 在运行时应该能够发现的程序的记录,但它们还没有安装:

cat >>include/manconfig.h.in <<"EOF"
#define WEB_BROWSER "exec /usr/bin/lynx"
#define COL "/usr/bin/col"
#define VGRIND "/usr/bin/vgrind"
#define GRAP "/usr/bin/grap"
EOF



root:/sources/man-db-2.4.3# cat >>include/manconfig.h.in <<"EOF"

> #define WEB_BROWSER "exec /usr/bin/lynx"

> #define COL "/usr/bin/col"

> #define VGRIND "/usr/bin/vgrind"

> #define GRAP "/usr/bin/grap"

> EOF

root:/sources/man-db-2.4.3#





col 是 Util-linux 的一部分, lynx 基于文本的浏览器(参见 BLFS 的安装说明), vgrind 把程序源码转换为 Groff 的输入,grap 在 Groff 文档中对图表排版非常有用。 vgrind 和 grap 不是查看 manual 页所必须的。它们不是 LFS 的一部分,也不是 BLFS 的一部分,但是在完成 LFS 之后,你应该能够自己安装。

为编译 Man-DB 做准备:



root:/sources/man-db-2.4.3# ./configure --prefix=/usr --enable-mb-groff –disae-setuid



配置选项的含义:

--enable-mb-groff 通知 man 在格式化非ISO-8859-1格式的 manual 页时,使用 "ascii8" 和 "nippon" Groff 设备。 --disable-setuid 使 man 不能给用户 man 设置uid位。

编译软件包:

root:/sources/man-db-2.4.3# make

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

安装软件包:



root:/sources/man-db-2.4.3# make install

一些软件包提供这个版本 man 无法显示的 UTF-8 编码的 man 手册页。 下面的脚本将会允许它们中的一些转换成为下面表中的编码格式。Man-DB 期望 manual 页的编码格式是下面表中的一项。在显示它们的时 候,可以根据需要转换成实际的 locale 编码,因此它们能够在传统的和 UTF-8 的locale下显示。因为脚本是在系统构建和对公共数据 中限制使用的,所以,我们不必担心错误检测和使用非预期的临时文件名。

cat >>convert-mans <<"EOF"
#!/bin/sh -e
FROM="$1"
TO="$2"
shift ; shift
while [ $# -gt 0 ]
do
FILE="$1"
shift
iconv -f "$FROM" -t "$TO" "$FILE" >.tmp.iconv
mv .tmp.iconv "$FILE"
done
EOF
install -m755 convert-mans /usr/bin



root:/sources/man-db-2.4.3# cat >>convert-mans <<"EOF"

> #!/bin/sh -e

> FROM="$1"

> TO="$2"

> shift ; shift

> while [ $# -gt 0 ]

> do

> FILE="$1"

> shift

> iconv -f "$FROM" -t "$TO" "$FILE" >.tmp.iconv

> mv .tmp.iconv "$FILE"

> done

> EOF

root:/sources/man-db-2.4.3# install -m755 convert-mans /usr/bin



一些关于 man 和 info 页的压缩可以在 BLFS 手册中找到(http://www.linuxfromscratch.org/blfs/view/cvs/postlfs/compressdoc.html)。

Non-English Manual Pages in LFS

每一种 Linux 的发行版在存储 manual 页的字符编码方面都有自己的方法。比如,RedHat 以 UTF-8 编码存储所有的 manual 页;然而 Debian 使用不同的语言编码(通常是8位的)。这 就导致包在为不同发行版设置 manual 页时不兼容。

LFS采用跟 Debian 一样的方法。这是因为 Man-DB 不能够理解 UTF-8 存储的 man 手册页。Man-DB 比 Man 好在在任意的 locale 下不需要额外的配置就可以使用。最后,我们没有选用 RedHat 的方法,因为它的groff文本格式组织的不好。

语言跟字符编码的关联已经列在下面的表中。Man-DB 会在查看的时候自动的将它们转变为 locale 的编码。

Table 6.1. manual 页的字符编码表 pages

Language (code)

Encoding

Danish (da)

ISO-8859-1

German (de)

ISO-8859-1

English (en)

ISO-8859-1

Spanish (es)

ISO-8859-1

Finnish (fi)

ISO-8859-1

French (fr)

ISO-8859-1

Irish (ga)

ISO-8859-1

Galician (gl)

ISO-8859-1

Indonesian (id)

ISO-8859-1

Icelandic (is)

ISO-8859-1

Italian (it)

ISO-8859-1

Dutch (nl)

ISO-8859-1

Norwegian (no)

ISO-8859-1

Portuguese (pt)

ISO-8859-1

Swedish (sv)

ISO-8859-1

Czech (cs)

ISO-8859-2

Croatian (hr)

ISO-8859-2

Hungarian (hu)

ISO-8859-2

Japanese (ja)

EUC-JP

Korean (ko)

EUC-KR

Polish (pl)

ISO-8859-2

Russian (ru)

KOI8-R

Slovak (sk)

ISO-8859-2

Turkish (tr)

ISO-8859-9

注意

不在上面列表中的语言的 Manual 页是不支持的。挪威语无法使用,因为从 no_NO 到 nb_NO 的locale转变。韩语因为不完整的 patch 也是功能不全的。 of the incomplete Groff patch.

如果 manual 页的编码是 Man-DB 所预期的,manual 页就会被拷贝到 /usr/share/man/<language code>。例如,法语的 manual 页(http://ccb.club.fr/man/man-fr-1.58.0.tar.bz2) 可以使用下面的命令安装:

mkdir -p /usr/share/man/fr &&
cp -rv man? /usr/share/man/fr

如果 manual 页是 UTF-8 编码的(例如,针对 "RedHat" 的) ,而不是上面列表中的。它们不得不在安装之前从 UTF-8 转变为列表中的编码。这可以通过 convert-mans 来实现。比如,西班牙的 manual 页 (http://ditec.um.es/~piernas/manpages-es/man-pages-es-1.55.tar.bz2) 可以通过下面的命令来安装:

mv man7/iso_8859-7.7{,X}
convert-mans UTF-8 ISO-8859-1 man?/*.?
mv man7/iso_8859-7.7{X,}
make install

注意

在转换的过程中需要除去 man7/iso_8859-7.7 文件,因为它已经存在于ISO-8859-1中,这是 man-pages-es-1.55 的一个bug。下一个版本可能就不会需要了。

Man-DB 的内容

安装的程序: accessdb, apropos, catman, convert-mans,lexgrog, man, mandb, manpath, whatis, zsoelim

简要描述

accessdb

将 whatis 数据库的内容转储为人类可读形式

apropos

搜索 whatis 数据库,显示包含给定字符串的系统命令的简短描述。

catman

创建或更新预格式化的 manual 页

convert-mans

重新格式化 man 手册页,以使 Man-DB 能够显示它们

lexgrog

显示一行给定 manual 页的摘要信息。

man

格式化并显示请求的 manual 页

mandb

创建或更新 whatis 数据库

manpath

显示 $MANPATH 的内容或在man.conf中设置的搜索路径(如果 $MANPATH 没有设置),以及用户的环境变量。

whatis

搜索 whatis 数据库,显示包含给定关键字的系统命令的简短描述。

zsoelim

读取文件并用提到的 file 的内容来替换 .so file 格式的行。








46.Mktemp-1.5

Mktemp 软件包包含用于在 shell 脚本中创建安全临时文件的程序。

预计编译时间: 少于 0.1 SBU

所需磁盘空间: 0.4 MB


安装Mktemp

root:/sources/man-db-2.4.3# tar -zxvf $LFS/sources/mktemp-1.5.tar.gz -C $LFS/sources

root:/sources/man-db-2.4.3# cd $LFS/sources/mktemp-1.5


许多脚本目前仍然使用被反对使用的类似于 mktemp 的 tempfile 程序,我们现在要给 Mktemp 打一个补丁,以使它包含 tempfile 包装:


root:/sources/mktemp-1.5# patch -Np1 -i ../mktemp-1.5-add_tempfile-3.patch

patching file Makefile.in

patching file tempfile

root:/sources/mktemp-1.5#



为编译Mktemp做准备:


root:/sources/mktemp-1.5# ./configure --prefix=/usr –with-libc


配置选项的含义:

--with-libc 这个使得 mktemp 程序从系统的 C 库中使用 mkstemp 和 mkdtemp 的功能。



编译软件包:


root:/sources/mktemp-1.5# make

gcc -c -I. -I. "-DMKTEMP_VERSION=\"1.5\"" -g -O2 mktemp.c

gcc -o mktemp mktemp.o

root:/sources/mktemp-1.5#



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


安装软件包:


root:/sources/mktemp-1.5# make install

/bin/sh ./mkinstalldirs /usr/bin /usr/man/man1

/bin/sh ./install-sh -c -m 0555 -s mktemp /usr/bin/mktemp

/bin/sh ./install-sh -c -m 0444 ./mktemp.man /usr/man/man1/mktemp.1

root:/sources/mktemp-1.5# make install-tempfile

/bin/sh ./install-sh -c -m 0555 ./tempfile /usr/bin/tempfile

root:/sources/mktemp-1.5#




Mktemp 的内容

安装的程序: mktemp, tempfile

简要描述

mktemp

使用安全性较强的方式创建临时文件,用于脚本中。

tempfile

使用比 mktemp 安全性较弱的方式创建临时文件,但是能够满足向后的兼容性。








47.Module-Init-Tools-3.2.2

Module-Init-Tools 包含处理 2.5.47 及以上版本的内核模块时使用的工具。

预计编译时间: 少于 0.1 SBU

所需磁盘空间: 7 MB


安装Module-Init-Tools

root:/sources/mktemp-1.5# tar -jxvf $LFS/sources/module-init-tools-3.2.2.tar.bz2 -C $LFS/sources

root:/sources/mktemp-1.5# cd $LFS/sources/module-init-tools-3.2.2


首先更正一个当模块被指定使用正则表达式时会出现的潜在问题:


root:/sources/module-init-tools-3.2.2# patch -Np1 -i ../module-init-tools-3.2.2-modprobe-1.patch

patching file modprobe.c

root:/sources/module-init-tools-3.2.2#



执行下面的命令进行测试(注意 make distclean 命令需要清理源码树,因为作为测试过程的一部分,源码会重新编译:


root:/sources/module-init-tools-3.2.2# ./configure &&

> make check &&

> make distclean



为编译 Module-Init-Tools 做准备:


root:/sources/module-init-tools-3.2.2# ./configure --prefix=/ --enable-zlib



编译软件包:


root:/sources/module-init-tools-3.2.2# make



安装软件包:


root:/sources/module-init-tools-3.2.2# make INSTALL=install install

make[1]: Entering directory `/sources/module-init-tools-3.2.2'

/bin/sh ./mkinstalldirs //bin

install lsmod //bin/lsmod

/bin/sh ./mkinstalldirs //sbin

install insmod //sbin/insmod

install modprobe //sbin/modprobe

install rmmod //sbin/rmmod

install depmod //sbin/depmod

install modinfo //sbin/modinfo

install insmod.static //sbin/insmod.static

/bin/sh ./mkinstalldirs //sbin

install generate-modprobe.conf //sbin/generate-modprobe.conf

/bin/sh ./mkinstalldirs /usr/share/man/man5

install -m 644 ./modprobe.conf.5 /usr/share/man/man5/modprobe.conf.5

install -m 644 ./modules.dep.5 /usr/share/man/man5/modules.dep.5

/bin/sh ./mkinstalldirs /usr/share/man/man8

install -m 644 ./depmod.8 /usr/share/man/man8/depmod.8

install -m 644 ./insmod.8 /usr/share/man/man8/insmod.8

install -m 644 ./lsmod.8 /usr/share/man/man8/lsmod.8

install -m 644 ./rmmod.8 /usr/share/man/man8/rmmod.8

install -m 644 ./modprobe.8 /usr/share/man/man8/modprobe.8

install -m 644 ./modinfo.8 /usr/share/man/man8/modinfo.8

make[1]: Leaving directory `/sources/module-init-tools-3.2.2'

root:/sources/module-init-tools-3.2.2#



make 参数的含义:

INSTALL=install 正常情况下,如果二进制文件已经存在了,make install 就不会安装它们。 这个选项是调用 install 而不是使用默认封装的脚本。



Module-Init-Tools 的内容

安装的程序: depmod, generate-modprobe.conf, insmod, insmod.static, lsmod, modinfo, modprobe, rmmod

简要描述

depmod

创建一个可加载内核模块的依赖关系文件,modprobe 用它来自动加载模块。

generate-modprobe.conf

从一个现存的2.2 或者 2.4版本内核的模块设置中创建一个 modprobe.conf 文件

insmod

向正在运行的内核加载模块

insmod.static

insmod 的静态编译版本

lsmod

显示当前已加载的内核模块信息

modinfo

检查与内核模块相关联的目标文件,并打印出所有能得到的信息。

modprobe

利用 depmod 创建的依赖关系文件来自动加载相关的模块

rmmod

从当前运行的内核中卸载模块








48.Patch-2.5.4

Patch 根据"补丁"文件的内容来修改原来的文件。补丁文件通常是用 diff程序创建的,包含如何修改文件的指导。

预计编译时间: 少于 0.1 SBU

所需磁盘空间: 1.6 MB


安装Patch

root:/sources/module-init-tools-3.2.2# mv $LFS/sources/patch-2.5.4 $LFS/sources/old2

root:/sources/module-init-tools-3.2.2# tar -zxvf $LFS/sources/patch-2.5.4.tar.gz -C $LFS/sources

root:/sources/module-init-tools-3.2.2# cd $LFS/sources/patch-2.5.4


为编译Patch做准备:


root:/sources/patch-2.5.4# ./configure –prefix=/usr



编译软件包:


root:/sources/patch-2.5.4# make

……

……

……

gcc -c -DHAVE_CONFIG_H -Ded_PROGRAM=\"ed\" -I. -I. -g -O2 quotearg.c

quotearg.c: In function 'quotearg_n_options':

quotearg.c:341: warning: incompatible implicit declaration of built-in function 'abort'

gcc -c -DHAVE_CONFIG_H -Ded_PROGRAM=\"ed\" -I. -I. -g -O2 quotesys.c

gcc -c -DHAVE_CONFIG_H -Ded_PROGRAM=\"ed\" -I. -I. -g -O2 util.c

gcc -c -DHAVE_CONFIG_H -Ded_PROGRAM=\"ed\" -I. -I. -g -O2 version.c

gcc -c -DHAVE_CONFIG_H -Ded_PROGRAM=\"ed\" -I. -I. -g -O2 xmalloc.c

gcc -o patch -g -O2 addext.o argmatch.o backupfile.o basename.o error.o inp.o maketime.o partime.o patch.o pch.o quotearg.o quotesys.o util.o version.o xmalloc.o

patch.o: In function `make_temp':

/sources/patch-2.5.4/patch.c:1325: warning: the use of `mktemp' is dangerous, better use `mkstemp'

root:/sources/patch-2.5.4#



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


安装软件包:


root:/sources/patch-2.5.4# make install

/bin/sh ./mkinstalldirs /usr/bin /usr/man/man1

/usr/bin/install -c patch /usr/bin/`echo patch | sed 's,x,x,'`

/usr/bin/install -c -m 644 ./patch.man /usr/man/man1/`echo patch | sed 's,x,x,'`.1

root:/sources/patch-2.5.4#



Patch 的内容

安装的程序: patch

简要描述

patch

根据一个patch 文件来对文件进行修改。通常情况下,一个 patch 文件是一个差别清单。这个清单用diff程序创建。通过将这些差别应用到原始文件,patch 创建出修订版本。








49.Psmisc-22.2

Psmisc 包含有用于显示进程信息的程序。

预计编译时间: 少于 0.1 SBU

所需磁盘空间: 2.2 MB


安装Psmisc

root:/sources/patch-2.5.4# tar -zxvf $LFS/sources/psmisc-22.2.tar.gz -C $LFS/sources

root:/sources/patch-2.5.4# cd $LFS/sources/psmisc-22.2


为编译Psmisc做准备:


root:/sources/psmisc-22.2# ./configure --prefix=/usr –exec-prefix=""


配置选项的含义:

--exec-prefix="" 这个确保 Psmisc 二进制文件按照 FHS 标准被安装在 /bin 而不是 /usr/bin ,因为一些 Psmisc 二进制文件将被 LFS-Bootscripts 使用。


编译软件包:


root:/sources/psmisc-22.2# make


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


安装软件包:


root:/sources/psmisc-22.2# make install



没有理由把 pstree 和 pstree.x11 程序安装在 /bin 中,所以将他们移动到 /usr/bin 中:


root:/sources/psmisc-22.2# mv -v /bin/pstree* /usr/bin

`/bin/pstree' -> `/usr/bin/pstree'

`/bin/pstree.x11' -> `/usr/bin/pstree.x11'

root:/sources/psmisc-22.2#



默认情况下, Psmisc 的 pidof 程序未被安装。 这通常情况下不是问题。因为它将在这之后的 Sysvinit 包中被安装,而且这个包提供了一个更好的 pidof 程序。如果你打算不使用 Sysvinit ,则可通过创建下面的符号连接来安装完整的 Psmisc :


root:/sources/psmisc-22.2# ln -sv killall /bin/pidof

create symbolic link `/bin/pidof' to `killall'

root:/sources/psmisc-22.2#



Psmisc 的内容

安装的程序: fuser, killall, pstree, pstree.x11(→pstree)

简要描述

fuser

报告使用所给文件或文件系统的进程的进程ID(PID)。

killall

通过进程名来终止进程,它发送消息到所有正在运行任意所给指令的进程。

oldfuser

报告使用所给文件或文件系统的进程的进程ID(PID)。

pstree

以目录树的形式显示所有正在运行的进程

pstree.x11

同 pstree ,只是它在退出前要求确认






50.Shadow-4.0.15

Shadow 包含用于在安全方式下处理密码的程序。

预计编译时间: 0.3 SBU

所需磁盘空间: 18.6 MB


安装Shadow

root:/sources/psmisc-22.2# tar -jxvf $LFS/sources/shadow-4.0.15.tar.bz2 -C $LFS/sources

root:/sources/psmisc-22.2# cd $LFS/sources/shadow-4.0.15



注意

如果你打算强制使用高强度密码,请参考 http://www.linuxfromscratch.org/blfs/view/svn/postlfs/cracklib.html 以获得如何在安装 Shadow 之前先安装 Cracklib 的指导。然后在下面的 configure 命令中加入 --with-libcrack 项。


为编译Shadow做准备:


root:/sources/shadow-4.0.15# ./configure --libdir=/lib --enable-shared –without-selinux



配置选项的含义:

--without-selinux selinux 的支持默认是打开的,但是 selinux 不包含在 LFS 基本系统中。如果这个选项不设置, configure 脚本会报错。

禁止安装 groups 程序和它的手册,Coreutils 软件包提供了一个更好的版本:


root:/sources/shadow-4.0.15# sed -i 's/groups$(EXEEXT) //' src/Makefile

root:/sources/shadow-4.0.15# find man -name Makefile -exec sed -i '/groups/d' {} \;


禁止安装中文和韩文的手册页,因为Man-DB不能很好的格式化它们:


root:/sources/shadow-4.0.15# sed -i -e 's/ ko//' -e 's/ zh_CN zh_TW//' man/Makefile


Shadow 支持在 UTF-8 编码环境下的其他编码的手册。Man-DB 可以通过我们安装的 convert-mans 脚本来转换并显示它们。


root:/sources/shadow-4.0.15# for i in de es fi fr id it pt_BR; do

> convert-mans UTF-8 ISO-8859-1 man/${i}/*.?

> done

root:/sources/shadow-4.0.15# for i in cs hu pl; do

> convert-mans UTF-8 ISO-8859-2 man/${i}/*.?

> done

root:/sources/shadow-4.0.15# convert-mans UTF-8 EUC-JP man/ja/*.?

root:/sources/shadow-4.0.15# convert-mans UTF-8 KOI8-R man/ru/*.?

root:/sources/shadow-4.0.15# convert-mans UTF-8 ISO-8859-9 man/tr/*.?



编译软件包:


root:/sources/shadow-4.0.15# make



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


安装软件包:


root:/sources/shadow-4.0.15# make install



Shadow 使用两个文件来设置系统的身份认证。下面安装这两个设置文件:


root:/sources/shadow-4.0.15# cp -v etc/{limits,login.access} /etc

`etc/limits' -> `/etc/limits'

`etc/login.access' -> `/etc/login.access'

root:/sources/shadow-4.0.15#



不使用默认的 crypt 加密方法, 而使用更为安全的 MD5 对密码进行加密, 并且它同样允许密码长于 8 个字符。同时将用户邮箱位置从过时的 /var/spool/mail 修改到 /var/mail 是也有必要的(Shadow 普遍默认使用这个位置)。这两件事都可以通过在将相应的配置文件复制至目标位置之前,对其进行更改来达到:


root:/sources/shadow-4.0.15# sed -e's@#MD5_CRYPT_ENAB.no@MD5_CRYPT_ENAB yes@' \

> -e 's@/var/spool/mail@/var/mail@' \

> etc/login.defs > /etc/login.defs



注意

如果你在编译 Shadow 时启用了 Cracklib 支持,请在下面的 sed 命令中插入:

sed -i 's@DICTPATH.*@DICTPATH\t/lib/cracklib/pw_dict@' \
/etc/login.defs



移动一些放错位置的符号连结或程序到正确位置:


root:/sources/shadow-4.0.15# mv -v /usr/bin/passwd /bin

`/usr/bin/passwd' -> `/bin/passwd'

root:/sources/shadow-4.0.15#



移动 Shadow 的动态库到一个更为合适的地方:


root:/sources/shadow-4.0.15# mv -v /lib/libshadow.*a /usr/lib

`/lib/libshadow.a' -> `/usr/lib/libshadow.a'

`/lib/libshadow.la' -> `/usr/lib/libshadow.la'

root:/sources/shadow-4.0.15# rm -v /lib/libshadow.so

removed `/lib/libshadow.so'

root:/sources/shadow-4.0.15# ln -sfv ../../lib/libshadow.so.0 /usr/lib/libshadow.so

create symbolic link `/usr/lib/libshadow.so' to `../../lib/libshadow.so.0'

root:/sources/shadow-4.0.15#



useradd 程序的 -D 选项要求存在 /etc/default 目录以便程序能够正常工作:


root:/sources/shadow-4.0.15# mkdir -v /etc/default

mkdir: created directory `/etc/default'

root:/sources/shadow-4.0.15#




配置Shadow

这个软件包中含有用来增加、修改和删除用户或组、设置和更改他们的密码、和执行其他管理任务的工具。为了获得对 password shadowing (影子密码) 的完全解释,请参见 doc/HOWTO 文件,它在解包后的源码目录树中。假如要使用 Shadow 支持,请注意那些需要对密码进行校验的程序(如显示管理器、FTP 程序、pop3进程等)必须兼容 Shadow 。也就是说,他们需要能够与影子密码一起工作。

为了使用影子密码,运行以下指令:



root:/sources/shadow-4.0.15# pwconv



为使用组影子密码,运行:



root:/sources/shadow-4.0.15# grpconv





Setting the root password

通过运行以下命令来设置 root 用户的密码:



root:/sources/shadow-4.0.15# passwd root

Changing password for root

Enter the new password (minimum of 5, maximum of 127 characters)

Please use a combination of upper and lower case letters and numbers.

New password:

Re-enter new password:

Password changed.

root:/sources/shadow-4.0.15#





Shadow 的内容

安装的程序: chage, chfn, chgpasswd, chpasswd, chsh, expiry, faillog, gpasswd, groupadd, groupdel, groupmod, grpck, grpconv, grpunconv, lastlog, login, logoutd, newgrp, newusers, nologin, passwd, pwck, pwconv, pwunconv, sg(→newgrp), su, useradd, userdel, usermod, vigr(→vipw), vipw

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

简要描述

chage

用于设置必须对密码进行更改的最大间隔天数

chfn

用于对用户的全名及其他信息进行修改

chgpasswd

用于对一整个系列的组账号密码进行更新

chpasswd

用于对一整个系列的用户账号密码进行更新

chsh

用于更改一个用户的默认的登录 shell

expiry

检查并加强当前的密码过期策略

faillog

用于检查记录登录失败的日志,或是设置账户在被锁定前最大的登录失败次数,亦可用于重置登录失败的次数。

gpasswd

用来增加和删除组中的成员和管理员

groupadd

用指定的名称建一个组

groupdel

删除指定名称的组

groupmod

用来修改所指定组的名称或 GID

grpck

校验组文件 /etc/group 和 /etc/gshadow 的完整性

grpconv

从正常组文件中创建或更新一影子组文件

grpunconv

从 /etc/gshadow 更新 /etc/group 并将前者删除

lastlog

报告最近的所有用户的登录或是所指定用户的登录

login

被系统用来允许用户进行登录

logoutd

一个后台程序,用来加强对登录时间和端口进行限制

newgrp

用来在登录会话期间对当前的 GID 进行修改

newusers

用来对一整个系列的用户账户进行创建或更新

nologin

显示一个账户不可用的信息,被设计用来作为那些不准登录的账户的默认 shell。

passwd

用来对一个用户或组账户进行密码修改

pwck

校验密码文件 /etc/passwd 和 /etc/shadow 的完整性

pwconv

从一个正常的密码文件中创建或更新一影子密码文件

pwunconv

从 /etc/shadow 更新 /etc/passwd 并删除前者

sg

当一个用户的 GID 被设置到所给的组时执行所指定的命令

su

用另一个用户和组ID来运行一个 shell

useradd

用所给名称建立一个新的用户或更新默认新用户的信息

userdel

删除所指定的用户账户

usermod

用来更改所给用户的登录名、用户标识(UID)、shell、最初组、主目录等

vigr

编辑 /etc/group 或 /etc/gshadow 文件

vipw

编辑 /etc/passwd 或 /etc/shadow 文件

libshadow

包含了本包中大部分程序所用到的函数









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

激萌手账

游戏工具 下载
躺平不要慌

躺平不要慌

音乐节奏 下载
嗨自拍修图

嗨自拍修图

图像拍照 下载