.\" dpkg manual page - dpkg-deb(1)
.\"
.\" Copyright ÂŠ 1995-1996 Ian Jackson <ian@chiark.chu.cam.ac.uk>
.\" Copyright ÂŠ 2000 Wichert Akkerman <wakkerma@debian.org>
.\" Copyright ÂŠ 2006 Frank Lichtenheld <djpig@debian.org>
.\" Copyright ÂŠ 2007-2011 RaphaĂŤl Hertzog <hertzog@debian.org>
.\" Copyright ÂŠ 2012 Guillem Jover <guillem@debian.org>
.\"
.\" This is free software; you can redistribute it and/or modify
.\" it under the terms of the GNU General Public License as published by
.\" the Free Software Foundation; either version 2 of the License, or
.\" (at your option) any later version.
.\"
.\" This is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public License
.\" along with this program.  If not, see <http://www.gnu.org/licenses/>.
.
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH dpkg\-shlibdeps 1 2012\-05\-04 "Projekt Debian" "programy pomocnicze dpkg"
.SH NAZWA
dpkg\-shlibdeps \- generowanie zależności podstawień współdzielonych bibliotek
.
.SH SKŁADNIA
\fBdpkg\-shlibdeps\fP [\fIopcja\fP...] [\fB\-e\fP]\fIplik\-wykonywalny\fP [\fIopcja\fP...]
.
.SH OPIS
\fBdpkg\-shlibdeps\fP 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 \fBdebian/substvars\fP jako zmienne
\fBshlibs:\fP\fIpole\-zależności\fP, przy czym \fIpole\-zależności\fP jest nazwą
odpowiedniego pola zależności. Wszystkie inne zmienne rozpoczynające się od
\fBshlibs:\fP są usuwane z tego pliku.
.P
\fBdpkg\-shlibdeps\fP ma dwa źródła informacji służące do generowania informacji
o zależnościach. Są to pliki \fIsymbols\fP lub pliki \fIshlibs\fP. Dla każdego
pliku binarnego analizowanego przez \fBdpkg\-shlibdeps\fP określana jest lista
bibliotek, z którymi jest on linkowany. Następnie dla każdej biblioteki
przeglądany jest plik \fIsymbols\fP lub plik \fIshlibs\fP (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/\fIpakiet\fP.\fIsymbols\fP lub
/var/lib/dpkg/info/\fIpakiet\fP.\fIshlibs\fP. Nazwa pakietu jest określana w dwóch
krokach: odnalezienie pliku biblioteki w systemie (sprawdzając w tych samych
katalogach, których używa \fBld.so\fP), a następnie użycie \fBdpkg \-S
\fP\fIplik\-biblioteki\fP w celu określenia pakietu dostarczającego daną
bibliotekę.
.SS "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):
.IP debian/*/DEBIAN/symbols
Informacje o współdzielonej bibliotece wygenerowane w bieżącym procesie
budowy, który wywołał również \fBdpkg\-shlibdeps\fP. Są one generowane przez
\fBdpkg\-gensymbols\fP(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.
.IP /etc/dpkg/symbols/\fIpakiet\fP.symbols.\fIarch\fP
.IP /etc/dpkg/symbols/\fIpakiet\fP.symbols
Informacje o zasięgu systemu, które nadpisują informacje o zależnościach
bibliotek współdzielonych. \fIarch\fP jest architekturą bieżącego systemu
(określoną przez \fBdpkg\-architecture \-qDEB_HOST_ARCH\fP).
.IP "Wynik z \(dq\fBdpkg\-query \-\-control\-path\fP \fIpakiet\fP symbols\(dq"
Dostarczane przez pakiet informacje o zależnościach bibliotek
współdzielonych. O ile nie jest nadpisany przez \-\-admindir, pliki te są
położone w /var/lib/dpkg.
.P
Podczas przeszukiwania symboli używanych przez wszystkie pliki binarne,
\fBdpkg\-shlibdeps\fP 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 \fIsymbols\fP jest dokładna).
.P
Jako zabezpieczenie plik symboli może zawierać pole metainformacji
\fIBuild\-Depends\-Package\fP, zaś \fBdpkg\-shlibdeps\fP 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.
.SS "Pliki \(dqshlibs\(dq"
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.
.P
Zależności dla biblioteki są wyszukiwane w kilku miejscach. Używany jest
pierwszy plik zawierający informacje dla danej biblioteki:
.IP debian/shlibs.local
Lokalne informacje z pakietu nadpisujące informacje o zależnościach
bibliotek współdzielonych.
.IP /etc/dpkg/shlibs.override
Informacje o zasięgu systemu, które nadpisują informacje o zależnościach
bibliotek współdzielonych.
.IP debian/*/DEBIAN/shlibs
Informacje o zależnościach współdzielonych bibliotek wygenerowane w bieżącym
procesie budowy, który wywołał również \fBdpkg\-shlibdeps\fP. 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."
.IP "Wynik z \(dq\fBdpkg\-query \-\-control\-path\fP \fIpakiet\fP shlibs\(dq"
Dostarczane przez pakiet informacje o zależnościach bibliotek
współdzielonych. O ile nie jest nadpisany przez \-\-admindir, pliki te są
położone w /var/lib/dpkg.
.IP /etc/dpkg/shlibs.default
Domyślna informacja o zależnościach bibliotek współdzielonych, o zakresie
systemu.
.P
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ść).
.SH OPCJE
\fBdpkg\-shlibdeps\fP interpretuje parametry nie będące opcjami jako nazwy
plików wykonywalnych, tak jakby były podane przez \fB\-e\fP\fIplik_wykonywalny\fP.
.TP 
\fB\-e\fP\fIplik\-wykonywalny\fP
Włączenie zależności odpowiadających bibliotekom współdzielonym wymaganym
przez \fIplik\-wykonywalny\fP.
.TP 
\fB\-d\fP\fIpole\-zależności\fP
Dodanie zależności, które mają być dodane do pola zależności
\fIpole\-zależności\fP pliku kontrolnego (zależności dla tego pola są
umieszczane w zmiennej \fBshlibs:\fP\fIpole\-zależności\fP).

