Flashnux

GNU/Linux man pages

Livre :
Expressions régulières,
Syntaxe et mise en oeuvre :

ISBN : 978-2-7460-9712-4
EAN : 9782746097124
(Editions ENI)

dpkg-shlibdeps(1)


dpkg−shlibdeps

dpkg−shlibdeps

NAZWA
SK£ADNIA
OPIS
OPCJE
UWAGI
B£ÊDY
ZOBACZ TAK¯E
AUTORZY
T£UMACZE

NAZWA

dpkg−shlibdeps − generowanie zale¿no¶ci podstawieñ wspó³dzielonych bibliotek

SK£ADNIA

dpkg−shlibdeps [opcje] plik_wykonywalny|−eplik_wykonywalny [opcje]

OPIS

dpkg−shlibdeps okre¶la zale¿no¶ci podstawieñ wspó³dzielonych bibliotek dla plików wykonywalnych podanych jako argumenty. Zale¿no¶ci te s± dodawane do pliku podstawieñ zmiennych debian/substvars jako zmienne shlibs:pole−zale¿no¶ci, przy czym pole−zale¿no¶ci jest nazw± odpowiedniego pola zale¿no¶ci. Wszystkie inne zmienne rozpoczynaj±ce siê od shlibs: s± usuwane z tego pliku.

dpkg−shlibdeps ma dwa ¼ród³a informacji s³u¿±ce do generowania informacji o zale¿no¶ciach. S± to pliki symbols lub pliki shlibs. Dla ka¿dego pliku binarnego analizowanego przez dpkg−shlibdeps okre¶lana jest lista bibliotek, z którymi jest on linkowany. Nastêpnie dla ka¿dej biblioteki przegl±dany jest plik symbols lub plik shlibs (je¶li ten pierwszy nie istnieje, lub gdy debian/shlibs.local zawiera stosown± zale¿no¶æ). Oba pliki powinny byæ dostarczane przez pakiet zawieraj±cy bibliotekê i powinny wiêc byæ dostêpne jako /var/lib/dpkg/info/pakiet.symbols lub /var/lib/dpkg/info/pakiet.shlibs. Nazwa pakietu jest okre¶lana w dwóch krokach: odnalezienie pliku biblioteki w systemie (sprawdzaj±c w tych samych katalogach, których u¿ywa ld.so), a nastêpnie u¿ycie dpkg −S plik−biblioteki w celu okre¶lenia pakietu dostarczaj±cego dan± bibliotekê.

Pliki symboli
Pliki symboli zawieraj± dok³adniejsze okre¶lenia informacji o zale¿no¶ciach, dostarczaj±c minimum zale¿no¶ci dla ka¿dego symbolu eksportowanego przez bibliotekê. Skrypt próbuje odnale¼æ plik zwi±zany z pakietem biblioteki w nastêpuj±cych miejscach (u¿yte jest pierwsze dopasowanie):
debian/*/DEBIAN/symbols

Informacje o wspó³dzielonej bibliotece wygenerowane w bie¿±cym procesie budowy, który wywo³a³ równie¿ dpkg−shlibdeps. S± one generowane przez dpkg−gensymbols(1). S± u¿ywane tylko, gdy biblioteka znajduje siê w drzewie budowania pakietu. Plik "symbols" z tego drzewa ma pierwszeñstwo nad plikami symboli z innych pakietów binarnych.

/etc/dpkg/symbols/pakiet.symbols.arch
/etc/dpkg/symbols/pakiet.symbols

Informacje o zasiêgu systemu, które nadpisuj± informacje o zale¿no¶ciach bibliotek wspó³dzielonych. arch jest architektur± bie¿±cego systemu (okre¶lon± przez dpkg−architecture −qDEB_HOST_ARCH).

katalog_admin/info/pakiet.symbols

Dostarczane przez pakiet informacje o zale¿no¶ciach bibliotek wspó³dzielonych. O ile nie jest nadpisany, admindir ma warto¶æ /var/lib/dpkg.

Podczas przeszukiwania symboli u¿ywanych przez wszystkie pliki binarne, dpkg−shlibdeps zapamiêtuje (najwiêksz±) minimaln± wersjê wymagan± dla ka¿dej biblioteki. Na koñcu procesu jest wiêc w stanie wypisaæ minimalne zale¿no¶ci dla ka¿dej u¿ytej biblioteki (pod warunkiem, ¿e informacja z plików symbols jest dok³adna).

Jako zabezpieczenie plik symboli mo¿e zawieraæ pole metainformacji Build−Depends−Package, za¶ dpkg−shlibdeps okre¶laj±c minimaln± wersjê wymagan± przez odpowiadaj±cy pakiet z pola Build−Depends bêdzie u¿ywaæ w³a¶nie tej wersji, je¶li jest ona wy¿sza ni¿ minimalna wersja okre¶lona dziêki przeszukiwaniu symboli.

Pliki "shlibs"
Pliki "shlibs" wi±¿± bezpo¶rednio bibliotekê z zale¿no¶ciami (bez przegl±dania symboli). Jest to wiêc czêsto silniejsze ni¿ naprawdê potrzebne, ale bardzo bezpieczne i ³atwe w obs³udze.

Zale¿no¶ci dla biblioteki s± wyszukiwane w kilku miejscach. U¿ywany jest pierwszy plik zawieraj±cy informacje dla danej biblioteki:
debian/shlibs.local

Lokalne informacje z pakietu nadpisuj±ce informacje o zale¿no¶ciach bibliotek wspó³dzielonych.

/etc/dpkg/shlibs.override

Informacje o zasiêgu systemu, które nadpisuj± informacje o zale¿no¶ciach bibliotek wspó³dzielonych.

debian/*/DEBIAN/shlibs

