天天看點

《Linux From Scratch》第三部分:建構LFS系統 第六章:安裝基本的系統軟體- 6.29. Coreutils-8.23

             Coreutils 軟體包包含用于顯示和設定基本系統特性的工具。

大概編譯時間:

2.5 SBU

需要磁盤空間:

193 MB

POSIX 要求 Coreutils 中的程式即使在多位元組語言環境也能正确識别字元邊界。下面的更新檔修複這個不相容性以及其它一些和國際化相關的 錯誤。之後確定

<code>Makefile.in</code> 檔案的時間戳比其它所有檔案都晚以免出現

make 錯誤:

《Linux From Scratch》第三部分:建構LFS系統 第六章:安裝基本的系統軟體- 6.29. Coreutils-8.23

之前在這個更新檔中發現了很多錯誤。當向 Coreutils 維護者報告新錯誤的時候,請先檢查沒有該更新檔是否可以重制該錯誤。

現在準備編譯 Coreutils:

配置選項的含義:

<dl></dl>

<dt></dt>

<code>FORCE_UNSAFE_CONFIGURE=1</code>

<dd></dd>

該環境變量允許以 root 使用者權限編譯軟體包。

<code>--enable-no-install-program=kill,uptime</code>

該選項的目的是防止 Coreutils 安裝其它軟體包後面會安裝的二進制包。

編譯軟體包:

如果不運作測試套件的話跳到 “安裝軟體包”

現在可以運作測試套件了。首先,運作需要以 <code>root</code>

使用者運作的測試:

我們會以 <code>nobody</code> 使用者運作剩下的測試。但是,一些測試要求使用者屬于多個組。由于不跳過這些測試,我們會添加一個臨時的組并添加使用者

<code>nobody</code> 作為它的成員:

修複一些權限問題以便非 root 使用者可以編譯和運作測試:

現在運作測試。確定 <code>su</code> 環境中的 PATH 環境變量包含了 /tools/bin。

已知在虛拟主要台中 stty-pairs 測試會失敗,而在 X 終端中則能通過。

移除臨時組:

安裝軟體包:

移動程式到 FHS 指定的位置:

BLFS 以及上遊中的一些軟體包希望如下的程式放在 <code>/bin</code>

中,確定把它們放到了那裡:

安裝的程式:

