《Linux From Scratch》第三部分:构建LFS系统 第六章:安装基本的系统软件- 6.29. Coreutils-8.23...

2023-11-18

             Coreutils 软件包包含用于显示和设置基本系统特性的工具。

大概编译时间: 2.5 SBU
需要磁盘空间: 193 MB

6.29.1. 安装 Coreutils

POSIX 要求 Coreutils 中的程序即使在多字节语言环境也能正确识别字符边界。下面的补丁修复这个不兼容性以及其它一些和国际化相关的 错误。之后确保 Makefile.in 文件的时间戳比其它所有文件都晚以免出现 make 错误:

patch -Np1 -i ../coreutils-8.23-i18n-1.patch 
touch Makefile.in
[Note]

注意

之前在这个补丁中发现了很多错误。当向 Coreutils 维护者报告新错误的时候,请先检查没有该补丁是否可以重现该错误。

现在准备编译 Coreutils:

FORCE_UNSAFE_CONFIGURE=1 ./configure \
            --prefix=/usr            \
            --enable-no-install-program=kill,uptime

配置选项的含义:

FORCE_UNSAFE_CONFIGURE=1

该环境变量允许以 root 用户权限编译软件包。

--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 . 

现在运行测试。确保 su 环境中的 PATH 环境变量包含了 /tools/bin。

su nobody -s /bin/bash \
          -c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check"

已知在虚拟主控台中 stty-pairs 测试会失败,而在 X 终端中则能通过。

移除临时组:

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} /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

BLFS 以及上游中的一些软件包希望如下的程序放在 /bin 中,确保把它们放到了那里:

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

6.29.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(RFC3548)规范编码和解码数据

basename

从文件名称中抽取路径和后缀

cat

将文件连接到标准输出

chcon

改变文件和目录的安全上下文

chgrp

更改文件和目录的组所有者

chmod

更改每个文件为指定模式的权限;模式可以是要实现更改的符号表示 或者表示新权限的十进制数字

chown

更改文件和目录的用户和/或组所有者

chroot

使用指定目录作为 / 目录运行命令

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

输出指定文件的前十行(或指定数目行数)

hostid

报告主机的数字标识符(以十六进制)

id

报告当前用户或指定用户的有效 用户 ID、组 ID 以及组成员

install

复制文件的同时设置权限模式,如果可以的话包括用户和组

join

从两个单独的文件中连接有相同域的行

link

用指定的名称创建到一个文件的硬链接

ln

在文件之间建立硬链接或软(符号)链接

logname

报告当前用户的登录名

ls

列出给定目录的内容

md5sum

报告或检查消息摘要 5(MD5) 校验码

mkdir

用指定的名称新建目录

mkfifo

用指定的名称在 UNIX 中创建先进先出(FIFOs) 的 “命名管道”

mknod

用指定的名称创建设备结点;设备结点是一个特殊字符文件、特殊块文件或先进先出

mktemp

以安全方式新建临时文件;在脚本中使用

mv

移动或重命名文件或目录

nice

以更改后的调度优先级运行程序

nl

标记指定文件的行号

nohup

以不能被挂起方式运行命令,输出重定向到一个日志文件

nproc

输出进程可用的处理单元数目

numfmt

转换数字为人可读字符串或者相反

od

以十进制或其他格式转储文件

paste

合并指定文件,用 tab 字符分隔,以行并列方式连续合并

pathchk

检查文件名是否可用

pinky

轻量级的 finger 客户端;报告指定用户的信息

pr

对文件进行分页分行用于打印

printenv

输出环境

printf

根据指定格式打印指定参数,类似于 C 语言的 printf 函数

ptx

用文中的每个关键字,根据文件的内容中建立重排索引

pwd

报告当前工作目录的名称

readlink

报告指定符号链接的值

realpath

打印解释后路径

rm

删除文件或目录

rmdir

如果目录为空则删除

runcon

以指定安全上下文运行命令

seq

用指定的范围和增长步长输出一序列数字

sha1sum

打印或检查 160-bit 安全哈希算法1(SHA1) 校验码

sha224sum

打印或检查 224-bit 安全哈希算法校验码

sha256sum

打印或检查 256-bit 安全哈希算法校验码

sha384sum

打印或检查 384-bit 安全哈希算法校验码

sha512sum

打印或检查 512-bit 安全哈希算法校验码

shred

用复杂形式多次重写指定文件,使得难以恢复其中的数据

shuf

打乱文本行

sleep

暂停指定时间

sort

排序给定文件的行

split

根据大小或行数分割文件为多个块

stat

显示文件或文件系统状态

stdbuf

用改变后的缓冲操作在标准流上运行命令