Informacje o zale¿no¶ciach wspó³dzielonych bibliotek wygenerowane w bie¿±cym procesie budowy, który wywo³a³ równie¿ dpkg−shlibdeps. S± u¿ywane tylko, gdy biblioteka znajduje siê w drzewie budowania pakietu. Plik "shlibs" z tego drzewa ma pierwszeñstwo nad plikami shlibs z innych pakietów binarnych."

katalog_admin/info/package.shlibs

Dostarczane przez pakiet informacje o zale¿no¶ciach bibliotek wspó³dzielonych. O ile nie jest nadpisany, admindir ma warto¶æ /var/lib/dpkg.

/etc/dpkg/shlibs.default

Domy¶lna informacja o zale¿no¶ciach bibliotek wspó³dzielonych, o zakresie systemu.

Uzyskane zale¿no¶ci s± u¿ywane bezpo¶rednio (chyba, ¿e s± odfiltrowane poniewa¿ zosta³y zidentyfikowane jako duplikaty lub s³absze ni¿ jaka¶ inna zale¿no¶æ).

OPCJE

dpkg−shlibdeps interpretuje parametry nie bêd±ce opcjami jako nazwy plików wykonywalnych, tak jakby by³y podane przez −eplik_wykonywalny.
−e
plik_wykonywalny

W³±czenie zale¿no¶ci odpowiadaj±cych bibliotekom wspó³dzielonym wymaganym przez plik_wykonywalny.

−dpole_zale¿no¶ci

Dodanie zale¿no¶ci, które maj± byæ dodane do pola zale¿no¶ci pole_zale¿no¶ci pliku kontrolnego. (Zale¿no¶ci dla tego pola s± umieszczane w zmiennej shlibs:pole_zale¿no¶ci.)

Opcja −dpole_zale¿no¶ci wp³ywa na wszystkie pliki wykonywalne podane po tej opcji, a¿ do nastêpnego −dpole_zale¿no¶ci. Domy¶lnym polem_zale¿no¶ci jest Depends.

Je¶li to samo okre¶lenie zale¿no¶ci (lub zbiór alternatyw) pojawia siê w wiêcej ni¿ jednej nazwie z rozró¿nianych pól zale¿no¶ci Pre−Depends, Depends, Recommends, Enhances lub Suggests to dpkg−shlibdeps automatycznie usunie zale¿no¶æ ze wszystkich pól, poza polem reprezentuj±cym najwa¿niejsze zale¿no¶ci.

−pprefiks_nazw_zmiennych

Rozpoczynanie nazw zmiennych podstawiania od prefiks_nazw_zmiennych: zamiast shlibs:. Podobnie, wszystkie zmienne rozpoczynaj±ce siê od prefiks_nazw_zmiennych: (zamiast shlibs:) s± usuwane z pliku zmiennych podstawiania.

−O

