dpkg-buildpackage - bygg binär- eller källkodspaket från
källkod
dpkg-buildpackage [
flagga...]
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
kroken 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 eller --no-check-builddeps
anges).
- 3.
- Om ett eller flera specifika mål har valts med
flaggan -T eller --target anropas de målen,
varpå programmet avslutas. I annat fall körs kroken
preclean och anropas fakeroot debian/rules clean för
att städa byggträdet (såvida inte -nc eller
--no-pre-clean anges).
- 4.
- Kör kroken source och anropar dpkg-source
-b för att skapa källkodspaketet (om ett
source-bygge (källkod) har ombetts via --build eller
liknande flaggor).
- 5.
- Kör kroken build och anropar
debian/rules byggmål, därefter körs
kroken binary följt av fakeroot debian/rules
binärmål (såvida inte ett bygge av enbart
källkod har valts med --build=source eller liknande
flaggor). Observera att byggmål och
binärmål är ett av build och
binary (förval, eller om ett any- eller
all-bygge har valts med --build eller motsvarande flaggor),
eller build-arch och binary-arch (om ett any- men
inte ett all-bygge har valts med --build eller liknande
flaggor), eller build-indep och binary-indep (om ett
all- men inte ett any-bygge har valts med --build
eller liknande flaggor).
- 6.
- Kör kroken buildinfo och anropar
dpkg-genbuildinfo för att skapa en .buildinfo-fil.
Många av flaggorna till dpkg-buildpackage vidaresänds
till dpkg-genchanges.
- 7.
- Kör kroken changes och anropar
dpkg-genchanges för att skapa en .changes-fil. Namnet
på .changes-filen kommer att bero på byggtypen och
kommer vara så specifik som möjligt, men inte mer;
för ett bygge som innehåller any (någon)
kommer namnet vara
källkodsnamn_binärversion
_ark .changes, om bygget annars innehåller
all (alla) kommer namnet vara
källkodsnamn_binärversion
_all.changes, om bygget annars innehåller
source (källkod) kommer namnet vara
källkodsnamn
_källkodsversion_source.changes.
Många av flaggorna till dpkg-buildpackage vidaresänds
till dpkg-genchanges.
- 8.
- Kör kroken postclean och, om -tc eller
--post-clean anges, anropar fakeroot debian/rules clean
ytterligare en gång.
- 9.
- Anropar dpkg-source --after-build.
- 10.
- Kör kroken check och anropar en
paketkontrollerare för .changes-filen (om ett kommando har
angivits med DEB_CHECK_COMMAND eller med
--check-command).
- 11.
- Kör kroken sign och signerar med
OpenPGP-programmet (såvida det inte är ett UNRELEASED-bygge,
eller om --no-sign angavs) för att signera .dsc-filen
(om sådan finns, såvida inte -us eller
--unsigned-source anges), .buildinfo-filen (såvida
inte -ui, --unsigned-buildinfo, -uc eller
--unsigned-changes anges) och .changes-filen (såvida
inte -uc eller --unsigned-changes anges).
- 12.
- Kör kroken done.
Alla långa flaggor kan ges både på kommandoraden och i
dpkg-buildpackage:s system- och användarkonfigurationsfiler. En
rad i konfigurationsfilen är antingen en flagga (precis samma som
på kommandoraden, men utan inledande bindestreck) eller en kommentar
(om den börjar med ett ”
#”).
-
--build=typ
- Anger bygg-type från en kommaavdelad lista
med komponenter (sedan dpkg 1.18.5). Alla angivna komponenter kombineras
för att välja den byggtypen som ska användas i den
enda körningen, vilket leder till en enda byggkörning som
skapar en .changes-fil. Sänds vidare till
dpkg-genchanges.
Tillåtna värden är:
- source
- Bygger källkodspaketet.
Observera: När det här värdets används
på egen hand och om du bara vill bygga (om) källkodspaketet
från ett rent källkodsträd, är det alltid ett
bättre alternativ att köra dpkg-source direkt
eftersom det inte kräver att några byggberoenden som annars
krävs för att anropa målet clean
installeras.
- any
- Bygger arkitekturspecifika binärpaket.
- all
- Bygger de arkitekturoberoende binärpaketen.
- binary
- Bygger arkitekturspecifika och -oberoende
binärpaket. Detta är ett alias till any,all.
- full
- Bygger allting. Detta är ett alias för
source,any,all, och är detsamma som standardläget om
inga byggflaggor anges.
- -g
- Motsvarar --build=source,all (sedan dpkg
1.17.11).
- -G
- Motsvarar --build=source,any (sedan dpkg
1.17.11).
- -b
- Motsvarar --build=binary eller
--build=any,all.
- -B
- Motsvarar --build=any.
- -A
- Motsvarar --build=all.
- -S
- Motsvarar --build=source.
- -F
- Motsvarar --build=full, --build=source,binary
eller --build=source,any,all (sedan dpkg 1.15.8).
-
--target=mål[,...]
-
--target mål[,...]
-
-T,
--rules-target=mål[,...]
- Anropar debian/rules mål en
gång per angivet mål, efter att ha konfigurerat
byggmiljön (förutom att anropa dpkg-source
--before-build), och avbryter byggprocessen efteråt (sedan dpkg
1.15.0, lång flagga sedan dpkg 1.18.8, stöd för flera
mål sedan dpkg 1.18.16). Om --as-root också anges
körs kommandot som root (se --root-command). Observera att
kända mål som måste köras som root inte
behöver flaggan (dvs. målen clean, binary,
binary-arch och binary-indep).
- --as-root
- Ger endast mening tillsammans med --target (sedan
dpkg 1.15.0). 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.
-
--build-by=paketansvarige-adress
-
--source-by=paketansvarige-adress (sedan dpkg
1.21.10)
- Sänds som -m till dpkg-genchanges. Se
dess manualsida.
-
--release-by=paketansvarige-adress
-
--changed-by=paketansvarige-adress (sedan
dpkg 1.21.10)
- Sänds som -e till dpkg-genchanges. Se
dess manualsida.
-
-a, --host-arch arkitektur
- Ange Debianarkitekturen vi bygger för (lång
flagga sedan dpkg 1.17.17). 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 (lång flagga
sedan dpkg 1.17.17). 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 (sedan dpkg 1.17.17). Standardvärde är
värdmaskinen.
-
--target-type gnu-system-type
- Ange GNU-systemtyp vi binärerna vi som byggs bygger
för (sedan dpkg 1.17.17). 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.
-
-P,
--build-profile=profil[,...]
- Ange profil(er) vi bygger, som en kommaavdelad lista (sedan
dpkg 1.17.2, lång flagga sedan dpkg 1.18.8). 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, --jobs[=jobb|auto]
- Antalet jobb som tillåts att köras samtidigt
(sedan dpkg 1.14.7, lång flagga sedan dpkg 1.18.8). Antal jobb
motsvarande antalet tillgängliga processorer om auto anges
(sedan dpkg 1.17.10), eller ett obegränsat antal om jobb
inte anges. Förvalt beteende är auto (sedan dpkg
1.18.11) i icke-tvingat läge (sedan dpkg 1.21.10), och som
sådant är det alltid säkrare att använda med
alla paket, däribland de som inte kan byggas parallellt på
ett säkert sätt. Om antal jobb sätts till 1
kommer seriell exekvering att återställas.
Lägger till parallel=jobb eller parallel 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 om de önskar.
Värdet för jobb kommer att överstyra
värdet parallel=jobb eller parallel i
miljövariabeln DEB_BUILD_OPTIONS. 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 seriell exekvering (sedan dpkg 1.18.15), även om
detta bara borde ske på exotiska och icke stödda
system.
-
-J, --jobs-try[=jobb|auto]
- Den här flaggan (sedan dpkg 1.18.2, lång
flagga sedan dpkg 1.18.8) motsvarar -j ovan.
Eftersom beteendet för -j ändrades i dpkg 1.21.10 till
att vara valfritt kan du använda den här flaggan
istället om du måste garantera semantiken över flera
dpkg-utgivningsserier.
-
--jobs-force[=jobs|auto]
- Den här flaggan (sedan dpkg 1.12.10) motsvarar
flaggan --jobs med undantaget att det aktiverar tvingat parallellt
läge, genom att lägga till make -j-flaggan med
antalet beräknade parallella jobb i miljövariabeln
MAKEFLAGS.
Detta borde göra så att alla senare make-anrop ärver
flaggan och därmed påtvinga
parallelliseringsinställningen i paketeringen (och möjligen
uppströmsbyggsystemet om det det använder make(1)),
oberoende av om det stöder parallella bygg, något som kan
komma att orsaka byggfel.
Observera: Makefiler som inte kan köras parallellt bör anses
felaktiga. De bör antingen göras säkra för
parallellisering, eller markeras som osäkra med
make(1)-målet .NOTPARALLEL.
-
-D, --check-builddeps
- Kontrollera byggberoenden och -konflikter; avbryt om de
inte uppfylls (lång flagga sedan dpkg 1.18.8). Detta är
standardbeteendet.
-
-d, --no-check-builddeps
- Kontrollera inte byggberoenden eller -konflikter
(lång flagga sedan dpkg 1.18.8).
- --ignore-builtin-builddeps
- Kontrollera inte inbyggda byggberoenden och -konflikter
(sedan dpkg 1.18.2). Detta är de distributionsberoende
byggberoendena som vanligtvis krävs i en byggmiljö,
paketuppsättningen som kallas Build-Essential
(”Bygg-Nödvändiga”).
- --rules-requires-root
- Följ inte fältet Rules-Requires-Root,
fall tillbaka på dess gamla förval (sedan dpkg 1.19.1).
-
-nc, --no-pre-clean
- Städa inte upp byggträdet före bygget
(lång flagga sedan dpkg 1.18.8). Implicerar -b om inget
annat har valts bland -F, -g, -G, -B,
-A eller -S. Implicerar -d med -S (sedan dpkg
1.18.0).
- --pre-clean
- Städa källkodsträdet före
bygget (sedan dpkg 1.18.8). Detta är standardbeteendet.
-
-tc, --post-clean
- Städa källkodsträdet (använder
få-root-kommando debian/rules clean) efter att
paketet har byggts (lång flagga sedan dpkg 1.18.8).
- --no-post-clean
- Städa inte upp byggträdet efter bygget (sedan
dpkg 1.19.1). Detta är standardbeteendet.
- --sanitize-env
- Sanera byggmiljön (sedan dpkg 1.20.0). Detta
återställer eller tar bort miljövariabler, umask, och
eventuella andra processattribut som annars kan påverka paketbygget
ogynnsamt. Eftersom den officiella startpunkten för att bygga paket
är debian/rules kan inte paket vara beroende av att de
här inställningarna är på plats, och
bör därför fungera även när de inte
är det. Vad som saneras är
återförsäljarspecifikt.
-
-r,
--root-command=gain-root-command
- När dpkg-buildpackages behöver
exekvera delar av byggprocessen som root sätter den kommandot som
ska exekveras efter få-root-kommando om ett sådant
har angivits (lång flagga sedan dpkg 1.18.8). 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 ska anropas samt de parametrar det
ska 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 ska startas.
-
-R, --rules-file=rules-fil
- För att bygga ett Debianpaket körs normalt
kommandot debian/rules med flera olika standardparametrar (sedan
dpkg 1.14.17, lång flagga sedan dpkg 1.18.8). 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 (sedan
dpkg 1.17.6). Kommandot ska 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 (sedan dpkg 1.17.6). Kan användas flera
gånger.
-
--hook-kroknamn=krokkommando
- Sätter den angivna skalkoden i krokkommando
som kroken kroknamn, vilket körs vid de tidpunkter som anges
i byggstegen (sedan dpkg 1.17.6). Kroken kommer alltid att exekveras
även om de efterföljande funktionerna inte utförs
(förutom kroken binary). Alla krokar körs i den
uppackade källkodskatalogen.
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 kroknamn:
init preclean source build binary buildinfo changes postclean check sign
done
krokkommando stöder följande
substitueringsformatsträng, som appliceras på den
föra exekvering:
- %%
- Ett ensamt %-tecken.
-
%a
- Ett booleskt 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.
-
--buildinfo-file=filnamn
- Ange filnamn att använda för den
skapade .buildinfo-filen (sedam dpkg 1.21.0).
-
--buildinfo-option=val
- Sänder flaggan val till
dpkg-genbuildinfo (sedan dpkg 1.18.11). Kan användas flera
gånger.
-
--sign-backend=signeringsfunktion
- Ange ett OpenPGP-funktionsgränssnitt att
använda när sign-command körs (sedan dpkg
1.21.10).
Förvalet är auto, där det bästa
för närvarande tillgängliga funktionen kommer
användas. De specifika OpenPGP-funktioner som stöds
är, med det bästa först:
-
sop (valfri korrekt implementation av
”Stateless OpenPGP”)
-
sq (från Sequoia-PGP)
-
gpg (från GnuPG)
-
-p,
--sign-command=signeringskommando
- När dpkg-buildpackage måste exekvera
en OpenGPG-funktion 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 förvalet eller
autodetekterat funktionskommando (lång flagga sedan dpkg 1.18.8).
signeringskommando får alla de argument som anges av
--sign-backend. signeringskommando bör inte
innehålla blanksteg eller andra skalmetatecken.
-
-k, --sign-keyid=nyckel-id
-
--sign-key=nyckel-id
- Ange en Open PGP-nyckel-id (antingen ett fingeravtryck
eller ett användar-ID) för den hemliga nyckeln att
använda vid signering av paket ( --sign-key sedan dpkg
1.18.8, --sign-keyid sedan dpkg 1.21.10).
-
--sign-keyfile=nyckelfil
- Ange en OpenPGP-nyckelfil som innehåller den
hemliga nyckeln att använda vid signering av paket (sedan dpkg
1.21-10).
Observera: Av säkerhetsskäl är det bäst att
håll nyckelfil låst med ett lösenord.
-
-us, --unsigned-source
- Signera inte källkodspaketet (lång flagga
sedan dpkg 1.18.8).
-
-ui, --unsigned-buildinfo
- Signera inte .buildinfo-filen (sedam dpkg
1.18.19).
-
-uc, --unsigned-changes
- Signera inte .buildinfo- och .changes-filerna
(lång flagga sedan dpkg 1.18.8).
- --no-sign
- Signera inga filer, detta omfattar källkodspaketet,
.buildinfo-filen och .changes-filen (sedan dpkg
1.18.20).
- --force-sign
- Tvinga signering av de slutliga filerna (sedan dpkg
1.17.0), oberoende av -us, --unsigned-source, -ui,
--unsigned-buildinfo, -uc, --unsigned-changes eller
annan intern heuristik.
- -sn
- -ss
- -sA
- -sk
- -su
- -sr
- -sK
- -sU
- -sR
-
-i, --diff-ignore[=reg.uttr]
-
-I, --tar-ignore[=mönster]
-
-z,
--compression-level=nivå
-
-Z, --compression=komprimering
- Sänds vidare utan ändringar till
dpkg-source. Se dess manualsida.
-
--source-option=val
- Sänd flaggan val till dpkg-source
(sedan dpkg 1.15.6). Kan användas flera gånger.
-
--changes-file=filnamn
- Använd filnamn för den genererade
.changes-filen (sedan dpkg 1.21.0).
-
--changes-option=val
- Sänder flaggan val till
dpkg-genchanges (sedan dpkg 1.15.6). Kan användas flera
gånger.
-
--admindir=kat
-
--admindir kat
- Ändra platsen för dpkg-databasen
(sedan dpkg 1.14.0). Förvald plats är
/var/lib/dpkg.
-
-?, --help
- Visar hjälpskärm och avslutar.
- --version
- Visar version och avslutar.
- DEB_CHECK_COMMAND
- Om satt, används som kommandot för att
kontrollera .changes-filen (sedan dpkg 1.17.6). Överstyrs av
flaggan --check-command.
- DEB_SIGN_KEYID
- Används för att signera filerna
.changes, .buildinfo och .dsc-filerna om satt (sedan
dpkg 1.17.2). Överstyrs av flaggan --sign-key.
- DEB_SIGN_KEYFILE
- Används för att signera filerna
.changes, .buildinfo och .dsc-filerna om satt (sedan
dpkg 1.21.10). Överstyrs av flaggan --sign-keyfile.
- DEB_BUILD_OPTIONS
- Om satt, innehåller en blankstegsavdelad lista med
flaggor som kan påverka byggprocessen i debian/rules, och
beteendet på vissa dpkg-kommandot.
Med nocheeck så kommer variabeln DEB_CHECK_COMMAND att
ignoreras. Med parallel=N kommer antalet parallella jobb
sättas till N, men kan överstyras av flaggan
--jobs-try.
- DEB_BUILD_PROFILES
- Om satt, används som aktiv(a) byggprofil(er)
för paketet som byggs (sedan dpkg 1.17.2). Det är en
blankstegsavdelad lista med profilnamn. Överstyrs av flaggan
-P.
- DPKG_COLORS
- Väljer färgläge (sedan dpkg 1.18.5).
För närvarande godtas följande värden:
auto (förval), always och never.
- DPKG_NLS
- Om satt, används för att bestämma om
lokalt språkstöd ska aktiveras, även känt som
internationaliseringsstöd (eller i18n) (sedan dpkg 1.19.0).
Tillåtna värden är: 0 och 1
(förval).
Ä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, eftersom filen
är huvudstartpunkt för att bygga paket och det även
bör stödas att köra den fristående.
- DEB_BUILD_*
- DEB_HOST_*
- DEB_TARGET_*
-
dpkg-architecture anropas med flaggorna -a
och -t vidaresända. Variabler som skrivs ut via dess
-s-flagga integreras i byggmiljön.
- DEB_RULES_REQUIRES_ROOT
- Den här variabeln sätts till värdet
som hämtas från fältet Rules-Requires-Root
eller från kommandoraden. När satt kommer det vara ett
giltigt värde för fältet Rules-Requires-Root.
Det används för att meddela debian/rules huruvida
rootless-builds.txt-specifikation stöds.
- DEB_GAIN_ROOT_CMD
- Den här variabeln sätts till
få-root-kommando när fältet
Rules-Requires-Root är satt till ett värde annat
än no och binary-targets.
- SOURCE_DATE_EPOCH
- Den är variabeln sätts till
Unix-tidsstämpeln sedan epoken för den senaste posten i
debian/changelog, om den inte redan definierats.
- /etc/dpkg/buildpackage.conf
- Konfigurationsfil för hela systemet
-
$XDG_CONFIG_HOME/dpkg/buildflags.conf
eller
-
$HOME/.config/dpkg/buildflags.conf
- Användarens konfigurationsfil.
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.
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, om
källkodspaketet inte både bygger arkitektursoberoende och
-beroende binärpaket (sedan dpkg 1.18.8) kommer den falla tillbaka till
att använda målet
build om
make -f debian/rules
-gn byggmål returnerar statuskoden 2.
Det borde vara möjligt att ange blanksteg och skalmetatecken och
inledande argument för
få-root-kommando och
signeringskommando.
/usr/share/doc/dpkg/spec/rootless-builds.txt,
dpkg-source(1),
dpkg-architecture(1),
dpkg-buildflags(1),
dpkg-genbuildinfo(1),
dpkg-genchanges(1),
fakeroot(1),
lintian(1),
<
https://datatracker.ietf.org/doc/draft-dkg-openpgp-stateless-cli/>,
sq(1),
gpg(1).
Peter Krefting och Daniel Nylander.