Provided by: dpkg-dev_1.15.4ubuntu2_all bug

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-zalenoci,    przy   czym   pole-zalenoci   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_zalenoci
              Dodanie zależności, które mają być  dodane  do  pola  zależności
              pole_zalenoci  pliku kontrolnego. (Zależności dla tego pola są
              umieszczane w zmiennej shlibs:pole_zalenoci.)

              Opcja -dpole_zalenoci wpływa na  wszystkie  pliki  wykonywalne
              podane   po  tej  opcji,  aż  do  następnego  -dpole_zalenoci.
              Domyślnym polem_zalenoci 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ą wartoci jest 3:
              pierwsze dwa ostrzeżenia są domyślnie aktywne, zaś ostatnie nie.
              Ustawienie   wartoci   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 plikw_binarnych z nią (nie  używane  żadne
       z tamtejszych symboli).
              Żaden  z  plikw_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    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 (C) 1995-1996 Ian Jackson
       Copyright (C) 2000 Wichert Akkerman
       Copyright (C) 2006 Frank Lichtenheld
       Copyright (C) 2007-2008 Raphael 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