Wy¶wietlenie ustawieñ zmiennych podstawiania na standardowe wyj¶cie, zamiast dodawania ich do pliku zmiennych podstawiania (domy¶lnie debian/substvars).

−ttyp

Preferowanie informacji o zale¿no¶ciach bibliotek wspó³dzielonych oznaczonych dla danego typu pakietu. Je¶li informacji oznaczonych nie ma, u¿ywane s± informacje bez oznaczeñ. Domy¶lnym typem pakietu jest "deb". Informacje o zale¿no¶ciach bibliotek wspó³dzielonych s± oznaczane dla danego typu pakietu przez poprzedzenie ich nazw± typu, dwukropkiem oraz bia³ymi znakami (spacjami).

−Llokalny_plik_shlibs

Odczyt nadpisañ informacji o bibliotekach wspó³dzielonych z lokalnego_pliku_shlibs zamiast debian/shlibs.local.

−Tplik_zmiennych_podst

Zapis zmiennych podstawiania w pliku plik_zmiennych_podst; domy¶lnie jest to debian/substvars.

−v

W³±czenie dodatkowych informacji. Wy¶wietlanych jest wiele komunikatów t³umacz±cych dzia³anie dpkg−shlibdeps.

−xpakiet

Wy³±czenie pakietu z generowanych zale¿no¶ci. U¿yteczne aby zapobiec zale¿no¶ciom pakietu od samego siebie dla pakietów dostarczaj±cych binaria typu ELF (pliki wykonywalne lub biblioteki), które zale¿± od innej biblioteki zawartej w tym samym pakiecie. Ta opcja mo¿e byæ u¿yta wielokrotnie aby wy³±czyæ kilka pakietów.

−Skatalog_budowania_pakietu

Przegl±danie najpierw katalogu_budowania_pakietu przy próbie odnalezienia biblioteki. Przydatne gdy pakiet ¼ród³owy tworzy wiele odmian tej samej biblioteki, a chce siê zapewniæ uzyskanie zale¿no¶ci od okre¶lonego pakietu binarnego. Ta opcja mo¿e byæ u¿yta wielokrotnie: katalogi bêd± przegl±dane w tej samej kolejno¶ci przed katalogami innych pakietów binarnych.

−−ignore−missing−info

Kontynuacja pomimo braku informacji o zale¿no¶ciach dla biblioteki wspó³dzielonej. Odradza siê u¿ywanie tej opcji, wszystkie biblioteki powinny dostarczaæ informacje o zale¿no¶ciach (w postaci plików shlibs lub plików symboli) − nawet je¶li nie s± jeszcze u¿ywane przez inne pakiety.

−−warnings=warto¶æ

warto¶æ jest polem bitowym definiuj±cym zbiór ostrze¿eñ, które mog± byæ wys³ane przez dpkg−shlibdeps. Bit 0 (warto¶æ=1) w³±cza ostrze¿enie "w ¿adnej z bibliotek nie znaleziono symbolu symb u¿ywanego przez plik_binarny", bit 1 (warto¶æ=2) w³±cza ostrze¿enie "mo¿na by unikn±æ zale¿no¶ci od biblioteki bibl", za¶ bit 2 (warto¶æ=4) w³±cza ostrze¿enie "plik_binarny nie powinien byæ linkowany z bibliotek±". Domy¶ln± warto¶ci± jest 3: pierwsze dwa ostrze¿enia s± domy¶lnie aktywne, za¶ ostatnie nie. Ustawienie warto¶ci na 7 powoduje aktywacjê wszystkich ostrze¿eñ.

−−admindir=katalog

Zmienia po³o¿enie bazy danych dpkg. Domy¶lnie jest to /var/lib/dpkg.

−h, −−help

Wy¶wietla informacjê o u¿ytkowaniu i koñczy dzia³anie.

−−version

Wy¶wietla informacjê o wersji i pomy¶lnie koñczy dzia³anie.

UWAGI

Poniewa¿ dpkg−shlibdeps analizuje zbiór symboli u¿ywanych przez ka¿dy plik binarny generowanego pakietu, jest w stanie wysy³aæ ostrze¿enia w pewnych przypadkach. Informuj± one o rzeczach, które mog± byæ ulepszone w pakiecie. W wiêkszo¶ci przypadków dotyczy to bezpo¶rednio oryginalnych ¼róde³. Poni¿ej zebrane s± ostrze¿enia na jakie mo¿na natrafiæ, w kolejno¶ci malej±cej wa¿no¶ci:
w ¿adnej z bibliotek nie znaleziono symbolu
symb u¿ywanego przez
plik_binarny

