Scroll to navigation

dpkg-buildpackage(1) dpkg-verktygen dpkg-buildpackage(1)

NAMN

dpkg-buildpackage - bygg binär- eller källkodspaket från källkod

SYNOPS

dpkg-buildpackage [flagga...]

BESKRIVNING

dpkg-buildprogram är ett program som automatiserar processen med att bygga ett Debianpaket. Det består av följande steg:
1.
Byggmiljön förbereds genom att diverse miljövariabler sätts (se MILJÖ), kör haken init och anropar dpkg-source --before-build (såvida inte -T eller --target används).
2.
Byggberoenden och -konflikter kontrolleras att de uppfylls (såvida inte -d anges).
3.
Om ett specifikt mål har valts med flaggan -T eller --target anropas det målet, varpå programmet avslutas. I annat fall körs haken preclean och anropas fakeroot debian/rules clean för att städa byggträdet (såvida inte -nc anges).
4.
Kör haken source och anropar dpkg-source -b för att skapa källkodspaketet (såvida inte ett bygge av enbart binärer har valts med -b, -B eller -A).
5.
Kör haken build och anropar debian/rules byggmål, därefter körs haken binary följt av fakeroot debian/rules binärmål (såvida inte ett bygge av enbart källkod har valts med -S). Observera att byggmål och binärmål är ett av build och binary (standardval, eller om -b anges), build-arch och binary-arch (om -B eller -G anges), eller build-indep och binary-indep (om -A eller -g anges).
6.
Kör haken changes och anropar dpkg-genchanges för att skapa en .changes-fil. Många av flaggorna till dpkg-buildpackage vidaresänds till dpkg-genchanges.
7.
Kör haken postclean och, om -tc anges, anropar fakeroot debian/rules clean ytterligare en gång.
8.
Anropar dpkg-source --after-build.
9.
Kör haken check och anropar en paketkontrollerare för .changes-filen (om ett kommando har angivits med DEB_CHECK_COMMAND eller med --check-command).
10.
Kör haken sign och anropar gpg2 eller gpg för att signera .dsc-filen (om sådan finns, såvida inte -us anges eller på UNRELEASED-byggen) och .changes-filen (såvida inte -uc anges eller på UNRELEASED-byggen).
11.
Kör haken done.

FLAGGOR

