Scroll to navigation

dpkg-buildpackage(1) dpkg suite dpkg-buildpackage(1)

NAAM

dpkg-buildpackage - binaire of broncodepakketten bouwen uit de broncode

OVERZICHT

dpkg-buildpackage [optie...]

BESCHRIJVING

dpkg-buildpackage is een programma dat het proces van het bouwen van een Debian pakket automatiseert. Het bestaat uit de volgende stappen:
1.
Het bereidt de bouwomgeving voor door verschillende omgevingsvariabelen in te stellen(zie OMGEVING), voert de uitbreiding (hook) init uit en roept dpkg-source --before-build aan (tenzij -T of --target gebruikt werd).
2.
Het controleert of voldaan is aan de bouw-vereisten en de bouw-tegenstrijdigheden (tenzij -d of --no-check-builddeps opgegeven werd).
3.
Indien met de optie -T of --target een of meer specifieke doelen geselecteerd werden, roept het deze doelen aan en stopt dan. Anders voert het de uitbreiding (hook) preclean uit en roept het fakeroot debian/rules clean aan om de bouwboom zuiver te maken (tenzij -nc of --no-pre-clean opgegeven werd).
4.
Het voert de uitbreiding (hook) source uit en roept dpkg-source -b aan om het broncodepakket te genereren (indien het bouwen van source aangevraagd werd met --build of gelijkwaardige opties).
5.
Het voert de uitbreiding (hook) build uit en roept debian/rules build-target aan. Het voert vervolgens de uitbreiding (hook) binary uit, gevolgd door fakeroot debian/rules binary-target (tenzij enkel de bouw van het broncodepakket gevraagd werd met --build=source of gelijkwaardige opties). Merk op dat build-target en binary-target ofwel build en binary zijn (de standaardsituatie, of indien een bouw van het type any en all aangevraagd werd met --build of gelijkwaardige opties), ofwel build-arch en binary-arch (indien een bouw van het type any maar niet all aangevraagd werd met --build of gelijkwaardige opties), ofwel build-indep en binary-indep (indien een bouw van het type all maar niet any aangevraagd werd met --build of gelijkwaardige opties).
6.
Het voert de uitbreiding (hook) buildinfo uit en roept dpkg-genbuildinfo aan om een bestand .buildinfo aan te maken. Verschillende opties van dpkg-buildpackage worden aan dpkg-genbuildinfo overgemaakt.
7.
Het voert de uitbreiding (hook) changes uit en roept dpkg-genchanges aan om een bestand .changes aan te maken. De naam van het .changes-bestand is afhankelijk van het bouwtype en zal zo specifiek als nodig zijn, maar niet meer dan dat. Voor een bouw die any bevat, zal de naam broncode-naam_binaire-versie_arch.changes zijn. Voor een bouw die all bevat, zal de naam broncode-naam_binaire-versie_all.changes zijn. En voor een bouw die source bevat, zal de naam broncode-naam_broncode-versie_source.changes zijn. Veel opties van dpkg-buildpackage worden aan dpkg-genchanges overgemaakt.
8.
Het voert de uitbreiding (hook) postclean uit en als -tc of --post-clean werd opgegeven zal het nogmaals fakeroot debian/rules clean aanroepen.
9.
Het roept dpkg-source --after-build aan.
10.
Het voert de uitbreiding (hook) check uit en roept een pakketcontroleprogramma aan voor nazicht van het bestand .changes (indien er in DEB_CHECK_COMMAND of met --check-command een commando opgegeven werd).
11.
It runs the sign hook and calls gpg (as long as it is not an UNRELEASED build, or --no-sign is specified) to sign the .dsc file (if any, unless -us or --unsigned-source is specified), the .buildinfo file (unless -ui, --unsigned-buildinfo, -uc or --unsigned-changes is specified) and the .changes file (unless -uc or --unsigned-changes is specified).
12.
Het voert de uitbreiding (hook) done uit.

OPTIES

