6.26. Coreutils-8.22

Coreutils 程序包包含用于显示和设置基本系统属性的工具。

预计构建时间: 3.4 SBU
磁盘空间需求: 116 MB

6.26.1. 安装 Coreutils

POSIX 要求 Coreutils 中的程序即使在多字节区域数据中也能正确识别字符边界。以下补丁包修复这个非兼容 bug 和其它与国际化相关的 bug:

patch -Np1 -i ../coreutils-8.22-i18n-4.patch
[注意]

注意

在过去,很多 bug 在该补丁包中被发现。要报告新的 bug 给 Coreutils 维护者,请先检查他们是否在未打该补丁时再次出现。

现在准备编译 Coreutils :

FORCE_UNSAFE_CONFIGURE=1 ./configure \
            --prefix=/usr            \
            --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

修复一些许可来让普通用户可以编译以及运行测试:

chown -Rv nobody . 

现在运行测试。确保 su 环境中的路径包含 /tools/bin 。

su nobody -s /bin/bash \
          -c "PATH=$PATH 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,ln,ls,mkdir,mknod,mv,pwd,rm} /bin
mv -v /usr/bin/{rmdir,stty,sync,true,uname,test,[} /bin
mv -v /usr/bin/chroot /usr/sbin
mv -v /usr/share/man/man1/chroot.1 /usr/share/man/man8/chroot.8
sed -i s/\"1\"/\"8\"/1 /usr/share/man/man8/chroot.8

LFS-Bootscripts 程序包中的一些脚本依赖 headsleep, 和 nice 。由于 /usr 在引导的早期可能不可用,这些二进制文件需要在根分区下:

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

6.26.2. Coreutils 的内容

安装的程序: [, base64, basename, cat, chcon, 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, id, install, join, link, ln, logname, ls, md5sum, mkdir, mkfifo, mknod, mktemp, mv, nice, nl, nohup, nproc, numfmt, od, paste, pathchk, pinky, pr, printenv, printf, ptx, pwd, readlink, realpath, rm, rmdir, runcon, seq, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, shred, shuf, sleep, sort, split, stat, stdbuf, stty, sum, sync, tac, tail, tee, test, timeout, touch, tr, true, truncate, tsort, tty, uname, unexpand, uniq, unlink, users, vdir, wc, who, whoami 和 yes
安装的库: libstdbuf.so
安装的目录: /usr/libexec/coreutils

简述

base64

根据 base64 (RFC 3548) 规格编码和解码数据

basename

从一个文件名剥离任意路径和一个给定后缀

cat

连接文件到标准输出

chcon

改变文件和目录的安全内容

chgrp

改变文件和目录的组持有人

chmod

改变每个文件的许可为给定模式;模式可以为要进行的改变的符号表达或表示新许可的八进制数

chown

改变文件和目录的用户和/或组持有人

chroot

以一个指定的目录作为 / 目录并运行程序

cksum

打印 Cyclic Redundancy Check (CRC) 指纹码和每个给定文件的字节数

comm

比较两个排序好的文件,在三栏中输出不同和相同的行

cp

复制文件

csplit

依据给定的样式或行号将给定的文件拆分为数个新文件,输出每个新文件的字节数

cut

根据给定的区域或位置选择并打印部分行

date

以给定格式显示现在时间或设置系统日期

dd

使用给定的块大小和计数复制一个文件,可以同时进行转换

df

在所有挂载的文件系统上报告硬盘可用 (和已用) 空间总量,或仅在包含给定文件的文件系统上显示

dir

列出每个给定目录的内容 (与 ls 命令相同)

dircolors

输出命令来设置 LS_COLOR 环境变量以改变 ls 使用的色彩方案

dirname

从一个文件名剥离非目录后缀

du

报告当前目录、每个给定目录 (包括所有子目录) 或 每个给定文件所使用的硬盘空间

echo

显示给定的字符串

env

在一个修改过的环境下运行一个命令

expand

转换 tab 为 space

expr

求表述的值

factor

打印所有给定数的素因数

false

什么都不做;它总返回一个表示失败的状态码

fmt

重新格式化给定文件中的段落

fold

对给定文件中的内容自动换行

groups

报告某一用户的组身份

head

打印每一个给定文件的前十行 (或给定的行数)

hostid

报告 host 的数值编号 (以十六进制)

id

报告当前或指定用户的有效用户 ID ,组 ID ,和组成员

install

复制文件,同时设置它们的许可模式、所属用户和组 (可能的话)

join

连接在两个分开的文件有相同连接区域的行

link

以给定名称创建一个到某一文件的硬链接

ln

做文件间的硬链接或软 (符号) 链接

logname

报告当前用户的登录名

ls

列出每个给定目录的内容

md5sum

报告或检查 Message Digest 5 (MD5) 校验值

mkdir

用给定名称创建目录

mkfifo

用给定名称创建一个 First-In, First-Outs (FIFOs), 一个 named pipe 在 UNIX 用语下

mknod

用给定名称创建一个设备节点;一个设备节点是一个字符特殊文件,一个块特殊文件或一个 FIFO

mktemp

以一个安全的方式创建一个临时文件;它在脚本中被使用

mv

移动或重命名文件或目录

nice

以修改过的调度优先级运行一个程序

nl

给指定文件中的行编号

nohup

运行一个不会被挂起的命令,它的输出会被重定向到一个日志文件

nproc

打印一个进程中可用的处理器的总数

numfmt

Converts numbers to or from human-readable strings

od

将文件转储为八进制或其他格式

paste

合并给定的文件,并列地连接顺序上相一致的行,以制表符分隔

pathchk

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

pinky

是一个轻便的 finger 客户端;它报告给定用户的一些信息

pr

标页和分栏一个文件并打印

printenv

输出环境变量

printf

根据给定的格式打印给定的参数,与 C 中的 printf 函数相近

ptx

按给定文件的内容,对每个出现在文中的关键字关键词制作一个置换索引

pwd

报告当前工作目录的名称

readlink

报告给定符号链接的值

realpath

打印解析过的路径

rm

移除文件或目录

rmdir

移除空目录

runcon

按给定的安全内容运行一个命令

seq

在给定值域内按给定增量打印一个数列

sha1sum

打印或检查 160 位 ecure Hash Algorithm 1 (SHA1) 校验值

sha224sum

打印或检查 224 位 Secure Hash Algorithm 校验值

sha256sum

打印或检查 256 位 Secure Hash Algorithm 校验值

sha384sum

打印或检查 384 位 Secure Hash Algorithm 校验值

sha512sum

打印或检查 512 位 Secure Hash Algorithm 校验值

shred

以复杂的样式重复重写给定的文件,使数据难以修复

shuf

将一个文本中的行打乱

sleep

暂停给定的时间

sort

排序给定文件中的行

split

将给定文件按大小或行数分割为碎片

stat

显示文件或文件系统数据

stdbuf

按为其标准流更改的缓冲运算运行命令

stty

设置或报告终端行设置

sum

为每个文件打印校验和和块计数

sync

刷新文件系统缓冲区;它会强制改变磁盘的数据块并更新超级块

tac

反向拼接给定文件

tail

打印每个文件的最后十行 (或给定的行数)

tee

读取标准输入并将其同时写入标准输出和给定文件

test

比较值并检查文件类型

timeout

在限定时间内运行一个命令

touch

改变文件的时间戳,设置给定文件的使用和修改时间为当前时间;不存在的文件以 0 长度创建

tr

转化,获取并删除标准输入中的给定文件

true

什么也不做;它总返回一个表示成功的状态码

truncate

缩小或扩大一个文件到给定大小

tsort

进行一次拓扑排序;它根据给定文件中的局部顺序写出一个完全排序的列表

tty

报告连接至标准输入的终端文件名

uname

报告系统信息

unexpand

转换 space 到 tab

uniq

除去完全相同的行直到仅剩其中一行

unlink

移除给定文件

users

报告当前正登陆上的用户名称

vdir

ls -l 相同

wc

报告每个给定文件的行数,词数和字节数,当给定多个文件时还包括总行数

who

报告谁正登陆着

whoami

报告与当前有效的用户 ID 关联的用户名称

yes

重复输出 y 或任一给定字符串直到被结束

libstdbuf.so

stdbuf 所用到的库