-g
Anger att endast källkod och arkitekturoberoende paket skall byggas. Sänds vidare till dpkg-genchanges.
-G
Anger att endast källkod och arkitekturspecifika paket skall byggas. Sänds vidare till dpkg-genchanges.
-b
Anger att enbart binära paket skall byggas, inga källkodsfiler byggs och/eller distribueras. Sänds vidare till dpkg-genchanges.
-B
Anger att enbart binära paket skall byggas, begränsat till arkitekturberoende paket. Sänds vidare till dpkg-genchanges.
-A
Anger att enbart binära paket skall byggas, begränsat till arkitekturoberoende paket. Sänds vidare till dpkg-genchanges.
-S
Anger att enbart källkodspaket skall byggas, inga binärpaket behöver byggas. Sänds vidare till dpkg-genchanges.
-F
Anger att ett normalt komplett bygge, binär- och källkodspaket, skall byggas. Detta är detsamma som standardläget om inga byggflaggor anges.
--target=mål
--target mål -Tmål Anropar debian/rules mål efter att ha konfigurerat byggmiljön, och avbryter byggprocessen efteråt. Om --as-root också anges körs kommandot som root (se -r). Observera att officiella mål som måste köras som root inte behöver flaggan.
--as-root
Endast meningsfull tillsammans med --target. Kräver att målet körs med root-behörighet.
-si
-sa -sd -vversion -Cändringsbeskrivning -mpaketansvarige-adress -epaketansvarige-adress Sänds vidare utan ändringar till dpkg-genchanges. Se dess manualsida.
-a, --host-arch arkitektur
Ange Debianarkitekturen vi bygger för. Arkitekturen för maskinen vi bygger på bestäms automatiskt, och är även standard för värdmaskinen.
-t, --host-type gnu-system-typ
Ange GNU-systemtyp vi bygger för. Den kan användas i stället för --host-arch eller som ett komplement för att överstyra standard-GNU-systemtypen för Debian-målarkitekturen.
--target-arch arkitektur
Ange Debianarkitekturen binärerna som byggs bygger för. Standardvärde är värdmaskinen.
--target-type gnu-system-type
Ange GNU-systemtyp vi binärerna vi som byggs bygger för. Den kan användas i stället för --target-arch eller som ett komplement för att överstyra standard-GNU-systemtypen för Debian-målarkitekturen.
-Pprofil[,...]
Ange profil(er) vi bygger, som en kommaavdelad lista. Standardbeteendet är att inte bygga för någon specifik profil. Lägger även till dem (som en blankstegsavdelad lista) till miljövariabeln DEB_BUILD_PROFILES vilket, till exempel, gör det möjligt för debian/rules-filer att använda informationen för villkorliga byggen.
-j[jobb|auto]
Antalet jobb som tillåts att köras samtidigt, antal jobb motsvarande antalet tillgängliga processorer om auto anges, eller ett obegränsat antal om jobb inte anges, motsvarar make(1)-flaggan med samma namn. Lägger till sig själv i miljövariabeln MAKEFLAGS, vilket får alla påföljande make-anrop att ärva flaggan. Lägger även till flaggan parallel=jobb till miljövariabeln DEB_BUILD_OPTIONS, vilket gör det möjligt för debian/rules-filer att använda informationen för egna ändamål. Värdet parallel= jobb i miljövariabeln DEB_BUILD_OPTIONS kommer att överstyra värdet för -j om den flaggan ges. Observera att auto-värdet kommer ersättas av det faktiska antalet för närvarande aktiva processorer, och därför inte kommer sändas med till barnprocesser. Om antalet tillgängliga processorer inte kan tas fram kommer koden att falla tillbaka till ett obegränsat antal.
-D
Kontrollera byggberoenden och -konflikter; avbryt om de inte uppfylls. Detta är standardbeteendet.
-d
Kontrollera inte byggberoenden eller -konflikter.
-nc
Städa inte upp byggträdet (implicerar -b om inget annat har valts bland -F, -g, -G, -B, -A eller -S).
-tc
Städa källkodsträdet (använder få-root-kommando debian/rules clean) efter att paketet har byggts.
-rfå-root-kommando
När dpkg-buildpackages behöver exekvera delar av byggprocessen som root sätter den kommandot som skall exekveras efter få-root-kommando om ett sådant har angivits. Om inte kommer fakeroot att användas som standard, om kommandot existerar. få-root-kommando måste börja med namnet på det faktiska kommandot som skall anropas samt de parametrar det skall anropas med. få-root-kommando kan innehålla parametrar (de måste vara avdelade med blanksteg) men inga skalmetatecken. få-root-kommando kan typiskt vara fakeroot, sudo, super eller really. su är inte lämpligt eftersom det kräver flaggan -c för att köra ett kommando och även då kan det bara starta användarens skal med -c istället för att sända flaggor individuellt till kommandot som skall startas.
-Rregelfil
För att bygga ett Debianpaket körs normalt kommandot debian/rules med flera olika standardparametrar. Den här flaggan gör det möjligt att använda ett annat programanrop för att bygga paketet (det kan innehålla blankstegsavdelade parametrar). Den kan även användas för att exekvera standardregelfilen med ett annat make-program (till exempel genom att använda /usr/local/bin/make -f debian/rules som regelfil).
--check-command=kontrollkommando
Kommando som kontrollerar själva .changes-filen och byggda artifakter som refereras i filen. Kommandot skall ta sökvägen till .changes som argument. Kommandot är normalt lintian.
--check-option=val
Sänder flaggan val till det kontrollkommando som anges med DEB_CHECK_COMMAND eller --check-command. Kan användas flera gånger.
--hook-hakenamn=hakekommando
Sätter den angivna skalkoden i hakekommando som haken hakenamn, vilket körs vid de tidpunkter som anges i byggstegen. Haken kommer alltid att exekveras även om de efterföljande funktionerna inte utförs (förutom haken binary).
Observera: Hakar kan påverka byggprocessen och orsaka att byggen misslyckas om deras kommandon misslyckas, så se upp för oförutsedda konsekvenser.
För närvarande stöds följande hakenamn:
init preclean source build binary changes postclean check sign done
hakekommando stöder följande substitueringsformatsträng, som appliceras på den föra exekvering:
%%
Ett ensamt %-tecken.
%a
Ett boolskt värde (0 eller 1) som anger om följande funktion utförs.
%p
Namnet på källkodspaketet.
%v
Version för källkodspaketet.
%s
Version för källkodspaketet (utan epoken).
%u
Uppströmsversionen.
-psigneringskommando
När dpkg-buildpackage måste exekvera GPG för att signera ett källkodsstyrfil ( .dsc) eller en .changes-fil kör det signeringskommando (det letar i PATH om så behövs) istället för gpg2 eller gpg. signeringskommando får de argument gpg2 eller gpg skulle ha fått. signeringskommando får inte innehålla blanksteg eller andra skalmetatecken.
-knyckel-id
Ange nyckel-id att använda vid signering av paket.
-us
Signera inte källkodspaketet.
-uc
Signera inte .changes-filen.
--force-sign
Tvinga signering av de slutliga filerna (sedan dpkg 1.17.0), oberoende av -us eller -uc eller annan intern heuristik.
-i[reguljärt-uttryck]
-I[mönster] -s[nsAkurKUR] -z, -Z Sänds vidare utan ändringar till dpkg-source. Se dess manualsida.
--source-option=val
Sänd flaggan val till dpkg-source. Kan användas flera gånger.
--changes-option=val
Sänder flaggan val till dpkg-genchanges. Kan användas flera gånger.
--admindir=kat
--admindir kat Ändra platsen för dpkg-databasen. Förval är /var/lib/dpkg.
-?, --help
Visar hjälpskärm och avslutar.
--version
Visar version och avslutar.

