8.57. Coreutils-9.4

Пакет Coreutils содержит основные утилиты, необходимые каждой операционной системе.

Приблизительное время сборки: 1 SBU
Требуемое дисковое пространство: 175 MB

8.57.1. Установка пакета Coreutils

Стандарт POSIX требует, чтобы программы пакета Coreutils правильно распознавали символы даже в случае, если используются многобайтовые локали. Следующий патч исправляет несоответствие этому требованию, а также другие ошибки, касающиеся интернационализации:

patch -Np1 -i ../coreutils-9.4-i18n-1.patch
[Примечание]

Примечание

В этом патче было обнаружено много ошибок. Сообщая о новых ошибках разработчикам Coreutils, сначала проверьте, воспроизводятся ли эти ошибки без этого исправления.

Исправьте уязвимость в утилите split:

sed -e '/n_out += n_hold/,+4 s|.*bufsize.*|//&|' \
    -i src/split.c

Теперь подготовьте Coreutils к компиляции:

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

Значение параметров настройки:

autoreconf

Патч для интернационализации изменил систему сборки пакета, поэтому файлы конфигурации необходимо сгенерировать заново.

FORCE_UNSAFE_CONFIGURE=1

Эта переменная среды позволяет собрать пакет от имени пользователя root.

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

Назначение этого параметра — запретить Coreutils устанавливать программы, которые будут установлены другими пакетами.

Скомпилируйте пакет:

make

Если вы не планируете запускать набор тестов, перейдите к разделу «Установка пакета».

Теперь набор тестов готов к запуску. Сначала запустите тесты, предназначенные для запуска от имени пользователя root:

make NON_ROOT_USERNAME=tester check-root

Мы собираемся выполнить остальные тесты от имени пользователя tester. Некоторые тесты требуют, чтобы пользователь был членом более чем одной группы. Чтобы эти тесты не были пропущены, добавьте временную группу и включите в неё пользователя tester:

groupadd -g 102 dummy -U tester

Исправьте некоторые разрешения, чтобы пользователь без полномочий root мог компилировать и запускать тесты:

chown -R tester . 

Теперь запустите тесты:

su tester -c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check"

Удалить временную группу:

groupdel dummy

Установите пакет:

make install

Переместите программы туда, где они должны быть в соответствие со спецификациями FHS:

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"/' /usr/share/man/man8/chroot.8

8.57.2. Содержимое пакета Coreutils