stty

设置或报告终端行设置

sum

打印指定文件的校验码和块数目

sync

清空文件系统缓存;强制更改块到磁盘并更新超级块

tac

反向输出给定文件

tail

输出每个给定文件的最后十行(或给定数目的行)

tee

从标准输入读入并写出到标准输出和指定文件

test

比较值并检查文件类型

timeout

有限时间内运行命令

touch

更改文件时间戳,设置指定文件的访问和修改时间为当前时间; 如果文件不存在则创建空文件

tr

从标准输入转换、压缩并删除指定字符

true

不做任何事情,总是成功;总是以表示成功的状态码退出

truncate

压缩或扩展文件到特定大小

tsort

进行拓扑排序;根据指定文件的部分排序写出完全有序列表

tty

报告链接到标准输入的终端文件名称

uname

报告系统信息

unexpand

转换空格为 tab 键

uniq

忽略所有除非出现连续相同的行

unlink

移除指定文件

users

报告当前登录的用户名

vdir

ls -l 相同

wc

报告给定文件的行数、单词数和字节数,以及给定多个文件时总的行数

who

报告谁登录了

whoami

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

yes

重复输出 “y” 或指定的字符串直到被杀死

libstdbuf

stdbuf 使用的库

创建者:Gerard Beekmans
编辑者:Matthew Burgess 和 Armin K.
翻译团队:LCTT
译者/校对:ictlyh,wxy
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《Linux From Scratch》第三部分:构建LFS系统 第六章:安装基本的系统软件- 6.29. Coreutils-8.23... 的相关文章

  • 红帽7.9部署telnet服务

    升级ssh 为预防万一提前配置telnet服务 安装软件包 yum install telnet server yum install xinetd xinetd加入开机自启 systemctl enable xinetd service
  • 图 - Java实现无向带权图的邻接矩阵表示法

    图 Java实现无向带权图的邻接矩阵表示法 1 图 1 1 图的介绍 图 Graph 是一种复杂的非线性表结构 图中的元素我们就叫做顶点 vertex 图中的一个顶点可以与任意其他顶点建立连接关系 我们把这种建立的关系叫做边 edge 跟顶
  • 4Sum

    Given an array S of n integers are there elements a b c and d in S such that a b c d target Find all unique quadruplets
  • InfoQ视频直播分享报名:前贝尔实验室、Oracle架构师为你在线揭秘分布式平台内核...

    报名方式 关注InfoQ微信公众号 ID infoqchina 回复 InfoQ 即可观看在线直播技术分享 分享地点 u0026amp 时间 InfoQ直播微课堂将在熊猫 TV 网站播出 看腻了卖肉的女主播 来看看QCon 的明星讲师如何
  • 操作系统笔记六(文件管理)

    1 文件逻辑结构 1 1逻辑结构的文件类型 分类 有结构文件 例如 PNG文件 无结构文件 1 2顺序文件 1 3索引文件 2 辅存的存储空间分配 2 1分配方式 连续分配 直接分配连续的存储空间 链接分配 隐式链接 在盘块内指定下一个盘块
  • 03LinuxC线程学习之线程共享和非共享

    1 线程共享和非共享 1 1 线程共享资源 1 文件描述符表 由于线程间共享进程间的内容 而文件描述符表在主线程的PCB当中 各个线程可以直接去请求访问 所以线程间通信就不需要像进程那样通过管道这些方式通信 2 每种信号的处理方式 即当某个
  • Linux学习--CentOS7.5

    CentOS7命令大全 Linux系统简介 Unix Linux发展史 Linux目录结构 树形结构 查看 切换以及创建目录 文本内容操作 grep工具 关机和重启 Linux命令 基本用法 ls list 使用通配符 mkdir 别名 g
  • Visual studio 2005 hangs on startup AppHangXProcB1 svchost devenv.exe svchost.exe:{2a811bb2-303b-48b...

    This problem has been torturing me for the whole afternoon and after searching on the web for a long time I finally get
  • CRC校验(二)

    CRC校验 二 参考 https blog csdn net liyuanbhu article details 7882789 https www cnblogs com esestt archive 2007 08 09 848856
  • Windows驱动开发(一)第一个驱动程序

    首先我们需要了解 在操作系统中 是分两种权限的 一种是内核态 我们也称为0环 一种是用户态 称之为3环 而在我们的电脑中 驱动程序是运行在内核态的 这意味着和操作系统内核是在同一权限的 而普通的应用程序的权限是最低的 高权限谁不想拥有呢 因
  • 【操作系统】王道考研 p42 段页式管理方式

    段页式管理方式 知识总览 分段 分页管理方式中最大的优缺点 关于段式管理会产生外部碎片 ps 分段管理中产生的外部碎片也可以用 紧凑 来解决 只是需要付出较大的时间代价 分段 分页 段页式管理 示意图 先分段 后分页 段页式管理的逻辑地址结
  • 区块链中的哈希算法

    区块链中的密码学 密码学在区块链中的应用主要有两个 哈希算法与非对称加密算法 这次主要对哈希算法进行详细的说明 哈希算法 哈希算法的特点有 1 输入可以为任意大小的字符串 2 产生固定大小的输出 3 可以在合理的时间内算出输出值 若要满足密
  • 【试题】排列组合

    在写一个远程的代码 如果本地有M个显示器 远程有N个显示器 M lt N 依据分辨率 显示器刷新频率等要求 需要对远程的N个显示器进行最佳分辨率修改 之后 需要从N个远程显示器中选择M个 跟本地显示器进行一对一的匹配 即从 A N M N
  • C#实现FTP文件夹下载功能【转载】

    网上有很多FTP单个文件下载的方法 前段时间需要用到一个FTP文件夹下载的功能 于是找了下网上的相关资料结合MSDN实现了一段FTP文件夹下载的代码 实现的思路主要是通过遍历获得文件夹下的所有文件 当然 文件夹下可能仍然存在文件夹 这样就需
  • 插入排序超详解释,一看就懂

    目录 一 插入排序的相关概念 1 基本思想 2 基本操作 有序插入 二 插入排序的种类 三 直接插入排序 1 直接插入排序的过程 顺序查找法查找插入位置 2 使用 哨兵 直接插入排序 四 直接插入排序算法描述 五 折半插入排序 1 查找插入
  • 索引优化之Explain 及慢查询日志

    索引 本质是数据结构 简单理解为 排好序的快速查找数据结构 以索引文件的形式存储在磁盘中 目的 提高数据查询的效率 优化查询性能 就像书的目录一样 优势 提高检索效率 降低IO成本 排好序的表 降低CPU的消耗劣势 索引实际也是一张表 该表
  • 数组实现循环队列(增设队列大小size)

    目录 一 前言 1 如何实现循环 2 如何判断队列为空 3 如何判断队列为满 二 循环队列的结构定义 三 循环队列的创建及其初始化 四 入队 五 出队 六 取队头元素 七 取队尾元素 八 循环队列判空 九 循环队列判满 十 循环队列销毁 一
  • C++ AVL树(四种旋转,插入)

    C AVL树 四种旋转 插入 一 AVL树的概念及性质 二 我们要实现的大致框架 1 AVL树的节点定义 2 AVL树的大致框架 三 插入 1 插入逻辑跟BST相同的那一部分 2 修改平衡因子
  • 高精度运算合集,加减乘除,快速幂,详细代码,OJ链接

    文章目录 零 前言 一 加法 高精度加法步骤 P1601 A B 二 减法 高精度减法步骤
  • 最大流-Dinic算法,原理详解,四大优化,详细代码

    文章目录 零 前言 一 概念回顾 可略过 1 1流网络 1 2流 1 3最大流 1 4残留网络 1 5增广路

随机推荐

  • 智能时代悄然到来刷脸支付逐渐成为潮流

    随着人脸识别 人工智能 物联网 大数据等前沿技术的迅速发展 智能时代已悄然到来 刷脸支付也逐渐成为一种潮流 如今 刷脸支付愈发常见 除了乘车刷脸 看病刷脸外 值机 安检 登机也都可以刷脸了 机场不用排长队 不用身份证 仅需一张脸即可登机的刷
  • rabbitmq web界面报错 Access refused

    赋予权限就好了 rabbitmqctl set permissions p 当前登录账户的账号
  • 态势感知与态势理解

    几个星期前 我与我的一个机构同事碰面 讨论了最新的备受瞩目的袭击事件 他向我提到了一个新词 态势理解 在USB提案中做了8个月的工作后 我对催吐流行语并不陌生 这个词立即引起了人们的注意 但是由于我一直在讨论几天 所以这个词本身正在赢得信誉
  • 【MLOps】第 2 章 : MLOps中的人

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 备战2023蓝桥国赛-传纸条

    题目描述 解析 这道题想了我好久 一开始我是想假如只走一条路线 从 1 1 走到 m n 这种问题该怎么解决呢 针对这种问题我是设了dp k i j 表示走了k步到达 i j 的好心程度之和的最大值 然后根据这个来写出转移方程来计算 后面就
  • Nginx 队列双向链表结构 ngx_quene_t

    队列链表结构 队列双向循环链表实现文件 文件 src core ngx queue h c 在 Nginx 的队列实现中 实质就是具有头节点的双向循环链表 这里的双向链表中的节点是没有数据区的 只有两个指向节点的指针 需注意的是队列链表的内
  • JVM安全退出(如何优雅的关闭java服务)

    https tech imdada cn 2017 06 18 jvm safe exit utm source tuicool utm medium referral 背景 用户 货都到了 购物车里怎么还有刚买的东西 what 产品 有用
  • 如何助力金融贷款企业实现精准营销获客

    无论是哪个行业 吸引客户都是核心 许多公司的线下渠道面临着许多障碍 以至于他们不得不采用在线客户获取方法 受影响最大的行业之一是贷款行业 如何获得准确的贷款客户资源 如何赢得客户已经成为企业的一大痛点 过去 信贷员经常使用电话营销 本地促销
  • IP(OSPF综合实验)

    一 实验 1 R4为ISP 其上只能配置IP地址 R4与其他所有直连设备间使用公有IP 2 R3 R5 6 7为MGRE环境 R3为中心站点 3 整个OSPF环境IP地址自定义 4 所有设备均可访问R4的环回 5 减少LSA的更新量 优化
  • apache Commons-beanutils的使用

    1 背景 在java开发过程中 经常会与javabean打交道 像Entity pojo vo dto等等 java应用非常讲究分层架构 因此在各层之间bean的传输与转换非常的繁琐 比如 Student stu new Student s
  • 基于OpenCV的双目测距系统实现

    基于OpenCV的双目测距系统实现 The BinocularMeasure System Based on OpenCV Abstract This passage mainly describes how to measure dist
  • nginx安装配置

    1 nginx下载 http nginx org download 选择对应版本的nginx下载 这里选择 nginx 1 21 6 tar gz 2 环境准备 必备环境 sudo yum install y gcc c 必须下载 3 个依
  • mysql学习笔记(6)_存储过程

    原本觉得掌握最基本的语法就行了 但发现老师最近又提到了存储过程 我觉得有必要学习整理一下 以下是我的简单笔记 存储过程的含义以及优点 含义 一组预先编译号的sql语句的集合 理解成批处理语句 优点 1 提高代码的重用性 2 简化操作 3 减
  • qq机器人如何滑动验证码验证TxCaptchaHelper

    当我们再运行QQ机器人时出现 一下信息 提示需要滑动模块验证 复制上中的url 在浏览器打开 点击开始验证 出现验证图片 打开开发者控制台 一般浏览器快捷键为 F12 切换到 网络 拖到滑块 验证成功后 会出现 在 预览 中会看到ticke
  • 16-2_Qt 5.9 C++开发指南_使用样式表Qss自定义界面

    进行本篇介绍学习前 请先参考链接01 1 Qt工程实践 Qt样式表Qss 后再结合本篇进行融合学习如何使用样式表定义界面 文章目录 1 Qt样式表 2 Qt样式表句法 2 1 一般句法格式 2 2 选择器 selector 2 3 子控件
  • [Unity][Aniamtor&Animation]动画状态机设置自定义脚本StateMachineBehaviour

    对状态机设置自定义脚本StateMachineBehaviour 这种脚本能够实现什么 优点 通过Animator的状态机就可以实现 敌人AI NPC AI 可以在对应状态机 的动画进行 播放 的时候 生成 特效 音效 以及特定的物品 例如
  • Linux源码编译开启cgroup blk限制io性能

    编译选项 内核5 9 General Setup gt Control Group support gt io controller Enable the block layer gt Block layer bio throttling
  • mysql基本数据类型

    概述 要想学好mysql 了解其支持的基本数据类型以及内部原理是极为重要的 只有这样 我们才能根据不同的业务要求来选择不同的数据类型 实现最佳的存储效果和查询性能 因而本文就着重总结一下mysql支持的数据类型以及内部的存储原理 总体来说
  • Learning Spatio-Temporal Representation with Pseudo-3D Residual Networks

    Abstract 卷积神经网络 cnn 被认为是一类有效的图像识别模型 然而 当利用CNN学习时空视频表示时 这并非不平凡 一些研究表明 执行3D卷积是一种捕获视频中时空维度的有益方法 然而 从头开始开发非常深的3d cnn会导致昂贵的计算
  • 《Linux From Scratch》第三部分:构建LFS系统 第六章:安装基本的系统软件- 6.29. Coreutils-8.23...

    Coreutils 软件包包含用于显示和设置基本系统特性的工具 大概编译时间 2 5 SBU 需要磁盘空间 193 MB 6 29 1 安装 Coreutils POSIX 要求 Coreutils 中的程序即使在多字节语言环境也能正确识别