dpkg-shlibdeps

Autres langues

Langue: pl

Version: 2009\-03\-08 (ubuntu - 25/10/10)

Section: 1 (Commandes utilisateur)

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.
-eplik_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