NAZWA¶
dpkg-architecture - ustawia i zwraca architekturę budowania pakietów.
SKŁADNIA¶
dpkg-architecture [
opcja...] [
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
- Część dotycząca CPU z
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_BUILD_MULTIARCH
- Typ systemu GNU komputera, na którym budowany jest
pakiet, używana do ścieżek systemu plików.
- 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.
- DEB_HOST_MULTIARCH
- Oczyszczony typ systemu GNU dla maszyny docelowej,
używany do ścieżek systemu plików.
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:
Otrzymywanie typu GNU systemu i przekazanie go do ./configure:
-
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)
Robienie czegoś tylko do określonej architektury:
-
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.
Można również polegać na zewnętrznym fragmencie
Makefile, aby poprawnie ustawić wszystkie zmienne, które może
udostępnić
dpkg-architecture:
-
include /usr/share/dpkg/architecture.mk
ifeq ($(DEB_HOST_ARCH),alpha)
[...]
endif
Niezależnie od sposobu, nie powinno się nigdy używać
dpkg --print-architecture aby otrzymać informacje o
architekturze, podczas budowania pakietu.
KOMPATYBILNOŚĆ WSTECZNA¶
Fragment /usr/share/dpkg/architecture.mk Makefile jest udostępniany przez
dpkg-dev od wersji 1.16.1.
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 i DEB_HOST_ARCH_OS zostały wprowadzone w dpkg-dev
1.13.2.
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żna zmienić
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).
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
Michał Kułach <michal.kulach@gmail.com>, 2012