Установленные программы: [, b2sum, base32, base64, basename, basenc, 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 (in /usr/libexec/coreutils)
Созданные каталоги: /usr/libexec/coreutils

Краткое описание

[

Это команда /usr/bin/[, которая является синонимом команды test

base32

Кодирует и декодирует данные в соответствии со спецификацией base32 (RFC 4648)

base64

Кодирует и декодирует данные в соответствии со спецификацией base64 (RFC 4648)

b2sum

Выводит или проверяет контрольные суммы BLAKE2 (512-битные)

basename

Удаляет любой путь и заданный суффикс из имени файла

basenc

Кодирует или декодирует данные с использованием различных алгоритмов

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

Конвертирует символы табуляции в пробелы

expr

Вычисляет выражения

factor

Выводит простые множители указанных целых чисел

false

Ничего не делает, указывает на неудачу; всегда завершается с кодом состояния, указывающим на сбой

fmt

Форматирует абзацы в указанных файлах

fold

Выполняет перенос строк в указанных файлах

groups

Сообщает о принадлежности пользователя к группам

head

Выводит первые десять строк (или заданное количество строк) каждого заданного файла.

hostid

Выводит числовой идентификатор хоста (в шестнадцатеричном формате)

id

Выводит действующий идентификатор пользователя, идентификатор группы и принадлежность к группам для текущего или для указанного пользователя

install

Копирует файлы, одновременно устанавливая для них права доступа, и, если возможно, устанавливая для них владельца и группу

join

Объединяет строки, которые имеют идентичные объединяемые поля в двух различных файлах

link

Создает жесткую ссылку (с указанным именем) на файл

ln

Создает жесткие или мягкие (символические) ссылки между файлами

logname

Сообщает имя входа текущего пользователя

ls

Выводит список содержимого для каждого заданного каталога

md5sum

Выводит или проверяет контрольные суммы Message Digest 5 (MD5)

mkdir

Создает директории с указанными именами

mkfifo

Создает "именованный канал" "первым пришел — первым ушел" (FIFO), в нотации UNIX с заданными именами

mknod

Создает узлы устройств с заданными именами; узел устройства представляет собой специальный символьный файл, специальный файл блока или FIFO.

mktemp

Создает временные файлы безопасным способом; используется в скриптах

mv

Перемещает или переименовывает файлы или каталоги

nice

Запускает программу с измененным приоритетом исполнения

nl

Нумерует строки в указанных файлах

nohup

Запускает команду, невосприимчивую к зависаниям, а ее вывод перенаправляется в файл журнала

nproc

Выводит количество дочерних процессов, доступных для процесса.

numfmt

Преобразует числа в или из удобочитаемых строк

od

Вывод дампа файла в восьмеричном и других форматах

paste

Объединяет указанные файлы, последовательно соединяя соответствующие строки рядом друг с другом, разделенные символами табуляции.

pathchk

Проверяет, являются ли имена файлов допустимыми или переносимыми

pinky

Легковесный клиент типа finger; выдает некоторую информацию о заданных пользователях

pr

Разбивает файлы для печати на страницы и столбцы

printenv

Выдает значения переменных окружения

printf

Выводит аргументы в соответствии с заданным форматом, подобно функции C printf.

ptx

Создает перестановочный индекс по содержимому указанных файлов с каждым ключевым словом в своем контексте

pwd

Сообщает имя текущего рабочего каталога

readlink

Выдает значение указанной символической ссылки

realpath

Возвращает приведенное к обычному виду полное имя файла

rm

Удаляет файлы или каталоги

rmdir

Удаляет каталоги, если они пусты

runcon

Запускает команду с указанным контекстом безопасности

seq

Выдает последовательность чисел из указанного диапазона с указанным значением приращения

sha1sum

Выводит или проверяет контрольные суммы 160-битного алгоритма безопасного хеширования 1 (SHA1)

sha224sum

Выводит или проверяет контрольные суммы 224-битного алгоритма безопасного хеширования

sha256sum

Выводит или проверяет контрольные суммы 256-битного алгоритма безопасного хеширования

sha384sum

Выводит или проверяет контрольные суммы 384-битного алгоритма безопасного хеширования

sha512sum

Выводит или проверяет контрольные суммы 512-битного алгоритма безопасного хеширования

shred

Многократно перезаписывает заданные файлы сложными шаблонами, что затрудняет восстановление данных.

shuf

Перемешивает строки текста

sleep

Делает паузу на заданный промежуток времени

sort

Сортирует строки в указанных файлах

split

Разбивает заданный файл на несколько частей в соответствии с указанным размером или количеством строк

stat

Отображает статус файла или файловой системы

stdbuf

Запускает команды с измененными операциями буферизации для своих стандартных потоков.

stty

Устанавливает или сообщает настройки терминала

sum

Выводит контрольную сумму и количество блоков для каждого заданного файла

sync

Сбрасывает буферы файловой системы; он принудительно записывает измененные блоки на диск и обновляет суперблок

tac

Конкатенация содержимого указанных файлов в обратном порядке

tail

Выводит последние десять строк (или заданное количество строк) каждого указанного файла

tee

Считывает данные со стандартного потока ввода, записывает как в стандартный вывод, так и в указанные файлы

test

Сравнивает значения и проверяет типы файловs

timeout

Запускает команду с ограничением по времени

touch

Изменяет временные метки файлов, устанавливая время доступа и модификации данных файлов на текущее время; несуществующие файлы создаются с нулевой длиной

tr

Переводит, сжимает и удаляет заданные символы из стандартного потока

true

Ничего не делает, указывает на успешное выполнение операции; он всегда завершается с кодом состояния, указывающим на успех

truncate

Сжимает или расширяет файл до указанного размера

tsort

Выполняет топологическую сортировку; записывает полностью упорядоченный список в соответствии с частичным упорядочением в данном файле

tty

Сообщает имя файла терминала, подключенного к стандартному вводу.

uname

Сообщает системную информацию

unexpand

Преобразует пробелы в табуляции

uniq

Удаляет все повторяющиеся копии уже имеющихся строк, кроме одной

unlink

Удаляет указанный файл

users

Сообщает имена пользователей, вошедших в систему в данный момент

vdir

То же, что ls -l

wc

Сообщает количество строк, слов и байт для каждого заданного файла, а также общее количество строк, если указано более одного файла

who

Сообщает, кто вошел в систему

whoami

Сообщает имя пользователя, соответствующее идентификатору текущего пользователя

yes

Повторно выводит y или указанную строку, до тех пор, пока команда не будет завершена с помощью kill

libstdbuf

Библиотека, используемая командой stdbuf