Stații de lucru online OnWorks Linux și Windows

logo

Găzduire online gratuită pentru stații de lucru

<Înapoi | Cuprins | Următor>

6.9.1. Instalarea Glibc


notițe

Sistemul de compilare Glibc este autonom și se va instala perfect, chiar dacă fișierul cu specificațiile compilatorului și linker-ul încă indică /instrumente. Specificațiile și linkerul nu pot fi ajustate înainte de instalarea Glibc, deoarece testele Glibc autoconf ar da rezultate false și ar învinge obiectivul de a obține o construcție curată.

notițe

Sistemul de compilare Glibc este autonom și se va instala perfect, chiar dacă fișierul cu specificațiile compilatorului și linker-ul încă indică /instrumente. Specificațiile și linkerul nu pot fi ajustate înainte de instalarea Glibc, deoarece testele Glibc autoconf ar da rezultate false și ar învinge obiectivul de a obține o construcție curată.

Unele dintre programele Glibc folosesc compilatorul non-FHS /var/db director pentru a-și stoca datele de rulare. Aplicați următorul patch pentru ca astfel de programe să-și stocheze datele de rulare în locațiile compatibile cu FHS:


patch -Np1 -i ../glibc-2.30-fhs-1.patch

patch -Np1 -i ../glibc-2.30-fhs-1.patch


Remediați o problemă introdusă cu nucleul linux-5.2:


sed -i '/asm.socket.h/a# include ' \ sysdeps/unix/sysv/linux/bits/socket.h

sed -i '/asm.socket.h/a# include ' \ sysdeps/unix/sysv/linux/bits/socket.h


imagine

-sfv

-sfv

-sfv

-sfv

../lib/ld-linux-x86-64.so.2 /lib64

../lib/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3

../lib/ld-linux-x86-64.so.2 /lib64

../lib/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3

Creați un link simbolic pentru conformitatea cu LSB. În plus, pentru x86_64, creați o legătură simbolică de compatibilitate necesară pentru ca încărcătorul dinamic să funcționeze corect:


caz $(uname -m) in

caz $(uname -m) in


i?86) ln

;;

x86_64) ln

ln

;;

ESAC

-sfv

ld-linux.so.2 /lib/ld-lsb.so.3

i?86) ln

;;

x86_64) ln

ln

;;

ESAC

Documentația Glibc recomandă construirea Glibc într-un director de compilare dedicat:


mkdir -v build cd build

mkdir -v build cd build


imagine

Pregătiți Glibc pentru compilare:


CC="gcc -ffile-prefix-map=/tools=/usr" \

../configure --prefix=/usr

--disable-werror

--enable-kernel=3.2

--enable-stack-protector=puternic

--with-headers=/usr/include libc_cv_slibdir=/lib

\

\

\

\

\

CC="gcc -ffile-prefix-map=/tools=/usr" \

../configure --prefix=/usr

--disable-werror

--enable-kernel=3.2

--enable-stack-protector=puternic

--with-headers=/usr/include libc_cv_slibdir=/lib


Semnificația opțiunilor și a noilor parametri de configurare:


CC="gcc -ffile-prefix-map=/tools=/usr"

Faceți ca GCC să înregistreze orice referințe la fișiere în /tools ca rezultat al compilației, ca și cum fișierele ar fi locuit în /usr. Acest lucru evită introducerea de căi invalide în simbolurile de depanare.

--disable-werror

Această opțiune dezactivează opțiunea -Werror transmisă la GCC. Acest lucru este necesar pentru rularea suita de teste.

--enable-stack-protector=puternic

Această opțiune mărește securitatea sistemului prin adăugarea de cod suplimentar pentru a verifica dacă există depășiri de buffer, cum ar fi atacurile de distrugere a stivei.

--with-headers=/usr/include

Această opțiune îi spune sistemului de construcție unde să găsească anteturile API-ului kernelului. În mod implicit, acele anteturi sunt căutate

/instrumente/include.

libc_cv_slibdir=/lib

Această variabilă setează biblioteca corectă pentru toate sistemele. Nu vrem să fie folosit lib64.

Compilați pachetul:


face

face


Important

În această secțiune, suita de teste pentru Glibc este considerată critică. Nu sări peste el sub nicio circumstanță.

Important

În această secțiune, suita de teste pentru Glibc este considerată critică. Nu sări peste el sub nicio circumstanță.


imagine

imagine

imagine

/lib ;;

/lib ;;

-sfnv $PWD/elf/ld-linux-x86-64.so.2 /lib ;;

-sfnv $PWD/elf/ld-linux-x86-64.so.2 /lib ;;

În general, câteva teste nu trec. Eșecurile de testare enumerate mai jos sunt, de obicei, sigur de ignorat.


caz $(uname i?86) ln x86_64) ln

ESAC

-m) în

-sfnv $PWD/elf/ld-linux.so.2

caz $(uname i?86) ln x86_64) ln

ESAC


notițe

Legătura simbolică de mai sus este necesară pentru a rula testele în această etapă de construire în mediul chroot. Acesta va fi suprascris în faza de instalare de mai jos.

notițe

Legătura simbolică de mai sus este necesară pentru a rula testele în această etapă de construire în mediul chroot. Acesta va fi suprascris în faza de instalare de mai jos.


face verificarea

face verificarea