Wskazany symbol nie zosta³ odnaleziony w ¿adnej z bibliotek, z którymi jest linkowany plik binarny. Taki plik_binarny jest najpewniej bibliotek± i powinien byæ linkowany z dodatkow± bibliotek± podczas budowania pakietu (opcja −lbiblioteka linkera).

plik_binarny zawiera nierozwi±zywalne odniesienie do symbolu sym:
prawdopodobnie jest to wtyczka

Wskazany symbol nie zosta³ odnaleziony w ¿adnej z bibliotek, z którymi jest linkowany plik binarny. Taki plik_binarny jest najpewniej wtyczk± i jest prawdopodobnie dostarczany wraz z programem, który ³adujê tak± wtyczkê. Teoretycznie wtyczka nie powinna mieæ pola SONAME, jednak ten plik binarny je posiada i nie mo¿na go zidentyfikowaæ na tej podstawie. Fakt, i¿ plik ten jest umieszczony w niepublicznym katalogu mocno wskazuje na to, ¿e nie jest on zwyk³± bibliotek± wspó³dzielon±. Je¶li plik binarny rzeczywi¶cie jest wtyczk±, mo¿na pomin±æ to ostrze¿enie. Jednak zawsze istnieje mo¿liwo¶æ, ¿e jest to biblioteka i programy z ni± linkowane u¿ywaj± RPATH, aby dynamiczny loader by³ w stanie j± odnale¼æ. W takim przypadku bibliotekê mo¿na uznaæ za zepsut± i nale¿y j± naprawiæ.

mo¿na by unikn±æ zale¿no¶ci od biblioteki, je¿eli nie by³oby
niepotrzebnego linkowania
plików_binarnych z ni± (nie s± u¿ywane ¿adne
z tamtejszych symboli).

¯aden z plików_binarnych, które s± linkowane z bibliotek± nie u¿ywa symboli przez ni± udostêpnianych. Poprawiaj±c wszystkie pliki binarne mo¿na unikn±æ zale¿no¶ci zwi±zanych z t± bibliotek± (chyba, ¿e taka sama zale¿no¶æ jest równie¿ generowana przez inn± bibliotekê, która jest faktycznie u¿ywana).

plik_binarny nie powinien byæ linkowany z bibliotek± (nie s± u¿ywane
¿adne z tamtejszych symboli).

plik_binarny jest linkowany z bibliotek±, której nie potrzebuje. Nie jest to problem, ale mo¿na uzyskaæ pewn± poprawê wydajno¶ci czasu ³adowania pliku binarnego, je¶li biblioteka ta nie bêdzie z nim linkowana. To ostrze¿enie sprawdza te same informacje co poprzednie, ale wykonuje to dla ka¿dego pliku binarnego zamiast wykonywania globalnego sprawdzenia dla wszystkich analizowanych plików.

B£ÊDY

dpkg−shlibdeps przerwie dzia³anie z b³êdem je¶li nie bêdzie w stanie znale¼æ publicznej biblioteki u¿ywanej przez plik binarny, lub je¶li biblioteka taka nie bêdzie mieæ powi±zanej informacji o zale¿no¶ciach (pliku shlibs lub pliku symboli). Publiczne biblioteki maj± SONAME i s± wersjonowane (jak np. libsomething.so.X). Biblioteki prywatne (jak np. wtyczki) nie powinny mieæ SONAME i nie musz± byæ wersjonowane.
nie mo¿na znale¼æ biblioteki
soname−biblioteki potrzebnej dla
pliku_binarnego
(RPATH to "rpath")

plik_binarny u¿ywa biblioteki o nazwie soname−biblioteki, ale dpkg−shlibdeps nie móg³ odnale¼æ tej biblioteki. dpkg−shlibdeps tworzy listê katalogów do sprawdzenia w nastêpuj±cy sposób: katalogi wymienione w RPATH pliku binarnego, katalogi wymienione w /etc/ld.so.conf, katalogi wymienione w zmiennej ¶rodowiskowej LD_LIBRARY_PATH, oraz standardowe katalogi publiczne (/lib, /usr/lib, /lib32, /usr/lib32, /lib64, /usr/lib64). Nastêpnie sprawdza podobnie katalogi w drzewie budowania pakietu dla analizowanego pliku binarnego, w drzewach budowania pakietów podanych jako parametry opcji −S, w innych drzewach budowania zawieraj±cych pliki DEBIAN/shlibs olub DEBIAN/symbols, a na koñcu w katalogu g³ównym. Je¶li biblioteka nie zostanie odnaleziona w ¿adnym z tych katalogów, otrzymuje siê ten b³±d.

