トップ > 最小システムの構築 > 新システムの作成(後半) >
Coreutils

  

Coreutilsのビルド

Coreutilsは、Linux系OSの基本的なコマンド群です。 cat コマンド、cp コマンド、df コマンドなどが含まれます。

ビルド・インストール前リストの生成

最初に、ビルド・インストール前リストを生成します。


/sources/genprevlist.sh > /dev/null 2>&1

 

ソースファイルの展開

ソースファイルを展開します。


cd /sources
tar xvf coreutils-8.23.tar.xz
cd coreutils-8.23

 

パッチの適用

展開したソースファイルにパッチを適用します。


patch -Np1 < ../coreutils-8.23-i18n-1.patch

 

ソースファイルの修正

展開したソースファイルを修正します。


touch Makefile.in

 

configure

configureを実行します。


FORCE_UNSAFE_CONFIGURE=1 ./configure \
  --prefix=/usr \
  --enable-no-install-program=kill,uptime > ../../logs/configurelog.coreutils 2>&1

 

configureが終了したら、ログファイルに出力された内容を参照し、正常に終了したことを確認します。


cat ../../logs/configurelog.coreutils

 

ビルド

ビルドを実行します。


make

 

ビルドが終了したら、画面に出力された内容を参照し、正常に終了したことを確認します。

テスト その1

テストを行います。 root ユーザでのテストです。


make NON_ROOT_USERNAME=nobody check-root 2>&1 | tee ../../logs/checklog.coreutils-root

 

テストが終了したら、ログファイルに出力された内容を参照し、正常に終了したことを確認します。


sed -e '1,/^Testsuite summary/d' ../../logs/checklog.coreutils-root | grep '^#.*:'

 

なお、筆者の環境(仮想マシン)では以下のように1件のエラーが発生します

# TOTAL: 29
# PASS:  16
# SKIP:  12
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0

テスト その2

さらに、テストを行います。 続いては、nobody ユーザでのテストです。


echo "dummy:x:1000:nobody" >> /etc/group
chown -vR nobody .
su nobody -s /bin/bash -c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check" 2>&1 | tee ../../logs/checklog.coreutils
sed -i -e '/dummy:x:1000:nobody/d' /etc/group

 

テストが終了したら、ログファイルに出力された内容を参照し、正常に終了したことを確認します。


sed -e '1,/^Testsuite summary/d' ../../logs/checklog.coreutils | grep '^#.*:'

 

以下のように、"FAIL" と "ERROR" が 0 (ゼロ) であれば問題ありません

# TOTAL: 564
# PASS:  443
# SKIP:  121
# XFAIL: 0
# FAIL:  0
# XPASS: 0
# ERROR: 0
# TOTAL: 306
# PASS:  294
# SKIP:  12
# XFAIL: 0
# FAIL:  0
# XPASS: 0
# ERROR: 0

インストール

インストールを行います。


make install

 

インストールが終了したら、画面に出力された内容を参照し、正常に終了したことを確認します。

インストール後の追加作業

インストール後の追加作業を行います。 実行ファイルを、本来あるべきディレクトリに移動します。


mv -v /usr/bin/cat    /bin/
mv -v /usr/bin/chgrp  /bin/
mv -v /usr/bin/chmod  /bin/
mv -v /usr/bin/chown  /bin/
mv -v /usr/bin/cp     /bin/
mv -v /usr/bin/date   /bin/
mv -v /usr/bin/dd     /bin/
mv -v /usr/bin/df     /bin/
mv -v /usr/bin/echo   /bin/
mv -v /usr/bin/false  /bin/
mv -v /usr/bin/ln     /bin/
mv -v /usr/bin/ls     /bin/
mv -v /usr/bin/mkdir  /bin/
mv -v /usr/bin/mknod  /bin/
mv -v /usr/bin/mv     /bin/
mv -v /usr/bin/pwd    /bin/
mv -v /usr/bin/rm     /bin/
mv -v /usr/bin/rmdir  /bin/
mv -v /usr/bin/stty   /bin/
mv -v /usr/bin/sync   /bin/
mv -v /usr/bin/true   /bin/
mv -v /usr/bin/uname  /bin/
mv -v /usr/bin/chroot /usr/sbin/
mv -v /usr/bin/head   /bin/
mv -v /usr/bin/sleep  /bin/
mv -v /usr/bin/nice   /bin/

 

ソースファイル付属文書のインストール

ソースファイルに付属している文書のインストールを行います。


mkdir -vp /usr/share/doc/coreutils-8.23
cp -va ABOUT-NLS             /usr/share/doc/coreutils-8.23
cp -va AUTHORS               /usr/share/doc/coreutils-8.23
cp -va COPYING               /usr/share/doc/coreutils-8.23
cp -va ChangeLog             /usr/share/doc/coreutils-8.23
cp -va ChangeLog-2005        /usr/share/doc/coreutils-8.23
cp -va ChangeLog-2006        /usr/share/doc/coreutils-8.23
cp -va ChangeLog-2007        /usr/share/doc/coreutils-8.23
cp -va ChangeLog-2008        /usr/share/doc/coreutils-8.23
cp -va INSTALL               /usr/share/doc/coreutils-8.23
cp -va NEWS                  /usr/share/doc/coreutils-8.23
cp -va README                /usr/share/doc/coreutils-8.23
cp -va THANKS                /usr/share/doc/coreutils-8.23
cp -va THANKS-to-translators /usr/share/doc/coreutils-8.23
cp -va TODO                  /usr/share/doc/coreutils-8.23
cp -va doc/ChangeLog-2007    /usr/share/doc/coreutils-8.23

 

後始末

ディスクを圧迫しないよう、ビルド用のディレクトリを削除します。


cd ..
rm -fr coreutils-8.23

 

インストールリストの生成

最後に、インストールリストを生成します。


/sources/genpostlist.sh > /dev/null 2>&1
/sources/gendifflist.sh coreutils

 
  
  

まとめ

Coreutilsは、Linux系OSの基本的なコマンド群です。

 
メニュー