Management avansat al software-ului 2

Gestionarea bibliotecilor partajate
Ideea din spatele bibliotecilor comune este destul de simplă: este o compilație de cod care oferă servicii și funcții altor fragmente de cod compilat. Librările comune oferă funcții numite frecvent la alte programe și sunt concepute astfel încât să poată folosi cât mai multe programe în mod repetat.






Bibliotecile comune au rolul de a sprijini alte programe. Această abordare reduce dimensiunea medie a programelor, eliberând o cantitate semnificativă de memorie de sistem.
La momentul încărcării, sistemul FreeBSD creează o memorie cache a bibliotecilor partajate disponibile. Programele nu ar trebui să scaneze întregul disc atunci când sunt căutate; ele solicită pur și simplu funcțiile necesare în memoria cache. De fapt, abilitatea de a gestiona cache-ul bibliotecii este una dintre caracteristicile care distinge un începător de un profesionist.
FreeBSD oferă o mulțime de parametri rezonabili, setați în mod prestabilit, dar aici ne vom uita la instrumentele necesare pentru configurarea și gestionarea cache-ului în diferite situații. Bibliotecile comune sunt mijloace cu un obicei, dar cu ajutorul ldconfig. Ldd si capetele de pe umeri pot fi imblanzite.

Instrumentul principal pentru gestionarea bibliotecilor comune este ldconfig (8). Am discutat o serie de echipe diferite care aparțin ldconfig: rtld (l), LDD (l), precum și programul în sine ldconfig.
Mai întâi de toate, să examinăm tipurile de fișiere executabile: aout și ELF. Ca administrator, nu aveți o bună înțelegere a aout și ELF, dar ar trebui să fie conștienți de faptul că aout - este un standard învechit, un ELF - nou, și că binarele de același tip nu se poate utiliza un alt tip de bibliotecă. Programele ELF nu pot folosi bibliotecile aout. (În FreeBSD Netscape fișier executabil este aout format, astfel încât utilizarea sa trebuie să fie instalat cu bibliotecile de compatibilitate aout mediu Xfree86.) Deși fișierele executabile aout-dispar, sistemul de FreeBSD a avea pe termen nelimitat pentru a sprijini ambele tipuri.
Când executați ELF-programe, care sunt necesare biblioteca, sistemul de apeluri rtld (l), «linker timpul rulării» (rulare agent de legătură), rtld explorează programul descărcat, determină care bibliotecile de care au nevoie, și apoi încarcă aceste biblioteci. Pentru a-gazde există un linker separat, numit ld (aout).







Dacă biblioteca dorită nu este găsită în niciunul dintre directoarele cu crawlere, trebuie găsită. În general, dacă clipiți primele caractere din numele bibliotecii și aplicați> localizați sau> găsiți >> /> -> nume >> libname> -> print>, acest fișier va fi găsit. În cel mai rău caz, trebuie să treci printr-o lungă listă de linii de rezultate, dintre care una va găsi biblioteca de care ai nevoie.
După instalarea unuia sau a altui program în sistem, poate apărea un nou director cu biblioteci. Cu comutatorul -m, puteți pur și simplu "turna" bibliotecile unui nou director într-o memorie cache existentă. Unele porturi utilizează chiar această cheie pentru a configura bibliotecile în timpul inițializării, ceea ce elimină confuzia obositoare cu /etc/rc.conf. Pentru a "infuza" biblioteca mea în memoria cache existentă, tastez următoarea comandă:
# ldconfig -m / usr / local / pilot / lib

LD_LIBRARY_PATH
Comutatorul -t funcționează remarcabil de bine din punct de vedere al administratorului de sistem, dar nu este potrivit pentru un utilizator modest fără privilegii root. În plus, dacă un utilizator normal are un set de biblioteci, este posibil ca administratorul de sistem să nu permită accesul universal la acestea. Și deoarece proprietarul directorului bibliotecii partajate trebuie să fie root, utilizatorii obișnuiți nu vor putea accesa acest director. Probabil, administratorul de sistem va încerca să nu lase cea mai mică șansă de a conecta programele de sistem cu bibliotecile personale ale utilizatorului. Aici este locația de salvare a variabilei de mediu LD_LIBRARY_PATH. In loc de a crea o memorie cache, LD_LIBRARY_PATH variabilă instruiește sistemul să caute o nouă bibliotecă în directoarele, lista pe care zadaet.V LD_LIBRARY_PATH poate specifica orice numar de directoare, separate prin două puncte. De exemplu, eu pot pune directorul / home / mwlucas / lib și / compat / Linux / usr / lib / local în LD_LIBRARY_PATH, pentru a instala software-ul. Pentru a face acest lucru, tastez următoarea comandă:
S setenv LD_LIBRARY_PATH / casă / mwlucas / lib: / compat / linux / usr / lib / local
De exemplu, de obicei instalez manual StarOffice și nu folosesc portul. În acest caz, procedura de instalare extrage diferite biblioteci în /tmp/sv001.tmp și se așteaptă să le găsească când începe instalarea grafică. Pentru ca aceste biblioteci să fie de fapt găsite, încep instalarea pachetului prin setarea directorului jimp / sv001.tmp în LO_LIBRARY_PATH:
Nu. Setenv LD_IIBRARY_PATH /tmp/sv001.tmp # ./setup
Când programul de instalare grafică StarOffice este lansat, acesta va găsi bibliotecile extrase din acest director. Astfel, nu este nevoie să reconfigurați întregul sistem FreeBSD doar pentru a aplica acest sau acel program.

În cele din urmă, se pune întrebarea: ce biblioteci sunt necesare prin program?

Această ieșire conține numele bibliotecilor partajate de care Emacs are nevoie și specifică locația fișierelor care conțin aceste biblioteci. Această listă poate fi comparată cu rezultatul comenzii ldconfig -r pentru a vă asigura că programul are tot ce are nevoie. Sau căutați bibliotecile necesare.







Articole similare

Trimiteți-le prietenilor: