LFS を開発してきた中では、パッケージの更新やそれに伴う新機能に適応するために、本書内の手順を順次修正しています。 LFS ブックのバージョンが異なっているにもかかわらず、その手順を混同してしまうと、些細なエラーにつながります。 こういった問題は、一般的には LFS ブックの前バージョンに対して作り出したスクリプトを、そのまま再利用した結果として起こります。 スクリプトの再利用は是非行わないでください。 仮に何らかの理由があって前バージョン向けのスクリプトを再利用する場合であっても、最新バージョンの LFS ブック向けにそのスクリプトの更新を十分確認して行ってください。
パッケージをビルドしていくにあたって、理解しておくべき内容を以下に示します:
パッケージの中には、コンパイルする前にパッチを当てるものがあります。 パッチを当てるのは、そのパッケージが抱える問題を回避するためです。 本章と後続の章でパッチを当てるものがありますが、同じパッケージを二度ビルドする場合であっても、パッチを必要としない場合があります。 したがってパッチをダウンロードする説明が書かれていないなら、何も気にせず先に進んでください。 パッチを当てた際に offset や fuzz といった警告メッセージが出る場合がありますが、これらは気にしないでください。 このような時でもパッチは問題なく適用されています。
コンパイルの最中に、警告メッセージが画面上に出力されることがよくあります。 これは問題はないため無視して構いません。 警告メッセージは、メッセージ内に説明されているように、C や C++ の文法が誤りではないものの推奨されていないものであることを示しています。 C 言語の標準はよく変更されますが、パッケージの中には更新されていないものもあります。 重大な問題はないのですが、警告として画面表示されることになるわけです。
もう一度、環境変数 LFS
が正しく設定されているかを確認します。
echo $LFS
上の出力結果が LFS パーティションのマウントポイントのディレクトリであることを確認してください。 本書では
/mnt/lfs
ディレクトリとして説明しています。
最後に以下の二つの点にも注意してください。
ビルドにあたっては ホストシステム要件にて示す要件やシンボリックリンクが、正しくインストールされていることを前提とします。
bash シェルの利用を想定しています。
sh は bash へのシンボリックリンクであるものとします。
/usr/bin/awk は gawk へのシンボリックリンクであるものとします。
/usr/bin/yacc は bison へのシンボリックリンクであるか、あるいは bison を実行するためのスクリプトであるものとします。
ビルド作業の概要を示します。
ソースやパッチファイルを配置するディレクトリは /mnt/lfs/sources/ などのように chroot 環境でもアクセスが出来るディレクトリとしてください。
/mnt/lfs/sources/
ディレクトリに入ります。
tar コマンドを使ってパッケージの tarball を伸張(解凍)します。 第 5 章 と 第 6 章 では、パッケージを伸張(解凍)するのは lfs ユーザーとします。
パッケージ tarball からソースコードを抽出する際には tar コマンド以外による方法は用いないでください。 特にどこか別に配置しているソースコードを cp -R を使ってコピーすると、ソースツリー内のリンクやタイムスタンプを壊しかねません。 そうなるとビルドの失敗に通じることになります。
パッケージの伸張 (解凍) 後に生成されたディレクトリに入ります。
本書の手順に従ってビルド作業を行っていきます。
ビルドが終了したらソースディレクトリに戻ります。
ビルド作業を通じて生成されたパッケージディレクトリを削除します。