Installieren von Glibc-2.3.2

Geschätzte Kompilierzeit:              12.3 SBU
Ungefähr benötigter Festplattenplatz:  784 MB

Inhalt von Glibc

Glibc ist die C Bibliothek, sie stellt Systemaufrufe und grundlegende Funktionen wie open, malloc, printf usw. zur Verfügung. Die C Bibliothek wird von allen dynamisch gelinkten Programmen verwendet.

Installierte Programme: 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 und zic

Installierte Bibliotheken: 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 und libutil.[a,so]

Glibc Installationsabhängigkeiten

Glibc ist abhängig von: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed, Texinfo.

Installation von Glibc

Das Glibc Installatinssystem ist sehr eigenständig und installiert perfekt, selbst wenn unsere Compiler Specs Datei und der Linker immer noch auf /tools zeigen. Wir können die Specs Datei und den Linker nicht vor der Installation von Glibc anpassen, weil die Glibc Autoconf Tests dann falsche Resultate ergeben würden.

Anmerkung: Die Test-suite von Glibc in diesem Abschnitt wird als kritisch betrachtet. Wir raten, sie unter keinen Umständen zu überspringen.

Bevor sie mit dem kompilieren von Glibc beginnen, denken sie daran Glibc-linuxthreads in dem glibc-2.3.2 Verzeichnis zu entpacken, und setzen sie alle Umgebungsvariablen zurück die die standard Optimierungen übergehen würden.

Auch wenn es nur eine harmlose Nachricht ist, die Installationsphase von Glibc wird sich über die fehlende /etc/ld.so.conf Datei beschweren. Beheben sie diese störende Warnung mit:

touch /etc/ld.so.conf

Dann wenden sie den gleichen Patch an den wir schon früher verwendet haben:

patch -Np1 -i ../glibc-2.3.2-sscanf-1.patch

Die Glibc Dokumentation empfiehlt, Glibc nicht im Quellenverzeichnis, sondern stattdessen in einem dedizierten Kompilierverzeichnis zu bauen:

mkdir ../glibc-build
cd ../glibc-build

Bereiten sie nun Glibc zum kompilieren vor:

../glibc-2.3.2/configure --prefix=/usr \
    --disable-profile --enable-add-ons \
    --libexecdir=/usr/bin --with-headers=/usr/include

Die Bedeutung der neuen configure Optionen:

Kompilieren sie das Paket:

make

Testen sie das Ergebnis:

make check

Die Anmerkungen zur Test-suite aus dem Abschnitt namens Installieren von Glibc-2.3.2 in Kapitel 5 gelten natürlich auch hier. Schlagen sie dort nach falls sie irgendwelche Zweifel haben.

Und installieren sie das Paket:

make install

Die locales wurden durch das obige Kommando nicht installiert. Holen sie das nach:

make localedata/install-locales

Eine alternative zum obigen Kommando wäre, nur die benötigten oder gewollten locales zu installieren. Das erreichen sie mit dem localedef Befehl. Informationen dazu finden sie in der INSTALL Datei im glibc-2.3.2 Verzeichnisbaum. Einige locales sind allerdings essentiell für die Tests einiger nachfolgender Pakete. Die nachfolgenden Kommandos anstelle des obigen installieren nur ein Minimum an locales so das die Tests sauber durchlaufen:

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

Schlussendlich erzeugen wir die linxthreads Manpages:

make -C ../glibc-2.3.2/linuxthreads/man

Und installieren die Pakete:

make -C ../glibc-2.3.2/linuxthreads/man install

Konfigurieren von Glibc

Wir müssen die Datei /etc/nsswitch.conf erstellen, denn obwohl Glibc Standardwerte vorgibt falls die Datei fehlt oder kaputt ist, funktionieren diese nicht gut mit Netzwerken. Und wir müssen die Zeitzone korrekt einrichten.

Erstellen sie die neue Datei /etc/nsswitch.conf indem sie das folgende ausführen:

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

Um herauszufinden in welcher Zeitzone sie sind, führen sie das folgende Skript aus:

tzselect

Wenn sie ein paar Fragen zu ihrer Lokation beantwortet haben wird das Skript den Namen ihrer Zeitzone ausgeben, ähnlich wie EST5EDT oder Canada/Eastern. Erstellen sie dann die Datei /etc/localtime indem sie folgendes ausführen:

cp --remove-destination /usr/share/zoneinfo/Canada/Eastern /etc/localtime 

Die Bedeutung der Option:

Anstelle von Canada/Eastern müssen sie natürlich den Namen der Zeitzone einsetzen den ihnen tzselect ausgeben hat.

Konfigurieren des dynamischen Laders

Standardmässig such der dynamisch Lader (/lib/ld-linux.so.2) in /lib und /usr/lib nach dynamischen Bibliotheken die von ausführbaren Programmen zur Laufzeit benötigt werden. Wenn allerdings Bibliotheken ausserhalb von /lib und /usr/lib liegen, müssen sie diese Verzeichnisse in /etc/ld.so.conf einfügen damit der dynamische Lader diese finden kann. Zwei Verzeichnisse die dafür bekannt sind, weitere Bibliotheken zu enthalten, sind /usr/local/lib und /opt/lib, also fügen wir diese Verzeichnisse in den Suchpfad ein.

Erstellen sie die neue Datei /etc/ld.so.conf mit dem folgenden Kommando:

cat > /etc/ld.so.conf << "EOF"
# Begin /etc/ld.so.conf

/usr/local/lib
/opt/lib

# End /etc/ld.so.conf
EOF