推定構築時間: 0.9 SBU 推定必要ディスクスペース 69 MB |
Coreutils パッケージは基本的なシェルユーティリティの一揃い全部を含みます。
インストールされるプログラム: 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 は以下のパッケージに依存します: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed.
普通、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 |
第 5 章では、Coreutils からの su プログラムは root 権限を必要としたのでインストールされませんでした。 テストスイーツのためにそのプログラムがすぐに必要となります。ですので、今それをインストールして問題を回避しましょう。
make install-root |
このパッケージは、正しく構築されたのを確認するために多くのチェックができるテストスイートを持っています。 しかし、この特別のテストスイーツは LFS の構築の早い段階では存在しない非 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 |