出售域名  LinuxTags

6.18. Coreutils-6.12

Coreutils 软件包包括一套显示、设置基本系统属性的工具。

预计编译时间: 1.7 SBU 包括测试组件
所需磁盘空间: 89 MB 包括测试组件

6.18.1. 安装 Coreutils

通常 uname 程序总是有点毛病的,比如 -p 选项总是返回 unknown 的结果。下面的补丁对 Intel 平台的机器能修正这个问题:

patch -Np1 -i ../coreutils-6.12-uname-1.patch

这里有一个内部的问题,当你用旧的内核编译时会使得一些 Coreutils 的程序行为异常。应用下面的补丁来解决这个问题:

patch -Np1 -i ../coreutils-6.12-old_build_kernel-1.patch

POSIX 要求 Coreutils 的程序即使在多字节环境下也能够识别出字符的边界。下面的这个补丁能够解决这个问题以及其他的一些国际化相关的问题:

patch -Np1 -i ../coreutils-6.12-i18n-2.patch
[注意]

注意

过去,在这个补丁包里面发现了很多 bug。当你向 Coreutils 的维护者发送错误报告的时候,首先确认不应用这个补丁包错误会不会出现。

为编译 Coreutils 做准备:

./configure --prefix=/usr --enable-install-program=hostname --enable-no-install-program=kill,uptime

配置选项的含义:

--enable-no-install-program=kill,uptime

这个选项的目的是阻止 Coreutils 安装要以后从其他软件包中的二进制文件。

编译软件包:

make

如果不运行测试套件,直接跳至"安装软件包"。

现在已经准备好可以运行测试套件了,首先运行那些需要以 root 运行的测试:

make NON_ROOT_USERNAME=nobody check-root

我们将要用 nobody 用户运行接下来的测试。当然,在测试中更需要的是这个用户必须加入多个组。这使得测试不会因为我们新建一个临时组并且让 nobody 用户作为该组一员而跳过:

echo "dummy:x:1000:nobody" >> /etc/group

修改一个权限使得非 root 用户也可以编译并运行测试:

chown -Rv nobody config.log {gnulib-tests,lib,src}/.deps

现在运行测试:

su-tools nobody -s /bin/bash -c "make RUN_EXPENSIVE_TESTS=yes check"

删除临时组:

sed -i '/dummy/d' /etc/group

安装软件包:

make install

把一些程序移动到合适的位置以符合 FHS 标准:

mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin
mv -v /usr/bin/{false,hostname,ln,ls,mkdir,mknod,mv,pwd,readlink,rm} /bin
mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin
mv -v /usr/bin/chroot /usr/sbin

一些 LFS-Bootscripts 包中的脚本依赖于 headsleepnice 。由于 /usr 目录有可能在系统启动过程的早期不可用(比如尚未挂载),所以这些二进制程序需要放置在根分区上:

mv -v /usr/bin/{head,sleep,nice} /bin

6.18.2. Coreutils 的内容

安装的程序: base64, basename, cat, chgrp, chmod, chown, chroot, cksum, comm, cp, csplit, cut, date, dd, df, dir, dircolors, dirname, du, echo, env, expand, expr, factor, false, fmt, fold, groups, head, hostid, hostname, id, install, join, link, ln, logname, ls, md5sum, mkdir, mkfifo, mknod, mktemp, mv, nice, nl, nohup, od, paste, pathchk, pinky, pr, printenv, printf, ptx, pwd, readlink, rm, rmdir, seq, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, shred, shuf, sleep, sort, split, stat, stty, sum, sync, tac, tail, tee, test, touch, tr, true, tsort, tty, uname, unexpand, uniq, unlink, users, vdir, wc, who, whoami, and yes

简要描述

base64

通过 base64(RFC 3548)规格来编码和解码数据

basename

去掉文件名中的路径和后缀

cat

把文本文件的内容发送到标准输出

chgrp

改变文件和目录属组,属组可以使用组名或者组识别号表示

chmod

改变文件和目录的权限,权限可以使用符号或者八进制两种表达方式

chown

改变文件和目录的所有权(包括用户和/或组)

chroot

使用特定的目录作为执行某个命令或者交互 shell 的根目录(/),只有 root 用户能运行这个命令

cksum

输出指定的每个文件的 CRC(循环冗余校验)校验和与字节数

comm

一行一行对两个已经排序的文件进行比较,在第三列中显示同一行是否相同

cp

复制文件

csplit

把一个文件按照给定的模式或者行号分成几块

cut

从指定的文件中提取特定的列送到标准输出

date

以特定的格式显示当前时间,或者设置系统日期

dd

以可选块长度复制文件,默认情况下从标准输入设备输出到标准输出设备。复制过程中,还可以对文件进行一些转换