[, 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(RFC3548)規範編碼和解碼資料

從檔案名稱中抽取路徑和字尾

将檔案連接配接到标準輸出

改變檔案和目錄的安全上下文

更改檔案和目錄的組所有者

更改每個檔案為指定模式的權限;模式可以是要實作更改的符号表示

或者表示新權限的十進制數字

更改檔案和目錄的使用者和/或組所有者

使用指定目錄作為 <code>/</code>

目錄運作指令

輸出指定檔案的循環備援檢驗(CRC)校驗碼和位元組數目

比較兩個排序後的檔案,以三列輸出不用的行和相同的行

複制檔案

将指定檔案分割為幾個新的檔案,根據指定的模式或者行數分割并

輸出每個新檔案的位元組數

根據指定的域或位置,選擇輸出行的組成

根據指定格式顯示目前時間,或設定系統日期

用給定的塊大小和數目複制檔案,同時可以進行一些轉換

報告所有挂載的檔案系統中可用(和已用)磁盤空間,或隻是

含有指定檔案的檔案系統

列出指定目的的内容(和 ls

指令相同)

輸出設定 <code>LS_COLOR</code> 環境變量的指令,用于更改

ls 使用的顔色模式

從一個檔案名稱中抽取非目錄字尾

報告目前目錄使用的磁盤空間,根據指定的每個檔案夾(包括子檔案夾)

或每個指定的檔案

顯示給定的字元串

在更改後的環境中運作指令

把 tab 鍵轉換為空格

計算表達式

輸出所有指定整數的質數因子

什麼都不做;總是以訓示失敗的狀态碼退出

重新格式化給定檔案中的段落

折疊指定檔案的行

報告一個使用者的組成員

輸出指定檔案的前十行(或指定數目行數)

報告主機的數字辨別符(以十六進制)

報告目前使用者或指定使用者的有效 使用者 ID、組 ID

以及組成員

複制檔案的同時設定權限模式,如果可以的話包括使用者群組

從兩個單獨的檔案中連接配接有相同域的行

用指定的名稱建立到一個檔案的硬連結

在檔案之間建立硬連結或軟(符号)連結

報告目前使用者的登入名

列出給定目錄的内容

報告或檢查消息摘要 5(MD5) 校驗碼

用指定的名稱建立目錄

用指定的名稱在 UNIX 中建立先進先出(FIFOs) 的 “命名管道”

用指定的名稱建立裝置結點;裝置結點是一個特殊字元檔案、特殊塊檔案或先進先出

以安全方式建立臨時檔案;在腳本中使用

移動或重命名檔案或目錄

以更改後的排程優先級運作程式

标記指定檔案的行号

以不能被挂起方式運作指令,輸出重定向到一個日志檔案

輸出程序可用的處理單元數目

轉換數字為人可讀字元串或者相反

以十進制或其他格式轉儲檔案

合并指定檔案,用 tab 字元分隔,以行并列方式連續合并

檢查檔案名是否可用

輕量級的 finger 用戶端;報告指定使用者的資訊

對檔案進行分頁分行用于列印

輸出環境

根據指定格式列印指定參數,類似于 C 語言的 printf 函數

用文中的每個關鍵字,根據檔案的内容中建立重排索引

報告目前工作目錄的名稱

報告指定符号連結的值

列印解釋後路徑

删除檔案或目錄

如果目錄為空則删除

以指定安全上下文運作指令

用指定的範圍和增長步長輸出一序列數字

列印或檢查 160-bit 安全雜湊演算法1(SHA1) 校驗碼

列印或檢查 224-bit 安全雜湊演算法校驗碼

列印或檢查 256-bit 安全雜湊演算法校驗碼

列印或檢查 384-bit 安全雜湊演算法校驗碼

列印或檢查 512-bit 安全雜湊演算法校驗碼

用複雜形式多次重寫指定檔案,使得難以恢複其中的資料

打亂文本行

暫停指定時間

排序給定檔案的行

根據大小或行數分割檔案為多個塊

顯示檔案或檔案系統狀态

用改變後的緩沖操作在标準流上運作指令

設定或報告終端行設定

列印指定檔案的校驗碼和塊數目

清空檔案系統緩存;強制更改塊到磁盤并更新超級塊

反向輸出給定檔案

輸出每個給定檔案的最後十行(或給定數目的行)

從标準輸入讀入并寫出到标準輸出和指定檔案

比較值并檢查檔案類型

有限時間内運作指令

更改檔案時間戳,設定指定檔案的通路和修改時間為目前時間;

如果檔案不存在則建立空檔案

從标準輸入轉換、壓縮并删除指定字元

不做任何事情,總是成功;總是以表示成功的狀态碼退出

壓縮或擴充檔案到特定大小

進行拓撲排序;根據指定檔案的部分排序寫出完全有序清單

報告連結到标準輸入的終端檔案名稱

報告系統資訊

轉換空格為 tab 鍵

忽略所有除非出現連續相同的行

移除指定檔案

報告目前登入的使用者名

和 ls

-l 相同

報告給定檔案的行數、單詞數和位元組數,以及給定多個檔案時總的行數

報告誰登入了

報告和目前有效使用者 ID 關聯的使用者名

重複輸出 “y”

或指定的字元串直到被殺死

stdbuf

使用的庫

建立者:Gerard Beekmans

編輯者:Matthew Burgess 和 Armin K.

翻譯團隊:LCTT

譯者/校對:ictlyh,wxy

<a href="https://linux.cn/lfs/LFS-BOOK-7.7-systemd/chapter06/coreutils.html" target="_blank">原文連結</a>