Este posibil să vedeți unele eșecuri ale testului. Suita de teste Glibc este oarecum dependentă de sistemul gazdă. Aceasta este o listă cu cele mai frecvente probleme întâlnite pentru unele versiuni de LFS:

misc/tst-ttyname se știe că eșuează în mediul LFS chroot.

inet/tst-idna_name_classify se știe că eșuează în mediul LFS chroot.

posix/tst-getaddrinfo4 și posix/tst-getaddrinfo5 poate eșua pe unele arhitecturi.

nss/tst-nss-files-hosts-multi testul poate eșua din motive care nu au fost determinate.


rt/tst-cputimer{1,2,3} testele depind de nucleul sistemului gazdă. Kernel-urile 4.14.91–4.14.96, 4.19.13–4.19.18 și 4.20.0–4.20.5 sunt cunoscute că cauzează eșecul acestor teste.

• Testele de matematică uneori eșuează atunci când rulează pe sisteme în care CPU nu este un procesor Intel sau AMD relativ nou.

Deși este un mesaj inofensiv, etapa de instalare a lui Glibc se va plânge de absența /etc/ld.so.conf. Preveniți acest avertisment cu:


atingeți /etc/ld.so.conf

atingeți /etc/ld.so.conf


Remediați fișierul Makefile generat pentru a sări peste o verificare inutilă care eșuează în mediul parțial LFS:


sed '/test-installation/s@$(PERL)@echo nu rulează@' -i ../Makefile

sed '/test-installation/s@$(PERL)@echo nu rulează@' -i ../Makefile


Instalează pachetul:


make install

make install


Instalați fișierul de configurare și directorul de rulare pentru nscd:


cp -v ../nscd/nscd.conf /etc/nscd.conf mkdir -pv /var/cache/nscd

cp -v ../nscd/nscd.conf /etc/nscd.conf mkdir -pv /var/cache/nscd


Apoi, instalați localurile care pot face sistemul să răspundă într-o altă limbă. Niciuna dintre localizări nu este necesară, dar dacă unele dintre ele lipsesc, suitele de testare ale pachetelor viitoare ar omite cazuri de testare importante.


Localizările individuale pot fi instalate folosind localdef program. De exemplu, primul localdef comanda de mai jos combină /usr/share/i18n/locales/cs_CZ definiție locală independentă de set de caractere cu /usr/share/i18n/ charmaps/UTF-8.gz definiția charmap și adaugă rezultatul la /usr/lib/locale/locale- archive fişier. Următoarele instrucțiuni vor instala setul minim de locații necesare pentru acoperirea optimă a testelor:


imagine

mkdir -pv /usr/lib/locale

localedef -i POSIX -f UTF-8 C.UTF-8 2> /dev/null || true localedef -i cs_CZ -f UTF-8 cs_CZ.UTF-8

localedef -i de_DE -f ISO-8859-1 de_DE

localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro localedef -i de_DE -f UTF-8 de_DE.UTF-8

localedef -i el_GR -f ISO-8859-7 el_GR localedef -i en_GB -f UTF-8 en_GB.UTF-8 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 en_US -f UTF-8 en_US.UTF-8 localedef -i es_MX -f ISO-8859-1 es_MX localedef -i fa_IR -f UTF-8 fa_IR localedef - i fr_FR -f ISO-8859-1 fr_FR

localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro localedef -i fr_FR -f UTF-8 fr_FR.UTF-8

localedef -i it_IT -f ISO-8859-1 it_IT localedef -i it_IT -f UTF-8 it_IT.UTF-8 localedef -i ja_JP -f EUC-JP ja_JP

localedef -i ja_JP -f SHIFT_JIS ja_JP.SIJS 2> /dev/null || true localedef -i ja_JP -f UTF-8 ja_JP.UTF-8

localedef -i ru_RU -f KOI8-R ru_RU.KOI8-R localedef -i ru_RU -f UTF-8 ru_RU.UTF-8 localedef -i tr_TR -f UTF-8 tr_TR.UTF-8 localedef -i zh_CN -f GB18030 zh_CN .GB18030

localedef -i zh_HK -f BIG5-HKSCS zh_HK.BIG5-HKSCS


În plus, instalați localul pentru propria țară, limbă și set de caractere.

Ca alternativă, instalați toate localitățile enumerate în glibc-2.30/localedata/SUPPORTED fișier (include fiecare localizare enumerată mai sus și multe altele) simultan, cu următoarea comandă consumatoare de timp:


make localedata/install-locales

make localedata/install-locales


imagine

Apoi utilizați localdef comandă pentru a crea și instala localuri care nu sunt listate în glibc-2.30/localedata/ SUPPORTAT dosar în cazul puțin probabil în care aveți nevoie de ele.


notițe

Glibc folosește acum libidn2 atunci când rezolvă nume de domenii internaționalizate. Aceasta este o dependență de timp de rulare. Dacă această capacitate este necesară, instrucțiunile pentru instalarea libidn2 sunt în pagina BLFS libidn2.

notițe

Glibc folosește acum libidn2 atunci când rezolvă nume de domenii internaționalizate. Aceasta este o dependență de timp de rulare. Dacă această capacitate este necesară, instrucțiunile pentru instalarea libidn2 sunt în pagina BLFS libidn2.


Top OS Cloud Computing la OnWorks: