Установка Coreutils-5.0

Ожидаемое время сборки: 0.9 SBU
Ожидаемое место на диске: 69 MB

Описание Coreutils

Пакет Coreutils содержит ряд основных утилит для shell.

Устанавливаемые программы: 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, kill, link, ln, logname, ls, md5sum, mkdir, mkfifo, mknod, mv, nice, nl, nohup, od, paste, pathchk, pinky, pr, printenv, printf, ptx, pwd, readlink, rm, rmdir, seq, sha1sum, shred, sleep, sort, split, stat, stty, su, sum, sync, tac, tail, tee, test, touch, tr, true, tsort, tty, uname, unexpand, uniq, unlink, uptime, users, vdir, wc, who, whoami и yes

Зависимости установки Coreutils

Coreutils зависит от: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed.

Установка Coreutils

Нармальное функционирование uname иногда нарушается, тогда параметр -p всегда возвращает "unknown". Следующий патч исправляет это для архитектуры Intel:

patch -Np1 -i ../coreutils-5.0-uname.patch

Мы не хотим использовать Coreutils для установки программы hostname потому, что более новая версия содержится в Net-tools. Отключим эту установку патчем:

patch -Np1 -i ../coreutils-5.0-hostname-2.patch

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

./configure --prefix=/usr

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

make

Программа su из Coreutils не была установлена в Главе 5 потому, что ей нужны привелегии root для этого. Мы собираемся установить ее, поскольку она нужна для тестирования. Установим ее командой:

make install-root

Этот пакет поддерживает тестирование для определения корректности сборки. Тем не менее, этот специфический тест использует непревилигированных пользователей и группы, которые пока не определены в нашей простой системе. Поэтому мы создадим фиктивного пользователя и две фиктивных группы для корректной работы тестов. Если вы не хотите запускать тестирование, то переходите к "установке пакета". Следующие команды подготовят систему к тестированию. Создадим фиктивных пользователя и группы:

echo "dummy1:x:1000" >> /etc/group
echo "dummy2:x:1001:dummy" >> /etc/group
echo "dummy:x:1000:1000:::/bin/bash" >> /etc/passwd

Следующий тест проверит запуск от имени root:

make check-root

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

su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"

Удалим фиктивные группы и пользователя:

sed -i.bak '/dummy/d' /etc/passwd /etc/group

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

make install

И переместим некоторые программы в их правильное место:

mv /usr/bin/{basename,cat,chgrp,chmod,chown,cp,dd,df} /bin
mv /usr/bin/{dir,dircolors,du,date,echo,false,head} /bin
mv /usr/bin/{install,ln,ls,mkdir,mkfifo,mknod,mv,pwd} /bin
mv /usr/bin/{rm,rmdir,shred,sync,sleep,stty,su,test} /bin
mv /usr/bin/{touch,true,uname,vdir} /bin
mv /usr/bin/chroot /usr/sbin

И, наконец, создадим необходимые ссылки:

ln -s test /bin/[
ln -s ../../bin/install /usr/bin