Scroll to navigation

dpkg-architecture(1) programy pomocnicze dpkg dpkg-architecture(1)

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
2012-01-20 Projekt Debian