VOOZH about

URL: https://pl.manpages.org/dpkg-architecture

⇱ man dpkg-architecture (1): ustawia i zwraca architekturę budowania pakietów.


dpkg-architecture(1) ustawia i zwraca architekturę budowania pakietów.

SKŁADNIA

dpkg-architecture [opcje] [polecenia]

OPIS

dpkg-architecture dostarcza sposobu na określenie i ustawienie architektury budowania oraz architektury docelowej dla budowania pakietów.

Architektura budowania jest zawsze określana przez wywołanie dpkg i nie może być ustawiona w linii poleceń.

Można podać architekturę docelową przez podanie jednej lub obu opcji spośród -a i -t. Wartość domyślna jest określana przez wywołanie programu gcc(1), a w razie gdy i gcc nie są dostępne, jest taka sama jak architektura budowania. Wystarczy podać tylko jedną spośród opcji -a i -t, ponieważ ta druga zostanie ustawiona na sensowną wartość domyślną. Co więcej, często podanie jednej opcji jest lepsze niż podanie ich obu naraz, gdyż dpkg-architecture wypisze ostrzeżenie, jeśli podane wartości nie będą odpowiadały wartościom domyślnym.

POLECENIA

-l
Wyświetla zmienne środowiskowe, po jednej w każdej linii, w formacie ZMIENNA=wartość. Jest to domyślna akcja.
-earchitektura-debiana
Sprawdza równoważność architektur. Domyślnie architektura-debiana jest porównywana z bieżącą architekturą Debiana, traktowaną jako architektura gospodarza. Ta akcja nie rozwija masek architektur. Polecenie kończy się kodem wyjścia 0 jeśli dopasowanie architektur się powiodło, lub kodem 1 jeśli nie było dopasowania.
-imaska-architektury
Sprawdzenie architektury przez rozwinięcie w odpowiedni sposób maski-architektury i porównanie z bieżącą architekturą Debiana. Polecenie kończy się kodem wyjścia 0 jeśli dopasowanie architektur się powiodło, lub kodem 1 jeśli nie było dopasowania.
-qnazwa-zmiennej
Wyświetla wartość pojedynczej zmiennej.
-s
Wyświetla polecenie export, które może być użyte do ustawienia zmiennych środowiskowych za pomocą eval.
-u
Wyświetla polecenie podobne do -s, jednakże ze wszystkimi zmiennymi nieustawionymi.
-c polecenie
Wykonuje polecenie w środowisku, które ma wszystkie zmienne ustawione na wyznaczone wartości.
-L
Wyświetla listę poprawnych nazw architektur.
--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.

OPCJE

-aarchitektura-debiana
Ustawia architekturę Debiana.
-ttyp-systemu-gnu
Ustawia typ systemu GNU.
-f
Honorowane są wartości ustawione w istniejących zmiennych środowiskowych o tych samych nazwach, co używane w skryptach (np. użyte przez dpkg-architecture), chyba że jest obecna ta flaga wymuszenia. Pozwala to na nadpisanie wartości nawet jeśli wywołanie dpkg-architecture jest ukryte głęboko w jakimś innym skrypcie (np. dpkg-buildpackage(1)).

WARUNKI

maszyna budowania
Rodzaj maszyny, na której pakiet jest budowany.
maszyna docelowa
Rodzaj maszyny, dla której pakiet jest budowany.
architektura Debiana
Łańcuch znaków zawierający architekturę Debiana, która określa drzewo binarne w archiwum . Przykłady: i386, sparc, hurd-i386.
maska architektury
Maska architektury jest specjalnym łańcuchem znaków, który będzie pasował do każdej architektury, która jest jego częścią. Ogólna postać jest następująca: <jądro>-<procesor>. Przykłady: linux-any, any-i386, hurd-any.
typ systemu
Łańcuch znaków określający architekturę składający się z dwóch części oddzielonych myślnikiem: procesor i system. Przykłady: i386-linux-gnu, sparc-linux-gnu, i386-gnu, x86_64-netbsd.

ZMIENNE

dpkg-architecture ustawia następujące zmienne:
Architektura wg Debiana komputera, na którym budowany jest pakiet.
Nazwa systemu wg Debiana komputera, na którym budowany jest pakiet.
Nazwa procesora wg Debiana komputera, na którym budowany jest pakiet.
Rozmiar wskaźnika na komputerze budującym (w bitach).
Kolejność bajtów (endian) na komputerze budującym (little / big).
The part of .
Cześć dotycząca systemu z .
Typ systemu komputera, na którym budowany jest pakiet.
Architektura wg Debiana dla maszyny docelowej.
Nazwa systemu wg Debiana dla maszyny docelowej.
Nazwa procesora wg Debiana dla maszyny docelowej.
Rozmiar wskaźnika na maszynie docelowej (w bitach).
Kolejność bajtów (endian) na maszynie docelowej (little / big).
Część dotycząca z .
Część dotycząca systemu z .
Typ systemu dla maszyny docelowej.

DEBIAN/RULES

Zmienne środowiskowe ustawione przez dpkg-architecture są przekazywane do debian/rules jako zmienne programu make (patrz dokumentacja do make). Jednakże nie należy na nich polegać, gdyż psuje to ręczne uruchomienie tego skryptu. Zamiast tego, należy zawsze inicjować je, używając dpkg-architecture z opcją -q. Poniżej znajduje się parę przykładów, które także pokazują, jak można polepszyć wsparcie dla kompilacji krzyżowej pakietu:

Zamiast:

ARCH=`dpkg --print-architecture`
configure $()-linux