Je¶li nie odnaleziona biblioteka jest w prywatnym katalogu tego samego pakietu, nale¿y dodaæ taki katalog do LD_LIBRARY_PATH. Je¶li biblioteka jest w innym budowanym binarnym pakiecie, nale¿y upewniæ siê, ¿e plik shlibs lub plik symboli dla tego pakietu zosta³ stworzony oraz, ¿e LD_LIBRARY_PATH zawiera odpowiedni katalog je¶li biblioteka tak¿e jest w katalogu prywatnym.

nie znaleziono informacji o zale¿no¶ciach dla plik−biblioteki
(u¿ywanego przez
plik−binarny).

Biblioteka wymagana przez plik−binarny zosta³a znaleziona przez dpkg−shlibdeps w pliku−biblioteki, ale dpkg−shlibdeps nie móg³ odnale¼æ ¿adnej informacji o zale¿no¶ciach dla tej biblioteki. Aby okre¶liæ zale¿no¶ci, podjêto próbê u¿ycia dpkg −Splik−biblioteki w celu okre¶lenia pakietu dostarczaj±cego dan± bibliotekê. Nastêpnie sprawdzono odpowiednie pliki shlibs i pliki symboli w /var/lib/dpkg/info/ oraz w ró¿nych drzewach budowania pakietów (debian/*/DEBIAN/).

To niepowodzenie mo¿e byæ spowodowane przez niepoprawny lub nieistniej±cy plik shlibs lub plik symboli w pakiecie biblioteki. Mo¿e siê równie¿ zdarzyæ je¶li biblioteka jest budowana wewn±trz tego samego pakietu ¼ród³owego, a pliki shlibs jeszcze nie zosta³y stworzone (w takim przypadku nale¿y poprawiæ debian/rules aby shlibs by³y tworzone przed wywo³aniem dpkg−shlibdeps). Niew³a¶ciwa warto¶æ RPATH mo¿e równie¿ powodowaæ, ¿e biblioteka zostanie odnaleziona pod nietypow± nazw±, która nie jest zwi±zana z ¿adnym pakietem (np. /usr/lib/openoffice.org/../lib/libssl.so.0.9.8 zamiast /usr/lib/libssl.so.0.9.8). dpkg−shlibdeps próbuje poradziæ sobie z tym staraj±c siê odczytaæ nazwê kanoniczn± (z u¿yciem realpath(3)) ale mo¿e to nie zawsze zadzia³aæ. Aby unikn±æ problemów, najlepiej jest zawsze doprowadziæ do porz±dku RPATH pliku binarnego.

Wywo³anie dpkg−shlibdeps w trybie rozszerzonej informacji (−v) dostarcza wielu dodatkowych informacji o tym, gdzie próbowa³ on znale¼æ informacjê o zale¿no¶ciach. Mo¿e to byæ przydatne je¶li nie wiadomo dlaczego zwracany jest ten b³±d.

ZOBACZ TAK¯E

deb−shlibs(5), deb−symbols(5), dpkg−gensymbols(1).

AUTORZY

Copyright © 1995−1996 Ian Jackson
Copyright © 2000 Wichert Akkerman
Copyright © 2006 Frank Lichtenheld
Copyright © 2007−2008 Raphaël Hertzog

Niniejszy program jest oprogramowaniem wolnym, sprawd¼ Powszechn± Licencjê Publiczn± GNU w wersji drugiej lub pó¼niejszej, by dowiedzieæ siê o warunkach dystrybucji. Brak JAKIEJKOLWIEK gwarancji.

T£UMACZE

Piotr Roszatycki <dexter@debian.org>, 1999
Bartosz Feñski <fenio@debian.org>, 2004-2005
Robert Luberda <robert@debian.org>, 2006-2008
Wiktor Wandachowicz <siryes@gmail.com>, 2008



dpkg-shlibdeps(1)