![]() |
dpkg-architecture(1) |
![]() |
dpkg−architecture − ustawia i zwraca architekturê budowania pakietów.
dpkg−architecture [opcje] [polecenia]
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.
−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.
−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)). |
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.
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.
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.
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).
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
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.
dpkg−buildpackage(1), dpkg−cross(1).
dpkg−architecture i ta strona podrêcznika ekranowego zosta³y napisane Marcusa Brinkmanna <brinkmd@debian.org>.
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
![]() |
dpkg-architecture(1) | ![]() |