df

显示参数中的文件所在分区磁盘空间的使用情况,如果没有给出文件参数就显示所有已经安装的文件系统的可用空间数量

dir

列出给定目录的内容(同 ls 命令)

dircolors

设置 LS_COLOR 环境变量,用来改变 ls 及相关工具默认颜色组合

dirname

显示从文件名去掉非目录后缀之后的内容

du

显示参数使用的磁盘空间的数量,对于参数为目录还会列出每个子目录磁盘空间占用情况。

echo

显示给定字符串或变量值

env

在一个被修改的环境中运行一个程序

expand

把 tab 转换为空格符

expr

执行表达式计算

factor

输出所有指定整数的质因数

false

返回一个不成功或者逻辑假的结果

fmt

重新格式化指定文件的段落

fold

断开指定文件(默认是标准输入)较长的行,在屏幕上显示

groups

显示一个用户所在的组

head

显示每个指定文件的前几行(默认是 10)

hostid

以 16 进制方式,显示当前主机的数字标志符

hostname

显示或设置主机名

id

显示某个用户或者当前用户的真实和有效的 UID、GID 。

install

复制文件,设置它们的权限,如果可能还设置拥有它们的用户和组

join

合并两个文件的行

link

创建从指定文件到指定名称的硬链接

ln

创建文件之间的硬/软(符号)连接

logname

显示当前用户的登录名

ls

列出指定目录的所有内容。缺省是将文件和子目录按字母顺序排列。

md5sum

显示或者校验 MD5 校验码

mkdir

建立目录,使用给定的参数作为目录名。

mkfifo

以给定的参数作为名字建立 FIFO(又叫"命名管道")文件。

mknod

使用给出的文件名,建立一个设备节点,也就是:FIFO、字符特殊文件(character special file)或者块特殊文件(block special file)。

mktemp

在安全模式下创建一个临时文件;这常常用于脚本中

mv

根据所给参数的不同,把文件或者目录移动到另外的目录或者将其改名

nice

修改某个进程的调度优先级,使该程序进程优先级降低

nl

把每个指定文件的内容写到标准输出,在每行加上行号

nohup

使某个命令不被挂起,并将输出重定向到一个日志文件。

od

以数字方式显示指定文件的内容,默认为八进制。

paste

将字段连接在一起,在字段之间自动插入分割符,默认的分割符是 Tab 。

pathchk

检查文件名是否是有效的或者是可移植的

pinky

一个轻量级的 finger 客户端,用来得到某个用户的信息。

pr

将文件分成适当大小的页送到打印机

printenv

显示环境变量

printf

根据给定的参数格式化输出数据,与 C 语言中的该函数相似。

ptx

为指定的文件提供一个排序索引

pwd

显示当前工作目录

readlink

显示指定符号链接的值

rm

删除文件或者目录

rmdir

删除目录,目录必需为空

seq

以指定的步长输出一个数列

sha1sum

显示或校验 160 位的 Secure Hash Algorithm(SHA1)校验码

sha224sum

显示或校验 224 位的 SHA 校验码

sha256sum

显示或校验 256 位的 SHA 校验码

sha384sum

显示或校验 384 位的 SHA 校验码

sha512sum

显示或校验 512 位的 SHA 校验码

shred

安全删除一个文件,重写其占用的磁盘空间,使其无法恢复。

shuf

打乱文本中的行

sleep

延迟一段时间

sort

对文件进行排序

split

把文件分成固定大小(字节或行数)的片断

stat

显示文件或者文件系统的状态

stty

改变和显示终端行的设置

sum

显示指定文件的校验和及块数

sync

刷新文件系统缓冲区,使磁盘和内存的数据同步。

tac

逆向显示指定的文件,最后一行在最前。

tail

显示每个指定文件的最后几行(默认是10)。

tee

从标准输入读取数据,输出到标准输出和指定的文件。

test

检查文件类型,以及进行变量的比较。

touch

把参数指定的文件的访问和修改时间改为当前的时间。如果文件不存在,它就建立一个空文件。

tr

从标准输入读入正文,对字符进行转换、压缩或者删除,然后写到标准输出

true

返回一个成功或者逻辑真的结果

tsort

对给定的文件进行拓扑排序

tty

显示标准输出设备连接终端的文件名

uname

打印系统信息

unexpand

把空格符转换成 tab

uniq

抛弃指定文件或者标准输入中内容重复的行

unlink

删除指定文件

users

显示在当前主机登录的用户名

vdir

ls -l

wc

统计文件中包含的字节数、单词数、行数

who

显示有哪些用户登录

whoami

打印当前用户的有效用户标志符

yes

重复输出 "y" 字符,直到被杀死。


出售域名  LinuxTags

host by aosp.me  CDN