NAZWA
dpkg−architecture − 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 CC 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 FTP . 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 GNU
Ł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:
DEB_BUILD_ARCH
Architektura wg Debiana komputera, na którym budowany jest pakiet.
DEB_BUILD_ARCH_OS
Nazwa systemu wg Debiana komputera, na którym budowany jest pakiet.
DEB_BUILD_ARCH_CPU
Nazwa procesora wg Debiana komputera, na którym budowany jest pakiet.
DEB_BUILD_ARCH_BITS
Rozmiar wskaźnika na komputerze budującym (w bitach).
DEB_BUILD_ARCH_ENDIAN
Kolejność bajtów (endian) na komputerze budującym (little / big).
DEB_BUILD_GNU_CPU
The CPU part of DEB_BUILD_GNU_TYPE .
DEB_BUILD_GNU_SYSTEM
Cześć dotycząca systemu z DEB_BUILD_GNU_TYPE .
DEB_BUILD_GNU_TYPE
Typ systemu GNU komputera, na którym budowany jest pakiet.
DEB_HOST_ARCH
Architektura wg Debiana dla maszyny docelowej.
DEB_BUILD_ARCH_OS
Nazwa systemu wg Debiana dla maszyny docelowej.
DEB_HOST_ARCH_CPU
Nazwa procesora wg Debiana dla maszyny docelowej.
DEB_HOST_ARCH_BITS
Rozmiar wskaźnika na maszynie docelowej (w bitach).
DEB_HOST_ARCH_ENDIAN
Kolejność bajtów (endian) na maszynie docelowej (little / big).
DEB_HOST_GNU_CPU
Część dotycząca CUP z DEB_HOST_GNU_TYPE .
DEB_HOST_GNU_SYSTEM
Część dotycząca systemu z DEB_HOST_GNU_TYPE .
DEB_HOST_GNU_TYPE
Typ systemu GNU 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 $( ARCH )−linux
proszę używać:
DEB_BUILD_GNU_TYPE
:= $(shell dpkg−architecture
−qDEB_BUILD_GNU_TYPE)
DEB_HOST_GNU_TYPE := $(shell dpkg−architecture
−qDEB_HOST_GNU_TYPE)
configure −−build=$( DEB_BUILD_GNU_TYPE ) −−host=$( DEB_HOST_GNU_TYPE )
Zamiast:
ARCH=`dpkg
−−print−architecture`
ifeq ($( ARCH ),alpha)
...
endif
proszę używać:
DEB_HOST_ARCH := $(shell dpkg−architecture −qDEB_HOST_ARCH)
ifeq ($(
DEB_HOST_ARCH ),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:
DEB_BUILD_ARCH
:= $(shell dpkg −−print−architecture)
DEB_BUILD_GNU_CPU := $(patsubst hurd−%,%,$(
DEB_BUILD_ARCH ))
ifeq ($(filter−out hurd−%,$(
DEB_BUILD_ARCH )),)
DEB_BUILD_GNU_SYSTEM := gnu
else
DEB_BUILD_GNU_SYSTEM := linux−gnu
endif
DEB_BUILD_GNU_TYPE=$( DEB_BUILD_GNU_CPU
)−$( DEB_BUILD_GNU_SYSTEM )
DEB_HOST_ARCH
:= $( DEB_BUILD_ARCH )
DEB_HOST_GNU_CPU := $(
DEB_BUILD_GNU_CPU )
DEB_HOST_GNU_SYSTEM := $(
DEB_BUILD_GNU_SYSTEM )
DEB_HOST_GNU_TYPE := $(
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.
ZOBACZ TAKŻE
dpkg−buildpackage(1), dpkg−cross(1).
AUTOR
dpkg−architecture i ta strona podręcznika ekranowego zostały napisane Marcusa Brinkmanna <brinkmd [AT] debian.org>.
TŁUMACZE
Piotr
Roszatycki <dexter [AT] debian.org>, 1999
Bartosz Feński <fenio [AT] debian.org>, 2004-2005
Robert Luberda <robert [AT] debian.org>, 2006-2008
Wiktor Wandachowicz <siryes [AT] gmail.com>, 2008