Provided by: dpkg-dev_1.15.5.6ubuntu4_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   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_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).

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