proszę używać:

 := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
 := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
configure --build=$() --host=$()

Zamiast:

ARCH=`dpkg --print-architecture`
ifeq ($(),alpha)
 ...
endif

proszę używać:

 := $(shell dpkg-architecture -qDEB_HOST_ARCH)
ifeq ($(),alpha)
 ...
endif

albo jeśli trzeba sprawdzić tylko typ CPU lub OS, należy użyć zmiennych DEB_HOST_ARCH_CPU lub DEB_HOST_ARCH_OS.

Ogólnie wywoływanie dpkg w pliku rules w celu pobrania informacji o architekturze jest przestarzałe (chyba że chce się zachować kompatybilność wsteczną, patrz niżej). W szczególności opcja --print-architecture jest niezbyt wiarygodna, ponieważ istnieją architektury Debiana, które nie są równe nazwie procesora.

KOMPATYBILNOŚĆ WSTECZNA

Zmienne DEB_*_ARCH_BITS oraz DEB_*_ARCH_ENDIAN zostały wprowadzone w dpkg-dev 1.15.4. Używanie ich w debian/rules wymaga więc zależności czasu budowania dla dpkg-dev (>= 1.15.4).

Zmienne DEB_HOST_ARCH_CPU oraz DEB_HOST_ARCH_OS są dostępne w miarę nowych wersjach dpkg-architecture (od dpkg 1.13.2). Wcześniej w plikach debian/rules były sprawdzane zmienne DEB_HOST_GNU_CPU lub DEB_HOST_GNU_TYPE, które zostały zmienione.

Wszystkie pliki debian/rules, decydujące na podstawie tych zmiennych jak i co kompilować, powinny być zaktualizowane i przystosowane do używania nowych zmiennych i ich wartości. Aby zachować wsteczną kompatybilność z poprzednimi wersjami dpkg-dev, można użyć następującego kodu:

DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU 2>/dev/null)
DEB_HOST_ARCH_OS := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS 2>/dev/null)
# Bierze pod uwagę wyjście ze starego dpkg-architecture.
ifeq ($(DEB_HOST_ARCH_CPU),)
 DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_GNU_CPU)
 ifeq ($(DEB_HOST_ARCH_CPU),x86_64)
 DEB_HOST_ARCH_CPU := amd64
 endif
endif
ifeq ($(DEB_HOST_ARCH_OS),)
 DEB_HOST_ARCH_OS := $(subst -gnu,,$(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM))
 ifeq ($(DEB_HOST_ARCH_OS),gnu)
 DEB_HOST_ARCH_OS := hurd
 endif
endif

I podobnie dla DEB_BUILD_ARCH_CPU oraz DEB_BUILD_ARCH_OS.

Jeśli chcesz wciąż obsługiwać wersje dpkg-dev, które nie zawierają dpkg-architecture, to poniższy kod wykonuje to zadanie:

 := $(shell dpkg --print-architecture)
 := $(patsubst hurd-%,%,$())
ifeq ($(filter-out hurd-%,$()),)
  := gnu
else
  := linux-gnu
endif
DEB_BUILD_GNU_TYPE=$()-$()
 := $()
 := $()
 := $()
 := $()

Umieść podzbiór tych linii na górze pliku debian/rules; te domyślne wartości będą nadpisane przez dpkg-architecture, jeśli jest używane.

Nie ma potrzeby używania pełnego zestawu zmiennych. Można wybrać spójny ich zbiór, zawierający wartości używane w pliku rules. Na przykład, jeżeli potrzebna jest tylko architektura Debiana maszyny, dla której budowany jest pakiet, wystarczające jest użycie "DEB_HOST_ARCH=`dpkg --print-architecture`" (tak naprawdę jest to architektura Debiana maszyny, na której jest budowany pakiet, ale proszę pamiętać, że próbujemy tylko zachować wsteczną zgodność z natywną kompilacją).

Opcje -e i -i zostały wprowadzone w miarę nowych wersjach dpkg-architecture (od wersji dpkg 1.13.13).

PRZYKŁADY

dpkg-buildpackage akceptuje opcję -a i przekazuje ją do dpkg-architecture. Inne przykłady:
CC=i386-gnu-gcc dpkg-architecture -c debian/rules build
eval `dpkg-architecture -u`

Sprawdzanie, czy architektura jest równa architekturze bieżącej lub podanej:

dpkg-architecture -elinux-alpha
dpkg-architecture -amips -elinux-mips

Sprawdzanie, czy architektura bieżąca podana przez -a jest systemem Linuksa:

dpkg-architecture -ilinux-any
dpkg-architecture -ai386 -ilinux-any

PLIKI

Wszystkie te pliki muszą być obecne, aby dpkg-architecture w ogóle działał. Ich położenie możnazmienić w czasie działania programu przez ustawienie zmiennej środowiskowej DPKG_DATADIR.
/usr/share/dpkg/cputable
Tabela znanych nazw procesorów i ich mapowanie na nazwy GNU.
/usr/share/dpkg/ostable
Tabela nazw znanych systemów operacyjnych i ich mapowanie na nazwy GNU.
/usr/share/dpkg/triplettable
Mapowanie między trójkami architektur Debiana a nazwami architektur Debiana.

AUTOR

dpkg-architecture i ta strona podręcznika ekranowego zostały napisane Marcusa Brinkmanna <[email protected]>.

TŁUMACZE

Piotr Roszatycki <[email protected]>, 1999
Bartosz Feński <[email protected]>, 2004-2005
Robert Luberda <[email protected]>, 2006-2008
Wiktor Wandachowicz <[email protected]>, 2008