推定構築時間: 12.3 SBU 推定必要ディスクスペース 784 MB |
Glibc は open, malloc, printf, 等といったシステムコールや基本的な関数を提供するライブラリです。この C ライブラリは動的リンクされた全てのプログラムに使われます。
インストールされるプログラム: catchsegv, gencat, getconf, getent, glibcbug, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace, zdump 及び zic
インストールされるライブラリ: ld.so, libBrokenLocale.[a,so], libSegFault.so, libanl.[a,so], libbsd-compat.a, libc.[a,so], libc_nonshared.a, libcrypt.[a,so], libdl.[a,so], libg.a, libieee.a, libm.[a,so], libmcheck.a, libmemusage.so, libnsl.a, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so, libpthread.[a,so], libresolv.[a,so], librpcsvc.a, librt.[a,so], libthread_db.so 及び libutil.[a,so]
Glibc は以下のパッケージに依存します: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed, Texinfo.
Glibc 構築システムは非常に独立的で、たとえコンパイラスペックファイルとリンカがまだ /tools を指していたとしても、完壁にインストールされます。 Glibc をインストールする前にスペックファイルとリンカを調整すると、Glibc autoconf テストが偽の結果を与え、それゆえクリーンな構築を行うという目的を駄目にしてしまうので、インストールの前にこの二つを調整することができません。
Note: この章の Glibc へのテストスイーツは必須だと考えています。どんな状況下でもテストを飛ばしてしまわないように注意しておきます。
Glibc の構築を始める前に、再度 Glibc-linuxthreads を glibc-2.3.2 というディレクトリの中に解凍することを思い出してください。 そして、デフォルトの最適化フラグを上書きするあらゆる環境変数を外しましょう。
害のないメッセージですが、Glibc のインストール段階で /etc/ld.so.conf がないのに不平を言うでしょう。この煩わしいささいな警告を修正しておきます。
touch /etc/ld.so.conf |
それから以前使ったものと同じパッチをあてます。
patch -Np1 -i ../glibc-2.3.2-sscanf-1.patch |
Glibc 文書は、ソースディレクトリとは別の構築専用ディレクトリでコンパイルするよう勧めています。
mkdir ../glibc-build cd ../glibc-build |
それではコンパイルのために Glibc を準備します。
../glibc-2.3.2/configure --prefix=/usr \ --disable-profile --enable-add-ons \ --libexecdir=/usr/bin --with-headers=/usr/include |
新しいコンフィグオプションの意味
--libexecdir=/usr/bin: これは pt_chown プログラムを /usr/bin ディレクトリにインストールするようにします。
--with-headers=/usr/include: これは /usr/include の中のカーネルヘッダがこの構築で使われるようにします。 このスイッチを渡さなければ、もちろん理想的でないことに(これらは同一であるはずですが) /tools/include にあるヘッダが使われます。 このスイッチを使うと、カーネルヘッダを /usr/include にインストールし忘れているなら、すぐに通知されるという利点を持ちます。
パッケージをコンパイルします。
make |
結果をテストします。
make check |
the Section called Glibc-2.3.2 のインストール in Chapter 5という節からのテストスイーツの注意書きはここでもまだとても役立ちます。万一何か疑問を持ったらそこを参照して確かめて下さい。
それではパッケージをインストールします。
make install |
違った言語に対応するシステムにするロケールは、上述のコマンドではインストールされません。次のコマンドを実行します。
make localedata/install-locales |
前のコマンドを実行する代わりに、必要とするか欲しいロケールだけをインストールすることができます。 これは localedef コマンドで行います。これについての情報は glibc-2.3.2 ツリーの中の INSTALL ファイルの中にあります。 しかし、いくつかのロケールはこの先のパッケージのテストを正しく通すために必要です。以下の説明では、上の install-locales コマンドの代わりに、テストを行うのにに必要な最小のロケールセットをインストールします。
mkdir -p /usr/lib/locale localedef -i de_DE -f ISO-8859-1 de_DE localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro localedef -i en_HK -f ISO-8859-1 en_HK localedef -i en_PH -f ISO-8859-1 en_PH localedef -i en_US -f ISO-8859-1 en_US localedef -i es_MX -f ISO-8859-1 es_MX localedef -i fr_FR -f ISO-8859-1 fr_FR localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro localedef -i it_IT -f ISO-8859-1 it_IT localedef -i ja_JP -f EUC-JP ja_JP |
最後に、linuxthreads man ページを構築します。
make -C ../glibc-2.3.2/linuxthreads/man |
それからこれらのパッケージをインストールします。
make -C ../glibc-2.3.2/linuxthreads/man install |
/etc/nsswitch.conf というファイルを作成しなければいけません。 なぜなら、このファイルが無いか壊れていると Glibc はデフォルトの設定を提供しますが、Glibc のデフォルトの設定はネットワークが正常に動きません。また、タイムゾーンの設定もしなければいけません。
以下のコマンドを実行して新しい /etc/nsswitch.conf を作ります。
cat > /etc/nsswitch.conf << "EOF" # Begin /etc/nsswitch.conf passwd: files group: files shadow: files publickey: files hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: db files # End /etc/nsswitch.conf EOF |
どのタイムゾーンが何かを調べるために、以下のスクリプトを実行します。
tzselect |
地域についてのいくつかの質問に答えると、このスクリプトは EST5EDT や Canada/Eastern のようなタイムゾーンの名前を出力します。 それから以下のコマンドを実行して /etc/localtime ファイルを作ります。
cp --remove-destination /usr/share/zoneinfo/Canada/Eastern /etc/localtime |
オプションの意味
--remove-destination: これは既に存在するシンボリックリンクを強制的に削除するのに必要です。 シンボリックリンクの代わりにコピーする理由は /usr が別のパーティションにある状況を扱うためです。 これは、たとえばシングルユーザーモードでブートされたときに問題となります。
もちろん、Canada/Eastern の代わりに、tzselect スクリプトが与えたタイムゾーンの名前を記入しましょう。
デフォルトの設定で動的ローダー( /lib/ld-linux.so.2 )はプログラムを実行したときに必要とされる動的ライブラリを求めて /lib と /usr/lib を探します。 しかし、/lib と /usr/lib 以外の場所にライブラリがあるとすれば、動的ローダーが見つけられるように /etc/ld.so.conf ファイルにそれらを加える必要があります。 追加のライブラリを含むことで、一般的に知られる二つのディレクトリは /usr/local/lib と /opt/lib で、これらのディレクトリを動的ローダーの検索パスに加えます。
以下のコマンドを実行して新しいファイル /etc/ld.so.conf を作ります。
cat > /etc/ld.so.conf << "EOF" # Begin /etc/ld.so.conf /usr/local/lib /opt/lib # End /etc/ld.so.conf EOF |