预计所需编译时间: 0.9 SBU 预计所需硬盘空间: 69 MB |
Coreutils软件包包括一整套基本的shell工具。
安装下列程序: basename, cat, chgrp, chmod, chown, chroot, cksum, comm, cp, csplit, cut, date, dd, df, dir, dircolors, dirname, du, echo, env, exp和, expr, factor, false, fmt, fold, groups, head, hostid, hostname, id, install, join, link, ln, logname, ls, md5sum, mkdir, mkfifo, mknod, mv, nice, nl, nohup, od, paste, pathchk, pinky, pr, printenv, printf, ptx, pwd, readlink, rm, rmdir, seq, sha1sum, shred, sleep, sort, split, stat, stty, su, sum, sync, tac, tail, tee, test, touch, tr, true, tsort, tty, uname, unexp和, uniq, unlink, uptime, users, vdir, wc, who, whoami 和 yes
Coreutils 依赖于: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed.
通常 uname 程序总是有点毛病的,比如 -p 参数总是得到 "unknown" 的结果。下面的补丁对 Intel 平台的机器能修正这个问题:
patch -Np1 -i ../coreutils-5.0-uname.patch |
我们不希望 Coreutils 安装它带的 hostname 程序,因为它没有 Net-tools 软件包提供的那个版本好。下面这个补丁阻止 hostname 的安装:
patch -Np1 -i ../coreutils-5.0-hostname-2.patch |
为编译 Coreutils 做准备:
./configure --prefix=/usr |
编译软件包:
make |
第五章里没有安装Coreutils里面带的 su 程序,因为这需要root权限。测试套件中有时会用到它,因此我们用下面的命令来避免错误:
make install-root |
本软件包自带测试套件,能执行一些测试,以确定它是否编译正确。然而,本软件包的测试套件总是作出一些对我们现在的进度不太适用的假设,比如要求有非root用户和组。为了让测试顺利进行,我们进行一些调整。如果你不想运行测试套件,就直接跳到"安装软件包"。下面的命令为我们准备测试套件。创建两个dummy组和一个dummy用户:
echo "dummy1:x:1000" >> /etc/group echo "dummy2:x:1001:dummy" >> /etc/group echo "dummy:x:1000:1000:::/bin/bash" >> /etc/passwd |
某些测试需要以 root运行:
make check-root |
余下的测试以 dummy 用户运行:
su dummy -c "make RUN_EXPENSIVE_TESTS=yes check" |
删除 dummy 组和用户:
sed -i.bak '/dummy/d' /etc/passwd /etc/group |
安装软件包:
make install |
把一些程序移动到合适的位置:
mv /usr/bin/{basename,cat,chgrp,chmod,chown,cp,dd,df} /bin mv /usr/bin/{date,echo,false,head,install,ln,ls} /bin mv /usr/bin/{mkdir,mknod,mv,pwd,rm,rmdir,sync} /bin mv /usr/bin/{sleep,stty,su,test,touch,true,uname} /bin mv /usr/bin/chroot /usr/sbin |
我们将使用Procps软件包中带的 kill 程序(在本章稍后部份,安装好以后是 /bin/kill)。因此要删除Coreutils带的:
rm /usr/bin/kill |
最后,创建一些必要的符号链接:
ln -s test /bin/[ ln -s ../../bin/install /usr/bin |