MILJÖVARIABLER

DEB_CHECK_COMMAND
Om satt, används som kommandot för att kontrollera .changes-filen. Överstyrs av flaggan --check-command.
DEB_SIGN_KEYID
Används för att signera filerna .changes och .dsc om satt. Överstyrs av flaggan -k.
DEB_BUILD_OPTIONS
Om satt, och innehåller nocheck, kommer variabeln DEB_CHECK_COMMAND att ignoreras.
DEB_BUILD_PROFILES
Om satt, används som aktiv(a) byggprofil(er) för paketet som byggs. Det är en blankstegsavdelad lista med profilnamn. Överstyrs av flaggan -P.

Bero på exporterade miljöflaggor

Även om dpkg-buildpackage exporterar några variabler bör inte debian/rules vara beroende av deras närvaro och bör istället använda respektive gränssnitt för att hämta de värden som behövs.

Variabler som sätts av dpkg-architecture

dpkg-architecture anropas med flaggorna -a och -t vidaresända. Variabler som skrivs ut via dess -s-flagga integreras i byggmiljön.

ANTECKNINGAR

Kompileringsflaggor exporteras inte längre.

Mellan dpkg 1.14.17 och 1.16.1 exporterade dpkg-buildpackage kompilatorflaggor ( CFLAGS, CXXFLAGS, CPPFLAGS och LDFLAGS) med värden enligt dpkg-buildflags. Detta gäller inte längre.

Förvalda byggmål

dpkg-buildpackage använder målen build-archi och build-indep från dpkg 1.16.2. Dessa mål krävs därmed, men för att undvika att existerande paket går sönder, och för att förenkla övergången, kommer den falla tillbaka till att använda målet build om make -f debian/rules -gn byggmål returnerar statuskoden 2.

PROGRAMFEL

Det borde vara möjligt att ange blanksteg och skalmetatecken och inledande argument för få-root-kommando och signeringskommando.

SE ÄVEN

dpkg-source(1), dpkg-architecture(1), dpkg-buildflags(1), dpkg-genchanges(1), fakeroot(1), lintian(1), gpg2(1), gpg(1).

ÖVERSÄTTNING

Peter Krefting och Daniel Nylander.
2013-12-12 Debianprojektet