Alle opties kunnen zowel opgegeven worden aan de commandoregel als in de systeem- en gebruikersconfiguratiebestanden voor dpkg-buildpackage. Elke regel in het configuratiebestand is ofwel een optie (exact hetzelfde als de commandoregeloptie, maar zonder de verbindingsstreepjes aan het begin) of commentaar (als hij begint met een ‘#’).
--build=type
Geeft het bouw-type op vanuit een lijst van door komma's gescheiden componenten (sinds dpkg 1.18.5). Wordt doorgegeven aan dpkg-genchanges.

De waarden die gebruikt mogen worden zijn:

source
Builds the source package.

Note: When using this value standalone and if what you want is simply to (re-)build the source package from a clean source tree, using dpkg-source directly is always a better option as it does not require any build dependencies to be installed which are otherwise needed to be able to call the clean target.

any
Bouwt de architectuurspecifieke binaire pakketten.
all
Bouwt de architectuuronafhankelijke binaire pakketten.
binary
Bouwt de architectuurspecifieke en de architectuuronafhankelijke binaire pakketten. Dit is een alias voor any,all.
full
Bouwt alles. Dit is een alias voor source,any,all en identiek aan de standaardsituatie wanneer geen bouwoptie opgegeven werd..
-g
Het equivalent van --build=source,all (sinds dpkg 1.17.11).
-G
Het equivalent van --build=source,any (sinds dpkg 1.17.11).
-b
Het equivalent van --build=binary of --build=any,all.
-B
Het equivalent van --build=any.
-A
Het equivalent van --build=all.
-S
Het equivalent van --build=source.
-F
Het equivalent van --build=full, --build=source,binary of --build=source,any,all (sinds dpkg 1.15.8).
--target=target[,...]
--target doel[,...]
-T, --rules-target=target[,...]
Roept na het opzetten van de bouwomgeving per opgegeven target eenmaal debian/rules doel aan en stopt het proces van het bouwen van het pakket hier (sinds dpkg 1.15.0, de lange optie sinds dpkg 1.18.8, de ondersteuning voor meerdere targets sinds dpkg 1.18.16). Indien ook --as-root opgegeven werd, dan wordt het commando als systeembeheerder uitgevoerd (zie --root-command). Merk op dat gekende targets die verplicht als systeembeheerder moeten uitgevoerd worden, deze optie niet nodig hebben (d.w.z. de targets clean, binary, binary-arch en binary-indep).
--as-root
Enkel zinvol in samenhang met --target (sinds dpkg 1.15.0). Vereist dat het doel met systeembeheerdersrechten uitgevoerd wordt.
-si
-sa
-sd
-vversie
-Cbeschrijving-van-de-wijzigingen
-m, --release-by=adres-van-de-pakketonderhouder
-e, --build-by=adres-van-de-pakketonderhouder
Wordt ongewijzigd doorgegeven aan dpkg-genchanges. Zie de man-pagina ervan.
-a, --host-arch architectuur
Geef de Debian-architectuur op waarvoor we bouwen (lange optie sinds dpkg 1.17.17). De architectuur van de machine waarop we bouwen, wordt automatisch vastgesteld en ze wordt ook als standaard genomen voor de hostmachine.
-t, --host-type gnu-systeemtype
Geef het GNU-systeemtype op waarvoor we bouwen (lange optie sinds dpkg 1.17.17). Het kan gebruikt worden in de plaats van --host-arch of als een aanvulling om het standaard GNU-systeemtype voor de Debian-architectuur van de host aan te passen.
--target-arch architectuur
Geef de Debian-architectuur op waarvoor de gebouwde programma's zullen bouwen (sinds dpkg 1.17.17). De standaardwaarde is de hostmachine.
--target-type gnu-systeemtype
Geef het GNU-systeemtype op waarvoor de gebouwde programma's zullen bouwen (sinds dpkg 1.17.17). Het kan gebruikt worden in de plaats van --target-arch of als een aanvulling om het standaard GNU-systeemtype voor de Debian doelarchitectuur aan te passen.
-P, --build-profiles=profiel[,...]
Geef het/de profiel(en) die we bouwen op in een lijst met een komma als scheidingsteken (sinds dpkg 1.17.2, de lange optie sinds dpkg 1.18.8). Het standaardgedrag is om niet voor een specifiek profiel te bouwen. Stelt ze ook in (als een lijst met een spatie als scheidingsteken) als de omgevingsvariabele DEB_BUILD_PROFILES, hetgeen bijvoorbeeld toelaat aan debian/rules-bestanden om gebruik te maken van deze informatie bij voorwaardelijke bouwoperaties.
-j, --jobs[=taken|auto]
Aantal taken dat gelijktijdig mag uitgevoerd worden, waarbij het aantal taken overeenkomt met het aantal beschikbare processoren als auto opgegeven werd (sinds dpkg 1.17.10), of onbeperkt is als taken niet opgegeven werd. Dit is het equivalent van de gelijknamige optie voor make(1) (sinds dpkg 1.14.7, lange optie sinds dpkg 1.18.8). Het voegt zichzelf toe aan de omgevingsvariabele MAKEFLAGS, waardoor elke erop volgende aanroep van make de optie overerft en parallelle taakuitvoering dus opgelegd wordt bij het maken van pakketten (en mogelijks ook oplegt aan het bouwsysteem van de toeleveraar indien dat gebruik maakt van make), ongeacht het feit of er ondersteuning is voor het in parallel bouwen, hetgeen tot mislukkingen bij het bouwen kan leiden. Het voegt ook parallel=taken of parallel toe aan de omgevingsvariabele DEB_BUILD_OPTIONS, hetgeen debian/rules-bestanden in staat stelt van deze informatie gebruik te maken voor eigen doeleinden. De waarde -j heeft voorrang op de optie parallel=taken of parallel in de omgevingsvariabele DEB_BUILD_OPTIONS. Merk op dat de waarde auto zal vervangen worden door het effectieve aantal momenteel actieve processoren en ze dus als zodanig naar geen enkel onderliggend proces doorgegeven zal worden. Indien het aantal beschikbare processoren niet afgeleid kan worden, dan zal de code terugvallen op het gebruiken van seriële uitvoering (sinds dpkg 1.18.15), hoewel dit enkel zou mogen gebeuren op exotische en niet-ondersteunde systemen.
-J, --jobs-try[=taken|auto]
Deze optie (sinds dpkg 1.18.2, de lange optie sinds dpkg 1.18.8) is het equivalent van de optie -j, behalve dat ze de omgevingsvariabele MAKEFLAGS niet instelt. Als zodanig is het veiliger om ze te gebruiken met elk pakket, ook met die waarvoor het niet zeker is dat in parallel bouwen mogelijk is.

auto is het standaardgedrag (sinds dpkg 1.18.11). Het aantal jobs instellen op 1 zal het seriële gedrag opnieuw instellen.

-D, --check-builddeps
Controleer bouwvereisten en tegenstrijdigheden en breek af als er niet aan voldaan is (de lange optie sinds dpkg 1.18.8). Dit is het standaardgedrag.
-d, --no-check-builddeps
Controleer bouwvereisten en tegenstrijdigheden niet (de lange optie sinds dpkg 1.18.8).
--ignore-builtin-builddeps
Controleer ingebouwde bouwvereisten en tegenstrijdigheden niet (sinds dpkg 1.18.2). Dit zijn de distributiespecifieke impliciete bouwvereisten die gewoonlijk noodzakelijk zijn in een bouwomgeving, de zogenaamde set van pakketten van het type Build-Essential.
--rules-requires-root
Honoreer het veld Rules-Requires-Root niet; er wordt teruggevallen op zijn verouderde standaardwaarde (since dpkg 1.19.1).
-nc, --no-pre-clean
Schoon voor het bouwen de broncodeboom niet op (de lange optie sinds dpkg 1.18.8). Impliceert -b indien geen van de opties -F, -g, -G, -B, -A of -S gekozen werd. Gecombineerd met -S impliceert dit -d (sinds dpkg 1.18.0).
--pre-clean
Schoon voor het bouwen de broncodeboom op (sinds dpkg 1.18.8). Dit is het standaardgedrag.
-tc, --post-clean
Schoon de broncodeboom op (met commando-om-root-te-worden debian/rules clean) nadat het pakket gebouwd werd (de lange optie sinds dpkg 1.18.8).
--no-post-clean
Schoon de broncodeboom niet op na het bouwen van het pakket (sinds dpkg 1.19.1). Dit is het standaardgedrag.
--sanitize-env
Sanitize the build environment (since dpkg 1.20.0). This will reset or remove environment variables, umask, and any other process attributes that might otherwise adversely affect the build of packages. Because the official entry point to build packages is debian/rules, packages cannot rely on these settings being in place, and thus should work even when they are not. What to sanitize is vendor specific.
-r, --root-command=commando-om-root-te-worden
Wanneer dpkg-buildpackage een deel van het bouwproces in de hoedanigheid van root (systeembeheerder) moet uitvoeren, laat het het commando dat het uitvoert voorafgaan door commando-om-root-te-worden indien er een opgegeven werd (de lange optie sinds dpkg 1.18.8). Anders, als er geen opgegeven werd, wordt standaard fakeroot gebruikt als het beschikbaar is. commando-om-root-te-worden moet beginnen met de naam van een programma in het PATH en krijgt als argumenten de naam van het echte commando dat uitgevoerd moet worden en de argumenten die het moet krijgen. commando-om-root-te-worden kan parameters bevatten (ze moeten met spaties van elkaar gescheiden worden) maar geen shell-metatekens. Doorgaans is commando-om-root-te-worden fakeroot, sudo, super of really. su is niet geschikt, aangezien het enkel de shell van de gebruiker kan aanroepen met -c in plaats van afzonderlijke argumenten door te geven aan het uit te voeren commando.
-R, --rules-file=rules-bestand
Een Debian-pakket bouwen houdt meestal het aanroepen van debian/rules in als een commando met verschillende standaardparameters (sinds dpkg 1.14.17, de lange optie sinds dpkg 1.18.8). Met deze optie is het mogelijk om een andere programma-aanroep te gebruiken om het pakket te bouwen (ze kan parameters bevatten die onderling door spaties gescheiden worden). Anderzijds kan de optie ook gebruikt worden om het standaard rules-bestand uit te voeren met een ander make-programma (bijvoorbeeld door /usr/local/bin/make -f debian/rules te gebruiken als rules-bestand).
--check-command=controlecommando
Commando dat gebruikt wordt om het bestand .changes zelf en eventuele gebouwde artefacten waarnaar in het bestand verwezen wordt, te controleren (sinds dpkg 1.17.6). Het commando moet als argument de padnaam van .changes krijgen. Gewoonlijk is dit commando lintian.
--check-option=optie
Geef optie optie door aan het controlecommando dat gespecificeerd werd met DEB_CHECK_COMMAND of met --check-command (sinds dpkg 1.17.6). Kan meermaals gebruikt worden.
--hook-hook-naam=hook-commando
Stelt de opgegeven shell-code hook-commando in als de uitbreiding (hook) hook-naam, die zal uitgevoerd worden op de momenten die in de uitvoeringsstappen gepreciseerd worden (sinds dpkg 1.17.6). De uitbreidingen (hooks) zullen steeds uitgevoerd worden, zelfs als de volgende actie niet uitgevoerd wordt (met uitzondering voor de uitbreiding (hook) binary). Alle uitbreidingen (hooks) zullen uitgevoerd worden in de map van de uitgepakte broncode.

Note: Hooks can affect the build process, and cause build failures if their commands fail, so watch out for unintended consequences.

Momenteel worden de volgende hook-namen ondersteund

init preclean source build binary buildinfo changes postclean check sign done

Het hook-commando ondersteunt de volgende substitutie-indelingstekenreeksen, die er voorafgaand aan de uitvoering op toegepast zullen worden:

%%
Eén enkel %-teken.
%a
Een booleaanse waarde (0 of 1), die aangeeft of de volgende actie uitgevoerd wordt of niet.
%p
De naam van het broncodepakket.
%v
De versie van het broncodepakket.
%s
De versie van het broncodepakket (zonder de epoch).
%u
Het upstream versienummer (toeleveraarsversie).
--buildinfo-option=optie
Geef optie optie door aan dpkg-genbuildinfo (sinds dpkg 1.18.11). Kan meermaals gebruikt worden.
-p, --sign-command=ondertekeningscommando
When dpkg-buildpackage needs to execute GPG to sign a source control (.dsc) file or a .changes file it will run sign-command (searching the PATH if necessary) instead of gpg (long option since dpkg 1.18.8). sign-command will get all the arguments that gpg would have gotten. sign-command should not contain spaces or any other shell metacharacters.
-k, --sign-key=sleutel-id
Geef de sleutel-ID op die gebruikt moet worden om pakketten te ondertekenen (de lange optie sinds dpkg 1.18.8).
-us, --unsigned-source
Onderteken het broncodepakket niet (de lange optie sinds dpkg 1.18.8).
-ui, --unsigned-buildinfo
Onderteken het bestand .buildinfo niet (sinds dpkg 1.18.19).
-uc, --unsigned-changes
Onderteken de bestanden .buildinfo en .changes niet (de lange optie sinds dpkg 1.18.8).
--no-sign
Onderteken geen enkel bestand; dit omvat het broncodepakket, het bestand .buildinfo en het bestand .changes (sinds dpkg 1.18.20).
--force-sign
Verplicht het ondertekenen van de resulterende bestanden (sinds dpkg 1.17.0), ongeacht -us, --unsigned-source, -ui, --unsigned-buildinfo, -uc, --unsigned-changes of overige interne heuristiek.
-sn
-ss
-sA
-sk
-su
-sr
-sK
-sU
-sR
-i, --diff-ignore[=regex]
-I, --tar-ignore[=patroon]
-z, --compression-level=niveau
-Z, --compression=compressor
Wordt ongewijzigd doorgegeven aan dpkg-source. Zie de man-pagina ervan.
--source-option=optie
Geef optie optie door aan dpkg-source (sinds dpkg 1.15.6). Kan meermaals gebruikt worden.
--changes-option=optie
Geef optie optie door aan dpkg-genchanges (sinds dpkg 1.15.6). Kan meermaals gebruikt worden.
--admindir=map
--admindir map
Geef een andere locatie op voor de database van dpkg (sinds dpkg 1.14.0). De standaardlocatie is %ADMINDIR%.
-?, --help
Toon info over het gebruik en sluit af.
--version
Toon de versie en sluit af.

OMGEVING

Externe omgeving

DEB_CHECK_COMMAND
Indien dit ingesteld werd, zal het gebruikt worden als het commando waarmee het bestand .changes gecontroleerd wordt (sinds dpkg 1.17.6). De optie --check-command heeft hierop voorrang.
DEB_SIGN_KEYID
Indien dit ingesteld werd, zal het gebruikt worden om de bestanden .changes en .dsc te ondertekenen (sinds dpkg 1.17.2). De optie --sign-key heeft hierop voorrang.
DEB_BUILD_OPTIONS
Indien dit ingesteld werd, bevat het een lijst van door spaties van elkaar gescheiden opties die het bouwproces kunnen beïnvloeden in debian/rules en het gedrag van sommige dpkg-commando's.

Bij nocheck zal de variabele DEB_CHECK_COMMAND genegeerd worden. Bij parallel=N zal het aantal parallelle taken op N ingesteld worden, maar de optie --jobs-try heeft hierop voorrang.

DEB_BUILD_PROFILES
Indien dit ingesteld werd, zal het gebruikt worden als het/de actieve bouwprofiel(en) voor het pakket dat gebouw wordt (sinds dpkg 1.17.2). Het is een lijst van profielnamen die onderling door een spatie gescheiden zijn. De optie -P heeft hierop voorrang.
DPKG_COLORS
Stelt de kleurmodus in (sinds dpkg 1.18.5). Waarden die momenteel gebruikt mogen worden zijn: auto (standaard), always en never.
DPKG_NLS
Indien dit ingesteld is, zal het gebruikt worden om te beslissen over het activeren van moedertaalondersteuning, ook gekend als internationaliseringsondersteuning (of i18n) (sinds dpkg 1.19.0). Geldige waarden zijn: 0 and 1 (standaard).

Interne omgeving

Zelfs al exporteert dpkg-buildpackage sommige variabelen, toch mag debian/rules er niet op rekenen dat ze aanwezig zijn en moet het in de plaats daarvan gebruik maken van de desbetreffende interface om de benodigde variabelen op te halen, aangezien dat bestand.het belangrijkste aanspreekpunt is voor het bouwen van pakketten en de op zichzelf staande uitvoering ervan ondersteund moet zijn.
DEB_BUILD_*
DEB_HOST_*
DEB_TARGET_*
dpkg-architecture wordt aangeroepen met de doorgegeven parameters -a en -t. Eventuele variabelen die zijn optie -s als uitvoer geeft, worden in de bouwomgeving geïntegreerd.
DEB_RULES_REQUIRES_ROOT
Deze variabele wordt ingesteld op de waarde die verkregen wordt uit het veld Rules-Requires-Root of vanuit de commandoregel. Indien ze ingesteld is, zal ze een geldige waarde zijn voor het veld Rules-Requires-Root. Ze wordt gebruikt om debian/rules te informeren of de specificatie rootless-builds.txt ondersteund wordt.
DEB_GAIN_ROOT_CMD
Deze variabele wordt ingesteld op gain-root-command wanneer het veld Rules-Requires-Root ingesteld staat op een andere waarde dan no of binary-targets.
SOURCE_DATE_EPOCH
Deze variabele wordt ingesteld op de Unix-tijd (timestamp) sinds het tijdstip (de epoch) van het laatste item in debian/changelog, voor zover hij niet reeds gedefinieerd is.

BESTANDEN

%PKGCONFDIR%/buildpackage.conf
Configuratiebestand dat voor het hele systeem geldt
$XDG_CONFIG_HOME/dpkg/buildpackage.conf of
$HOME/.config/dpkg/buildpackage.conf
Configuratiebestand dat gebruikersafhankelijk is.

OPMERKINGEN

Compileervlaggen worden niet langer geëxporteerd

Tussen dpkg 1.14.17 en 1.16.1 exporteerde dpkg-buildpackage compileervlaggen (CFLAGS, CXXFLAGS, FFLAGS, CPPFLAGS en LDFLAGS) met de waarden die door dpkg-buildflags teruggegeven werden. Dit is niet langer het geval

Standaard bouwtargets

dpkg-buildpackage gebruikt sinds dpkg 1.16.2 de targets build-arch en build-indep. Deze targets zijn dus verplicht. Maar om te vermijden dat bestaande pakketten defect raken en om de overgang te vergemakkelijken, zal het, indien het broncodepakket niet zowel architectuuronafhankelijke als architectuurspecifieke binaire pakketten bouwt (sinds dpkg 1.18.8), terugvallen op het gebruik van het target build indien make -f debian/rules -qn bouwtarget 2 teruggeeft als afsluitwaarde.

BUGS

Het zou mogelijk moeten zijn om spaties en shell-metatekens en initiële argumenten op te geven voor commando-om-root-te-worden en ondertekeningscommando.

ZIE OOK

dpkg-source(1), dpkg-architecture(1), dpkg-buildflags(1), dpkg-genbuildinfo(1), dpkg-genchanges(1), fakeroot(1), lintian(1), gpg(1).
2020-07-08 1.20.5