dpkg-shlibdeps

Autres langues

Langue: pl

Version: 2008\-08\-18 (debian - 07/07/09)

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 has two possible sources of information to generate dependency information. Either symbols files or shlibs files. For each binary that dpkg-shlibdeps analyzes, it finds out the list of libraries that it's linked with. Then, for each library, it looks up either the symbols file, or the shlibs file (if the former doesn't exist or if debian/shlibs.local contains the relevant dependency). Both files are supposed to be provided by the library package and should thus be available as /var/lib/dpkg/info/package.symbols or /var/lib/dpkg/info/package.shlibs. The package name is identified in two steps: find the library file on the system (looking in the same directories that ld.so would use), then use dpkg -S library-file to lookup the package providing the library.

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).
binary contains an unresolvable reference to symbol sym: it's probably a plugin
The indicated symbol has not been found in the libraries linked with the binary. The binary is most likely a plugin and the symbol is probably provided by the program that loads this plugin. In theory a plugin doesn't have any SONAME but this binary does have one and as such it could not be clearly identified as such. However the fact that the binary is stored in a non-public directory is a strong indication that's it's not a normal shared library. If the binary is really a plugin, then disregard this warning. But there's always the possibility that it's a real library and that programs linking to it are using an RPATH so that the dynamic loader finds it. In that case, the library is broken and needs to be fixed.
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/gcc/i486-linux-gnu/4.2.3/../../../../lib/libssl.so.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