Instalowanie Glibc-2.3.2

Estimated build time:           12.3 SBU
Estimated required disk space: 784 MB

Zawartość Glibc

Glibc jest biblioteką języka C dostarczającą funkcje systemowe (system calls) oraz podstawowe funkcje (basic functions) takie jak open, malloc, printf, etc. Używają jej wszystkie programy dynamicznie linkowane.

Instalowane programy: 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 oraz zic

Instalowane biblioteki: 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 oraz libutil.[a,so]

Instalacyjne Zależności Glibc

Glibc zależy od: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed, Texinfo.

Instalacja Glibc

System budowy Glibc jest bardzo dobrze złożony i doskonale ją zainstaluje, nawet gdy plik specyfikacyjny naszego kompilatora i linker nadal wskazują na /tools. Nie możemy poprawić tej specyfikacji i linkera przed zainstalowaniem Glibc, ponieważ testy autokonfiguratora Glibc (autoconf) dałyby błędne wyniki i to by przeszkodziło w osiągnięciu naszego celu -- budowy bez śmieci.

Uwaga: Uruchomienie testów dla Glibc w tej sekcji jest niezbędne. Radzimy nie pomijać go pod żadnym pozorem.

Przed rozpoczęciem budowy Glibc, nie zapomnij ponownie rozpakować Glibc-linuxthreads w katalogu glibc-2.3.2 , a także zlikwidować wszelkie zmienne systemowe które mogą nadpisać domyślne ustawienia flag optymalizacji.

Mimo, że to nieszkodliwe, pojawią się narzekania na poziomie instalacji Glibc na brak /etc/ld.so.conf. Naprawisz to małe lecz męczące ostrzeżenie za pomocą:

touch /etc/ld.so.conf

Wtedy zastosuj tą samą łatkę, której użyliśmy poprzednio:

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

Dokumentacja Glibc zaleca budowę Glibc poza katalogiem źródłowym, w specjalnie na to przeznaczonym katalogu budowy:

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

Teraz przygotujmy Glibc do kompilacji:

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

Oto znaczenie nowych opcji configure:

Skompiluj ten pakiet:

make

Sprawdź rezultaty:

make check

Uwagi z zestawu testowego z części pod nazwą Instalowanie Glibc-2.3.2 w Rozdziale 5 są tu jak najbardziej aktualne. Gdybyś miała jakiekolwiek wątpliwości, to zajrzyj do nich koniecznie.

I instaluj ten pakiet:

make install

Powyższa komenda nie zainstalowała "locale", dzięki którym twój system będzie odpowiadać w różnych językach. Zrobisz to tak:

make localedata/install-locales

Alterantywnym sposobem do powyższego rozkazu jest zainstalowanie jedynie tych locale, których potrzebujesz albo chcesz.  Można to zrobić komendą localedef. Informacje o tym znajdziesz w pliku INSTALL w drzewie katalogów glibc-2.3.2. Jest jednak trochę lokalizacji bardzo ważnych w testach, które następne pakiety będą musiały przejść bezbłędnie. Następujące instrukcje, zamiast powyższej komendy install-locales, zainstalują minimalny zestaw lokalizacji  niezbędny do prawidłowego działania tych testów:

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

W końcu zbuduj też strony manuala linuxthreads:

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

I zainstaluj strony manuala:

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

Konfigurowanie Glibc

Trzeba utworzyć plik /etc/nsswitch.conf, ponieważ, choć Glibc posiada potrzebne wartości domyślne, gdyby ten plik był uszkodzony lub go zabrakło, to te wartości od Glibc nie zadziałają prawidłowo w sieci. Trzeba również ustalić strefę czasową.

Utwórz nowy plik /etc/nsswitch.conf wykonując:

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

Żeby dowiedzieć się, w jakiej jesteś strefie czasowej, wykonaj ten skrypt:

tzselect

Kiedy odpowiesz na kilka pytań dotyczących miejsca zamieszkania, skrypt ten poda w wyniku nazwę twojej strefy czasowej, cos w rodzaju EST5EDT lub Canada/Eastern. (Od tłumacza: w Polsce uzyskamy "Europe/Warsaw") Wtedy utwórz plik /etc/localtime kopiując:

cp --remove-destination /usr/share/zoneinfo/Europe/Warsaw /etc/localtime 

Znaczenie tej opcji:

Oczywiście zamiast Europe/Warsaw wstaw nazwę strefy czasowej, jaką poda ci skrypt tzselect.

Konfigurowanie dynamicznego loadera

Dynamiczny loader (/lib/ld-linux.so.2) domyślnie przeszukuje katalogi  /lib oraz /usr/lib w poszukiwaniu bibliotek dynamicznych wymaganych przez programy przy ich uruchamianiu. Jeśli jednak takie biblioteki znajdą się w katalaogach innych niż /lib oraz /usr/lib, to będziesz musiała je dodać do pliku /etc/ld.so.conf żeby dynamiczny loader mógł je znaleźć. Dwoma katalogami powszechnie znanymi z tego, że zawierają dodatkowe biblioteki są /usr/local/lib oraz /opt/lib, więc dopisujemy je do ścieżki przeszukiwania dynamicznego loadera.

Tworzymy nowy plik /etc/ld.so.conf wykonując:

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

/usr/local/lib
/opt/lib

# End /etc/ld.so.conf
EOF