Opcja \fB\-d\fP\fIpole\-zależności\fP wpływa na wszystkie pliki wykonywalne podane
po tej opcji, aż do następnego \fB\-d\fP\fIpole\-zależności\fP. Domyślnym
\fIpolem\-zależności\fP jest \fBDepends\fP.

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 \fBPre\-Depends\fP,
\fBDepends\fP, \fBRecommends\fP, \fBEnhances\fP lub \fBSuggests\fP to \fBdpkg\-shlibdeps\fP
automatycznie usunie zależność ze wszystkich pól, poza polem reprezentującym
najważniejsze zależności.
.TP 
\fB\-p\fP\fIprefiks\-nazw\-zmiennych\fP
Rozpoczynanie nazw zmiennych podstawiania od \fIprefiks\-nazw\-zmiennych\fP\fB:\fP
zamiast \fBshlibs:\fP. Podobnie, wszystkie zmienne rozpoczynające się od
\fIprefiks\-nazw\-zmiennych\fP\fB:\fP (zamiast \fBshlibs:\fP) są usuwane z pliku
zmiennych podstawiania.
.TP 
\fB\-O\fP
Wyświetlenie ustawień zmiennych podstawiania na standardowe wyjście, zamiast
dodawania ich do pliku zmiennych podstawiania (domyślnie
\fBdebian/substvars\fP).
.TP 
\fB\-t\fP\fItyp\fP
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).
.TP 
\fB\-L\fP\fIlokalny\-plik\-shlibs\fP
Odczyt nadpisań informacji o bibliotekach współdzielonych z
\fIlokalnego\-pliku\-shlibs\fP zamiast \fBdebian/shlibs.local\fP.
.TP 
\fB\-T\fP\fIplik\-zmiennych\-podst\fP
Zapis zmiennych podstawiania w pliku \fIplik\-zmiennych\-podst\fP; domyślnie jest
to \fBdebian/substvars\fP.
.TP 
\fB\-v\fP
Włączenie dodatkowych informacji. Wyświetlanych jest wiele komunikatów
tłumaczących działanie \fBdpkg\-shlibdeps\fP.
.TP 
\fB\-x\fP\fIpakiet\fP
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.
.TP 
\fB\-S\fP\fIkatalog\-budowania\-pakietu\fP
Przeglądanie najpierw \fIkatalogu\-budowania\-pakietu\fP 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.
.TP 
\fB\-\-ignore\-missing\-info\fP
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.
.TP 
\fB\-\-warnings=\fP\fIwartość\fP
\fIwartość\fP jest polem bitowym definiującym zbiór ostrzeżeń, które mogą być
wysłane przez \fBdpkg\-shlibdeps\fP. Bit 0 (wartość=1) włącza ostrzeżenie "w
żadnej z bibliotek nie znaleziono symbolu \fIsymb\fP używanego przez
\fIplik\-binarny\fP", bit 1 (wartość=2) włącza ostrzeżenie "można by uniknąć
zależności od biblioteki \fIbibl\fP", zaś bit 2 (wartość=4) włącza ostrzeżenie
"\fIplik\-binarny\fP nie powinien być linkowany z \fIbiblioteką\fP". Domyślną
\fIwartością\fP jest 3: pierwsze dwa ostrzeżenia są domyślnie aktywne, zaś
ostatnie nie. Ustawienie \fIwartości\fP na 7 powoduje aktywację wszystkich
ostrzeżeń.
.TP 
\fB\-\-admindir=\fP\fIkatalog\fP
Zmienia położenie bazy danych \fBdpkg\fP. Domyślnie jest to \fI/var/lib/dpkg\fP.
.TP 
\fB\-?\fP, \fB\-\-help\fP
Wyświetla informację o użytkowaniu i kończy działanie.
.TP 
\fB\-\-version\fP
Wyświetla informację o wersji i pomyślnie kończy działanie.
.
.SH OSTRZEŻENIA
Ponieważ \fBdpkg\-shlibdeps\fP 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:
.TP 
\fBw żadnej z bibliotek nie znaleziono symbolu\fP\fI symb\fP\fB używanego przez \fP\fIplik_binarny\fP
Wskazany symbol nie został odnaleziony w żadnej z bibliotek, z którymi jest
linkowany plik binarny. Taki \fIplik_binarny\fP jest najpewniej biblioteką i
powinien być linkowany z dodatkową biblioteką podczas budowania pakietu
(opcja \fB\-l\fP\fIbiblioteka\fP linkera).
.TP 
\fIplik_binarny\fP\fB zawiera nierozwiązywalne odniesienie do symbolu \fP\fIsym\fP\fB: prawdopodobnie jest to wtyczka\fP
Wskazany symbol nie został odnaleziony w żadnej z bibliotek, z którymi jest
linkowany plik binarny. Taki \fIplik_binarny\fP 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ć.
.TP 
\fBmożna by uniknąć zależności od \fP\fIbiblioteki\fP\fBjeżeli nie byłoby niepotrzebnego linkowania\fP \fIpliku\-binarnego\fP \fBz nią (nie jest używany żadny z tamtejszych symboli)\fP
Żaden z \fIplików_binarnych\fP, które są linkowane z \fIbiblioteką\fP 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).
.TP 
\fBmożna by uniknąć zależności od \fP\fIbiblioteki\fP\fB, jeżeli nie byłoby niepotrzebnego linkowania \fP\fIplików\-binarnych\fP\fB z nią (nie są używane żadne z tamtejszych symboli).\fP
Dokładnie to samo co powyżej, tylko dla kilku plików binarnych.
.TP 
\fIplik\-binarny\fP\fB nie powinien być linkowany z \fP\fIbiblioteką\fP\fB (nie są używane żadne z tamtejszych symboli).\fP
\fIplik_binarny\fP 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.
.SH BŁĘDY
\fBdpkg\-shlibdeps\fP 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.\fIX\fP). Biblioteki prywatne (jak
np. wtyczki) nie powinny mieć SONAME i nie muszą być wersjonowane.
.TP 
\fBnie można znaleźć biblioteki \fP\fIsoname\-biblioteki\fP\fB potrzebnej dla \fP\fIpliku_binarnego\fP\fB (RPATH to "\fP\fIrpath\fP\fB")\fP
\fBplik_binarny\fP używa biblioteki o nazwie \fIsoname\-biblioteki\fP, ale
\fBdpkg\-shlibdeps\fP nie mógł odnaleźć tej biblioteki. \fBdpkg\-shlibdeps\fP 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 lub 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.
.TP 
\fBnie znaleziono informacji o zależnościach dla \fP\fIplik\-biblioteki\fP\fB (używanego przez \fP\fIplik\-binarny\fP\fB).\fP
Biblioteka wymagana przez \fIplik\-binarny\fP została znaleziona przez
\fBdpkg\-shlibdeps\fP w \fIpliku\-biblioteki\fP, ale \fBdpkg\-shlibdeps\fP 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 \fBdpkg \-S\fP\fIplik\-biblioteki\fP 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
\fBdpkg\-shlibdeps\fP). 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). \fBdpkg\-shlibdeps\fP próbuje poradzić sobie
z tym starając się odczytać nazwę kanoniczną (z użyciem \fBrealpath\fP(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 \fBdpkg\-shlibdeps\fP 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.
.SH "ZOBACZ TAKŻE"
\fBdeb\-shlibs\fP(5), \fBdeb\-symbols\fP(5), \fBdpkg\-gensymbols\fP(1).
.SH "TŁUMACZE"
Piotr Roszatycki <dexter@debian.org>, 1999
.br
Bartosz Feński <fenio@debian.org>, 2004-2005
.br
Robert Luberda <robert@debian.org>, 2006-2008
.br
Wiktor Wandachowicz <siryes@gmail.com>, 2008
.br
Michał Kułach <michal.kulach@gmail.com>, 2012
