<sect1 id="ch06-coreutils">
<!--
<title>Installing Coreutils-&coreutils-version;</title>
-->
<title>Coreutils-&coreutils-version; のインストール</title>
<?dbhtml filename="coreutils.html" dir="chapter06"?>

<!--
<screen>Estimated build time:           &coreutils-time;
Estimated required disk space:  &coreutils-compsize;</screen>
-->
<screen>推定構築時間:           &coreutils-time;
推定必要ディスクスペース  &coreutils-compsize;</screen>

&aa-coreutils-shortdesc;
&aa-coreutils-dep;

<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>

<sect2>
<!--
<title>Installation of Coreutils</title>
-->
<title>Coreutils のインストール</title>

<!--
<para>Normally the functionality of <userinput>uname</userinput> is somewhat
broken, in that the <userinput>-p</userinput> switch always returns "unknown".
The following patch fixes this behaviour for Intel architectures:</para>
-->
<para>普通、<userinput>uname</userinput> の機能は、<userinput>-p</userinput> スイッチがいつも "unknown" と返される点で、すこし壊れています。
以下のパッチは Intel アーキテクチャに対するこの挙動を修正します。</para>

<screen><userinput>patch -Np1 -i ../&coreutils-uname-patch;</userinput></screen>

<!--
<para>We do not want Coreutils to install its version of the
<userinput>hostname</userinput> program, because it is inferior to the version
provided by Net-tools. Prevent its installation by applying a patch:</para>
-->
<para>Coreutils に収録された版の <userinput>hostname</userinput> プログラムは、Net-tools によって提供されるバージョンよりも劣っているのでインストールして欲しくありません。
パッチをあててそのインストールしないようにしてください。</para>

<screen><userinput>patch -Np1 -i ../&coreutils-hostname-patch;</userinput></screen>

<!--
<para>Now prepare Coreutils for compilation:</para>
-->
<para>さてコンパイルのために Coreutils を準備します。</para>

<screen><userinput>./configure --prefix=/usr</userinput></screen>

<!--
<para>Compile the package:</para>
-->
<para>パッケージをコンパイルします。</para>

<screen><userinput>make</userinput></screen>

<!--
<para>The <userinput>su</userinput> program from Coreutils wasn't installed in
Chapter 5 because it needed <emphasis>root</emphasis> privilege to do so. We're
going to need it in a few moments for the test suite. Therefore we work around
the problem by installing it now:</para>
-->
<para>第 5 章では、Coreutils からの <userinput>su</userinput> プログラムは <emphasis>root</emphasis> 権限を必要としたのでインストールされませんでした。
テストスイーツのためにそのプログラムがすぐに必要となります。ですので、今それをインストールして問題を回避しましょう。</para>

<screen><userinput>make install-root</userinput></screen>

<!--
<para>This package has a test suite available which can perform a number of
checks to ensure it built correctly. However, this particular test suite
makes some assumptions with regards to the presence of non-root users and
groups that don't apply this early into the LFS build. We therefore create
a dummy system user and two dummy groups to allow the tests to run
properly. Should you choose not to run the test suite, skip down to
"Install the package".  The following commands will prepare us for the test
suite. Create two dummy groups and a dummy user name:</para>
-->
<para>このパッケージは、正しく構築されたのを確認するために多くのチェックができるテストスイートを持っています。
しかし、この特別のテストスイーツは LFS の構築の早い段階では存在しない非 root ユーザーとグループについて、当然あるものと決めてかかります。
このため、テストを正しく実行するためにダミーのシステムユーザーを一人と、ダミーグループを二つ作ります。
テストスイーツを実行しなと選択したら、"パッケージのインストール"まで飛ばして下さい。以下のコマンドでテストスイーツに備えて、一人のダミーユーザー名と二つのダミーグループを作ります。</para>

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

<!--
<para>Some tests are meant to run as <emphasis>root</emphasis>:</para>
-->
<para>いくつかのテストは root で実行するのを意味します。</para>

<screen><userinput>make check-root</userinput></screen>

<!--
<para>The remainder of the tests are run as the <emphasis>dummy</emphasis>
user:</para>
-->
<para>テストの残りはダミーユーザーで行います。</para>

<screen><userinput>su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"</userinput></screen>

<!--
<para>Remove the dummy groups and user name:</para>
-->
<para>ダミーグループとダミーユーザー名を削除します。</para>

<screen><userinput>sed -i.bak '/dummy/d' /etc/passwd /etc/group</userinput></screen>

<!--
<para>Install the package:</para>
-->
<para>パッケージをインストールします。</para>

<screen><userinput>make install</userinput></screen>

<!--
<para>And move some programs to their proper locations:</para>
-->
<para>そしていくつかのプログラムをその正しい場所へ移動させます。</para>

<screen><userinput>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</userinput></screen>

<!--
<para>Finally, create a few necessary symlinks:</para>
-->
<para>最後に、いくつかの必要なシンボリックリンクを作ります。</para>

<screen><userinput>ln -s test /bin/[
ln -s ../../bin/install /usr/bin</userinput></screen>

</sect2>

</sect1>

