Provided by: dpkg-dev_1.19.7ubuntu3.2_all 

NAAM
dpkg-source - gereedschap voor het manipuleren van een Debian broncodepakket (.dsc)
OVERZICHT
dpkg-source [optie...] commando
BESCHRIJVING
dpkg-source pakt Debian broncodearchieven in en uit.
Bij geen enkel van deze commando's is het toegelaten om meerdere opties tot één enkele optie te
combineren of de waarde van een optie via een apart argument op te geven.
COMMANDO'S
-x, --extract bestandsnaam.dsc [uitvoermap]
Extraheer een broncodepakket (--extract sinds dpkg 1.17.14). Er moet één argument dat geen optie
is, opgegeven worden, namelijk de naam van het controlebestand (.dsc) van de Debian broncode.
Facultatief kan een tweede argument dat geen optie is, opgegeven worden om de map op te geven
waarin het pakket geëxtraheerd moet worden. Die mag nog niet bestaan. Indien geen uitvoermap
opgegeven werd, zal het broncodepakket uitgepakt worden in een map met als naam broncode-versie,
die onder de huidige werkmap ligt.
dpkg-source zal uit het controlebestand de namen van de andere bestanden lezen die samen het
broncodepakket vormen. Er wordt van uitgegaan dat ze zich in dezelfde map bevinden als het
.dsc-bestand.
De permissies en het eigenaarschap van de bestanden uit het geëxtraheerde pakket zullen zodanig
ingesteld worden dat ze beantwoorden aan wat men zou mogen verwachten mochten de bestanden en
mappen gewoon aangemaakt zijn - mappen en uitvoerbare bestanden zullen 0777 zijn en gewone
bestanden 0666 en beide zullen aangepast worden op basis van het umask van degene die het pakket
uitpakt. Indien de bovenliggende map setgid is, zullen de geëxtraheerde mappen dat ook zijn en al
de bestanden en mappen zullen dit groepseigenaarschap overerven.
Indien het broncodepakket een niet-standaardindeling gebruikt (momenteel betekent dit alle
indelingen behalve “1.0”), dan zal de naam ervan opgeslagen worden in debian/source/format, zodat
standaard deze indeling gebruikt wordt bij de volgende malen dat het broncodepakket gebouwd wordt.
-b, --build map [indelingsspecifieke-parameters]
Bouw een broncodepakket (--build sinds dpkg 1.17.14). Het eerste argument dat geen optie is, wordt
gebruikt als de naam van de map die de voor Debian gereedgemaakte broncodeboom bevat (d.w.z. met
een onderliggende map debian en eventuele veranderingen aan de originele bestanden). Afhankelijk
van de broncodepakketindeling die men gebruikt om het broncodepakket te bouwen, kunnen bijkomende
parameters opgegeven worden.
dpkg-source zal het broncodepakket bouwen volgens de eerste indeling die gevonden wordt in de
hierna volgende geordende lijst: de indeling opgegeven met de commandoregeloptie --format, de
indeling aangegeven in debian/source/format, “1.0”. Het terugvallen op “1.0” word afgeschaft en
zal op een bepaald moment in de toekomst weggelaten worden. U zou de gewenste broncode-indeling
steeds moeten documenteren in debian/source/format. Zie het onderdeel INDELINGEN VAN
BRONCODEPAKKETTEN voor een uitgebreide beschrijving van de verschillende indelingen voor
broncodepakketten.
--print-format map
Geef weer welke indeling gebruikt zou worden om het broncodepakket te bouwen indien dpkg-source
--build map aangeroepen werd (in dezelfde condities en met dezelfde parameters; sinds dpkg
1.15.5).
--before-build map
Voer de overeenkomstige uitbreiding (hook) uit van de broncodepakketindeling (sinds dpkg 1.15.8).
Deze uitbreiding wordt telkens aangeroepen voor het pakket gebouwd wordt (dpkg-buildpackage roept
ze zeer vroeg aan, zelfs voor debian/rules clean). Dit commando is idempotent en kan meermaals
aangeroepen worden. Niet alle broncode-indelingen implementeren iets in deze uitbreiding, en die
welke dat wel doen bereiden gewoonlijk de broncodeboom voor op het bouwproces, bijvoorbeeld door
ervoor te zorgen dat de Debian-patches toegepast worden.
--after-build map
Voer de overeenkomstige uitbreiding (hook) uit van de broncodepakketindeling (sinds dpkg 1.15.8).
Deze uitbreiding wordt telkens aangeroepen nadat het pakket gebouwd werd (dpkg-buildpackage roept
ze als laatste aan). Dit commando is idempotent en kan meermaals aangeroepen worden. Niet alle
broncode-indelingen implementeren iets in deze uitbreiding, en die welke dat wel doen gebruiken ze
gewoonlijk om ongedaan te maken wat --before-build gedaan heeft.
--commit [map] ...
Tekent veranderingen op in de broncodeboom die in map uitgepakt werd (sinds dpkg 1.16.1). Aan dit
commando kunnen afhankelijk van de broncode-indeling bijkomende parameters opgegeven worden. Het
zal een foutmelding geven bij indelingen waarvoor deze operatie geen betekenis heeft.
-?, --help
Toon de gebruiksaanwijzing en sluit af. Met de optie --format kunnen de indelingsspecifieke bouw-
en extractie-opties getoond worden.
--version
Toon de versie en sluit af.
OPTIES
Generieke bouwopties
-ccontrolebestand
Duidt aan wat het belangrijkste controlebestand van de broncode is waaruit informatie gelezen moet
worden. Standaard is dat debian/control. Indien het opgegeven wordt met een relatieve padnaam, dan
wordt die geïnterpreteerd te beginnen bij de basismap van de broncodeboom.
-lchangelog-bestand
Duidt het changelog-bestand aan waaruit informatie gelezen moet worden. Standaard is dat
debian/changelog. Indien het opgegeven wordt met een relatieve padnaam, dan wordt die
geïnterpreteerd te beginnen bij de basismap van de broncodeboom.
-Fchangelog-indeling
Geeft de indeling van het bestand changelog aan. Zie dpkg-parsechangelog(1) voor informatie over
alternatieve indelingen.
--format=waarde
Gebruik de opgegeven indeling om het broncodepakket te bouwen (sinds dpkg 1.14.17). Het vervangt
een eventuele in debian/source/format opgegeven indeling.
-Vnaam=waarde
Stel een uitvoersubstitutievariabele in. Zie deb-substvars(5) voor een bespreking van
uitvoersubstitutie.
-Tsubstvars-bestand
Lees substitutievariabelen uit substvars-bestand. De standaard is om geen enkel bestand te lezen.
Deze optie kan meermaals gebruikt worden om uit verschillende bestanden substitutievariabelen te
lezen (sinds dpkg 1.15.6).
-Dveld=waarde
Vervang in de uitvoer een veld uit het controlebestand of voeg er een toe.
-Uveld Verwijder in de uitvoer een veld uit het controlebestand.
-Zcompressie, --compression=compressie
Duidt het compressieniveau aan dat gebruikt wordt bij het maken van tar-archieven en
diff-bestanden (--compression sinds dpkg 1.15.5). Merk op dat deze optie niet tot effect heeft dat
bestaande tar-archieven opnieuw gecomprimeerd worden. Ze heeft enkel invloed op nieuwe bestanden.
Ondersteunde waarden zijn: gzip, bzip2, lzma en xz. De standaardwaarde is xz voor de indeling 2.0
en recentere indelingen en gzip voor de indeling 1.0. xz wordt enkel sinds dpkg 1.15.5
ondersteund.
-zniveau, --compression-level=niveau
Het te gebruiken compressieniveau (--compression-level sinds dpkg 1.15.5). Zoals dit het geval is
bij -Z, beïnvloedt dit enkel nieuw aangemaakte bestanden. Ondersteunde waarden zijn: 1 tot 9,
best, en fast. De standaardwaarde is 9 voor gzip en bzip2, 6 voor xz en lzma.
-i[regex], --diff-ignore[=regex]
U kunt een perl reguliere expressie opgeven om bestanden die ermee overeenkomen weg te houden uit
de lijst bestanden waarover de gemaakte diff (overzicht van ondergane wijzigingen) gaat
(--diff-ignore sinds dpkg 1.15.6). (Deze lijst wordt gegenereerd door een find-opdracht.) (Als het
broncodepakket gebouwd wordt als een versie 3 broncodepakket dat gebruik maakt van een VCS
(Version Control System - versiebeheersysteem), kan dit gebruikt worden om niet-toegepaste
wijzigingen aan specifieke bestanden te laten negeren. Door -i.* te gebruiken zullen ze allemaal
genegeerd worden.)
De optie -i zelf schakelt deze instelling in met een standaard reguliere expressie (met behoud van
eventuele wijzigingen aan de standaard reguliere expressie onder invloed van een eerder gebruikt
--extend-diff-ignore) die zorgt voor het uitfilteren van controlebestanden en -mappen van de meest
courante versiebeheersystemen, van back-upbestanden en wisselbestanden en van bouwuitvoermappen
van Libtool. Er kan slechts één reguliere expressie actief zijn. Van meerdere -i-opties zal enkel
de laatste uitwerking hebben.
Dit is erg bruikbaar voor het wegknippen van vreemde bestanden die mee opgenomen geraken in de
diff, bijvoorbeeld als u de broncode onderhoudt in een versiebeheersysteem en een werkkopie
(checkout) wilt gebruiken om een broncodepakket te bouwen, zonder dat daarin ook de extra
bestanden en mappen die ze meestal bevat (bijvoorbeeld CVS/, .cvsignore, .svn/), mee opgenomen
worden. De standaard reguliere expressie is reeds zeer exhaustief, maar indien u ze moet
vervangen, moet u ermee rekening houden dat ze standaard een overeenkomst kan opleveren met elk
onderdeel van een pad. Indien u dus een overeenkomst zoekt met het begin van een bestandsnaam of
enkel met volledige bestandsnamen, zult u zelf de nodige ankers (bijvoorbeeld ‘(^|/)’, ‘($|/)’)
moeten opgeven.
--extend-diff-ignore=regex
De opgegeven perl reguliere expressie breidt de standaardwaarde die door --diff-ignore gebruikt
wordt, uit en de huidige waarde ervan als die ingesteld werd (sinds dpkg 1.15.6). Het doet dit
door “|regex” samen te voegen met de bestaande waarde. Deze optie is handig om te gebruiken in
debian/source/options om bepaalde automatisch gegenereerde bestanden uit te sluiten bij het
automatisch genereren van patches.
-I[bestandspatroon], --tar-ignore[=bestandspatroon]
Indien deze optie opgegeven werd, wordt het patroon doorgegeven aan de optie --exclude van tar(1)
wanneer dit commando ingeroepen wordt om een bestand .orig.tar of .tar aan te maken (--tar-ignore
sinds dpkg 1.15.6). Bijvoorbeeld, -ICVS zal tar CVS-mappen doen overslaan bij het genereren van
een .tar.gz-bestand. Deze optie kan meermaals herhaald worden om meerdere patronen die uitgesloten
moeten worden op te sommen.
-I zelf voegt standaard --exclude-opties toe die zorgen voor het uitfilteren van controlebestanden
en -mappen van de meest courante versiebeheersystemen, van back-upbestanden en wisselbestanden en
van bouwuitvoermappen van Libtool.
Opmerking: hoewel zij vergelijkbare bedoelingen hebben, hebben -i en -I een heel verschillende syntaxis
en semantiek. -i kan slechts eenmaal opgegeven worden en verwacht een reguliere expressie die
perl-compatibel is en die vergeleken wordt met het volledige relatieve pad van elk bestand. -I kan
meermaals opgegeven worden en verwacht een bestandsnaampatroon met shell-jokertekens. Het patroon wordt
toegepast op het volledige relatieve pad maar ook op elk individueel onderdeel van het pad. De exacte
semantiek van de optie --exclude van tar is enigszins gecompliceerd. Zie voor een volledige documentatie
https://www.gnu.org/software/tar/manual/tar.html#wildcards.
De standaard reguliere expressies en patronen voor beide opties zijn te zien in de uitvoer van het
commando --help.
Generieke extractieopties
--no-copy
Kopieer de originele tar-archieven bij het geëxtraheerde broncodepakket niet (sinds dpkg 1.14.17).
--no-check
Controleer voor het uitpakken geen ondertekeningen en controlesommen (sinds dpkg 1.14.17).
--no-overwrite-dir
Overschrijf de extractiemap niet als ze al bestaat (sinds dpkg 1.18.8).
--require-valid-signature
Weiger het broncodepakket uit te pakken als het geen OpenPGP-ondertekening bevat die kan
gecontroleerd worden (sinds dpkg 1.15.0) met ofwel de trustedkeys.gpg-sleutelbos van de gebruiker,
één van de leveranciersspecifieke sleutelbossen of met één van de officiële sleutelbossen van
Debian (/usr/share/keyrings/debian-keyring.gpg en /usr/share/keyrings/debian-maintainers.gpg).
--require-strong-checksums
Wijger het broncodepakket uit te pakken als het geen krachtige controlesommen bevat (sinds dpkg
1.18.7). Momenteel is SHA-256 de enige gekende controlesom die als krachtig aanzien wordt.
--ignore-bad-version
Als bij een controle het versienummer van het broncodepakket foutief blijkt te zijn, maakt deze
instelling dat de gegeven waarschuwing geen fataal karakter heeft (sinds dpkg 1.17.7). Deze optie
zou enkel nodig moeten zijn bij het extraheren van oude broncodepakketten met een defecte versie
om neerwaartse compatibiliteit te verzekeren.
INDELINGEN VAN BRONCODEPAKKETTEN
Indien u niet weet welke indeling te kiezen voor de broncode, zou u wellicht ofwel “3.0 (quilt)” of “3.0
(native)” moeten kiezen. Zie https://wiki.debian.org/Projects/DebSrc3.0 voor informatie over het in
gebruik nemen van deze indelingen binnen Debian.
Indeling: 1.0
Een broncodepakket volgens deze indeling bestaat ofwel uit een .orig.tar.gz gekoppeld aan een .diff.gz of
één enkele .tar.gz (in dat geval wordt van het pakket gezegd dat het native (eigen - van oorsprong van
Debian) is). Optioneel mag bij het originele tar-archief een afzonderlijke handtekening van de
toeleveraar .orig.tar.gz.asc gevoegd zijn. De extractie ervan wordt ondersteund sinds dpkg 1.18.5.
Extraheren
Een Debian-eigen (native) pakket extraheren is een eenvoudige extractie van het enige tar-archief in de
doelmap. Een niet-eigen pakket extraheren bestaat eruit dat eerst .orig.tar.gz uitgepakt wordt en dat dan
de patch erop toegepast wordt uit het bestand .diff.gz. Voor alle bestanden waarop een patch toegepast
werd, wordt de tijdsaanduiding teruggezet op het tijdstip van extraheren van het broncodepakket (dit
vermijdt scheeftrekkingen van de tijdsaanduiding hetgeen tot problemen kan leiden wanneer automatisch
gegenereerde bestanden gepatcht worden). Het diff-bestand kan nieuwe bestanden aanmaken (de volledige
debian-map wordt op die manier aangemaakt), maar kan geen bestanden verwijderen (lege bestanden blijven
achter).
Bouwen
Een Debian-eigen (native) pakket bouwen is gewoon een enkel tar-archief maken met daarin de broncodemap.
Een niet-eigen pakket bouwen bestaat uit het extraheren van het originele tar-archief in een aparte map
“.orig” en het opnieuw aanmaken van het bestand .diff.gz door de map van het broncodepakket te
vergelijken met de .orig-map.
Bouwopties (met --build):
Indien een tweede argument opgegeven wordt dat geen optie is, moet het de naam van de originele
broncodemap zijn of van het tar-archief of een lege tekenreeks als het pakket Debian-specifiek is en dus
geen diffs bevat in verband met de debianisering. Indien geen tweede argument opgegeven werd, zal
dpkg-source zoeken naar het tar-bestand met de originele broncode pakket_toeleveraarsversie.orig.tar.gz
of naar de map met de originele broncode map.orig, afhankelijk van de argumenten -sX.
-sa, -sp, -sk, -su en -sr zullen geen bestaande tar-bestanden of -mappen overschrijven. Indien dat wel
gewenst wordt, dan moeten in de plaats daarvan -sA, -sP, -sK, -sU en -sR gebruikt worden.
-sk Geeft aan dat verwacht mag worden dat de originele broncode in de vorm van een tar-bestand kan
aangetroffen worden, wat standaard pakket_toeleveraarsversie.orig.tar.extensie is. Het zal deze
originele broncode als een tar-bestand laten staan of ze naar de huidige map kopiëren als ze zich
daar nog niet bevindt. Het tar-archief zal uitgepakt worden in map.orig met het oog op het
genereren van het diff-bestand.
-sp Zoals -sk maar dit zal naderhand de map weer verwijderen.
-su Geeft aan dat verwacht mag worden dat de originele broncode in de vorm van een map kan
aangetroffen worden, wat standaard pakket-toeleveraarsversie.orig is, en dpkg-source zal er een
nieuw archief met de originele broncode mee maken.
-sr Zoals -su, maar het zal die map na gebruik verwijderen.
-ss Geeft aan dat de originele broncode zowel als een map als in de vorm van een tar-bestand te vinden
is. dpkg-source zal de map gebruiken om het diff-bestand te creëren, maar het tar-bestand om het
.dsc-bestand te maken. Gebruik deze optie met zorg - indien de map en het tar-bestand niet
overeenkomen zal er een slecht broncodearchief gegenereerd worden.
-sn Geeft aan dat er niet naar een originele broncode gezocht moet worden en dat er geen diff-bestand
aangemaakt moet worden. Als er een tweede argument opgegeven wordt, moet het de lege tekenreeks
zijn. Dit wordt gebruikt voor Debian-specifieke pakketten die geen afzonderlijke
toeleveraarsbroncode hebben en om die reden ook geen debianiserings-diffs.
-sa of -sA
Geeft aan dat naar de originele broncode gezocht moet worden in de vorm van een tar-bestand of een
map. Als er een tweede argument opgegeven wordt, mag dat een van die twee zijn of een lege
tekenreeks (dit is het equivalent voor het gebruik van -sn). Indien er een tar-bestand gevonden
wordt, zal het dat uitpakken om het diff-bestand aan te maken en het daarna verwijderen (dit is
het equivalent voor -sp). Indien een map aangetroffen wordt, zal het die inpakken om de originele
broncode te creëren en ze vervolgens verwijderen (dit is het equivalent voor -sr). Indien geen van
beide gevonden wordt, zal het aannemen dat het pakket geen debianiserings-diffs heeft, maar enkel
een eenvoudig broncodearchief (dit is het equivalent voor -sn). Indien beide aangetroffen worden,
dan zal dpkg-source de map negeren, en ze overschrijven als -sA opgegeven werd (dit is het
equivalent voor -sP) of een foutmelding geven als -sa opgegeven werd. -sa is de standaard.
--abort-on-upstream-changes
Het proces mislukt als het gegenereerde diff-bestand wijzigingen aan bestanden buiten de
onderliggende debian-map bevat (sinds dpkg 1.15.8). Deze optie is in debian/source/options niet
toegestaan, maar ze kan wel gebruikt worden in debian/source/local-options.
Extractieopties (met --extract):
In alle gevallen zal een eventuele bestaande originele broncodeboom verwijderd worden.
-sp Als dit bij het extraheren gebruikt wordt, dan zal het de (eventuele) originele broncode in zijn
vorm van tar-bestand laten. Indien dit zich nog niet in de huidige map bevindt, of indien er zich
een bestaand maar verschillend bestand bevindt, zal het naar daar gekopieerd worden. (Dit is de
standaard).
-su Pakt de originele broncodeboom uit.
-sn Zorgt ervoor dat de originele broncode noch naar de huidige map gekopieerd wordt noch uitgepakt
wordt. Een eventuele originele broncodeboom die zich in de huidige map bevond, wordt nog steeds
verwijderd.
Al de -sX-opties sluiten elkaar wederzijds uit. Indien u er meer dan één opgeeft, dan zal enkel de
laatste gebruikt worden.
--skip-debianization
Slaat het toepassen van de debian diff bovenop de broncode van de toeleveraar over (sinds dpkg
1.15.1).
Indeling: 2.0
Extraheren wordt sinds dpkg 1.13.9 ondersteund, bouwen sinds dpkg 1.14.8. Ook gekend als wig&pen. Deze
indeling wordt niet aangeraden voor massaal gebruik, de indeling “3.0 (quilt)” vervangt ze. Wig&pen was
de eerste specificatie van een broncodepakketindeling van de nieuwe generatie.
Het gedrag van deze indeling is hetzelfde als bij de indeling “3.0 (quilt)”, behalve dat het geen gebruik
maakt van een expliciete lijst van patches. Alle bestanden in debian/patches/ die beantwoorden aan de
reguliere expressie [\w-]+ moeten geldige patches zijn: zij worden op het moment van extraheren
toegepast.
Bij het bouwen van een nieuw broncodepakket worden eventuele wijzigingen aan de broncode van de
toeleveraar opgeslagen in een patch met als naam zz_debian-diff-auto.
Indeling: 3.0 (native) (d.w.z. debian-eigen)
Wordt ondersteund sinds dpkg 1.14.17. Deze indeling is een uitbreiding van de native pakketindeling,
zoals gedefinieerd in de indeling 1.0. Ze ondersteunt alle compressiemethodes en negeert standaard
eventuele VCS-specifieke bestanden en mappen (bestanden en mappen die verband houden met het
versiebeheersysteem) evenals vele tijdelijke bestanden (zie de uitvoer van de optie --help voor de
standaardwaarde van de optie -I).
Indeling: 3.0 (quilt)
Wordt ondersteund sinds dpkg 1.14.17. Een broncodepakket volgens deze indeling bevat minstens een
origineel tar-archief (.orig.tar.ext waarbij ext gz, bz2, lzma en xz kan zijn) en een debian tar-archief
(.debian.tar.ext). Het kan ook bijkomende originele tar-archieven bevatten (.orig-component.tar.ext).
component mag enkel alfanumerieke tekens (‘a-zA-Z0-9’) en koppeltekens (‘-’) bevatten. Optioneel mag bij
elk origineel tar-archief een afzonderlijke handtekening van de toeleveraar (.orig.tar.ext.asc en
.orig-component.tar.ext.asc), gevoegd worden. De extractie ervan wordt ondersteund sinds dpkg 1.17.20 en
het bouwen sinds dpkg 1.18.5.
Extraheren
Eerst wordt het belangrijkste originele tar-archief uitgepakt en nadien worden alle bijkomende originele
tar-archieven uitgepakt in onderliggende mappen die genoemd worden naar het component-gedeelte van hun
bestandsnaam (een eventuele reeds bestaande map wordt vervangen). Het debian tar-archief wordt bovenop de
broncodemap geëxtraheerd nadat eerst een eventuele reeds bestaande debian-map verwijderd werd. Merk op
dat het debian tar-archief een onderliggende map debian moet bevatten, maar dat het ook binaire bestanden
kan bevatten buiten die map (zie de optie --include-binaries).
Vervolgens worden alle patches toegepast die vermeld zijn in debian/patches/leverancier.series of
debian/patches/series, waarbij leverancier de naam is in kleine letters van de huidige leverancier, of
debian als geen leverancier gedefinieerd is. Indien het eerste bestand gebruikt wordt en het laatste niet
bestaat (of een symbolische koppeling is), dan zal het laatste vervangen worden door een symbolische
koppeling naar het eerste. Dit is bedoeld om het gebruik van quilt bij het beheer van het geheel van
patches te vereenvoudigen. Leveranciersspecifieke series-bestanden hebben tot doel het serialiseren van
meerdere leveranciersgebonden ontwikkelingstakken op een declaratieve manier mogelijk te maken, wat
verkieslijker is boven een open codering van deze manipulatie in debian/rules. Dit is in het bijzonder
nuttig wanneer de broncode voorwaardelijk gepatched moet worden omdat de betrokken bestanden geen
ingebouwde ondersteuning hebben voor conditionele occlusie. Merk nochtans op dat hoewel dpkg-source op
correcte wijze de ontleding uitvoert van series-bestanden met expliciete opties die gebruikt worden voor
het toepassen van patches (op elke regel opgeslagen na de bestandsnaam van de patch en één of meer
spaties), het deze opties negeert en steeds patches verwacht die kunnen toegepast worden met de optie -p1
van patch. Het zal dus een waarschuwing geven als het dergelijke opties tegenkomt en het bouwen zal
waarschijnlijk mislukken.
Opmerking: indien leveranciers-series-bestanden gebruikt worden, geeft lintian(1) onvoorwaardelijke
waarschuwingen als gevolg van een controversieel Debian-specifiek besluit. Extern gebruik zou hierdoor
niet getroffen mogen worden. Om dergelijke waarschuwingen het zwijgen op te leggen kunt u het
dpkg-profiel van lintian gebruiken door aan lintian(1) de optie «--profile dpkg» mee te geven.
Voor alle bestanden waarop een patch toegepast werd, wordt de tijdsaanduiding teruggezet op het tijdstip
van extraheren van het broncodepakket (dit vermijdt scheeftrekkingen van de tijdsaanduiding hetgeen tot
problemen kan leiden wanneer automatisch gegenereerde bestanden gepatcht worden).
In tegenstelling tot het standaardgedrag van quilt wordt verwacht dat patches zonder gedoe toegepast
kunnen worden. Indien dat niet het geval is, zou u de patches moeten verversen met quilt, anders zal
dpkg-source met een foutmelding afbreken terwijl het probeert ze toe te passen.
Analoog aan het standaardgedrag van quilt kunnen patches ook bestanden verwijderen.
Als tijdens het extraheren patches werden toegepast, wordt het bestand .pc/applied-patches aangemaakt.
Bouwen
Alle originele tar-archieven die in de huidige map gevonden worden, worden geëxtraheerd in een tijdelijke
map en daarbij wordt dezelfde logica gevolgd als bij het uitpakken. De debian-map wordt naar de
tijdelijke map gekopieerd en alle patches worden toegepast, behalve de automatische patch
(debian-changes-versie of debian-changes, afhankelijk van --single-debian-patch). De tijdelijke map wordt
vergeleken met de map van het broncodepakket. Indien de diff niet leeg is, zal het bouwen mislukken,
tenzij --single-debian-patch of --auto-commit gebruikt werden en in dat geval wordt de diff opgeslagen in
de automatische patch. Indien de automatische patch aangemaakt/verwijderd wordt, wordt hij toegevoegd
aan/verwijderd van het bestand series en van de metadata van quilt.
Een eventuele wijziging aan een binair bestand kan niet weergegeven worden in een diff en zal dus tot een
mislukking leiden, tenzij de onderhouder bewust besloot dat gewijzigd binair bestand toe te voegen aan
het Debian tar-archief (door het op te sommen in debian/source/include-binaries). Het bouwen zal ook
mislukken als er binaire bestanden aangetroffen worden in de onderliggende map debian, tenzij zij op de
witte lijst gezet werden via debian/source/include-binaries.
De bijgewerkte map debian en de lijst van gewijzigde binaire bestanden wordt dan gebruikt om het Debian
tar-archief te genereren.
De automatisch gegenereerde diff bevat geen wijzigingen aan VCS-specifieke bestanden (d.w.z. bestanden
eigen aan het versiebeheersysteem) en aan veel tijdelijke bestanden (kijk in de uitvoer van --help voor
de standaardwaarde die met de optie -i) verbonden is. In het bijzonder wordt de map .pc die door quilt
gebruikt wordt, genegeerd tijdens het genereren van de automatische patch.
Opmerking: dpkg-source --before-build (en --build) zal ervoor zorgen dat alle patches die in het bestand
series opgesomd zijn, toegepast worden, zodat bij het bouwen van een pakket steeds alle patches toegepast
zijn. Het doet dit door te zoeken naar niet-toegepaste patches (ze worden opgesomd in het bestand series
maar niet in .pc/applied-patches) en indien de eerste patch uit die reeks foutloos toegepast kan worden,
zal het ze allemaal toepassen. De optie --no-preparation kan gebruikt worden om dit gedrag uit te
schakelen.
Wijzigingen optekenen
--commit [map] [patchnaam] [patchbestand]
Genereert een patch in verband met de lokale wijzigingen die niet door het patchsysteem van quilt
beheerd worden en integreert die in het patchsysteem onder de naam patchnaam. Indien de naam
ontbreekt, zal er interactief om gevraagd worden. Indien patchbestand opgegeven werd, wordt dat
gebruikt als de te integreren patch in verband met de lokale wijzigingen. Na de integratie wordt
een editor opgestart, zodat u de meta-informatie in de koptekst van de patch kunt bewerken.
Een patchbestand opgeven is vooral nuttig na een mislukte bouwpoging die dat bestand vooraf
aanmaakte. Op grond daarvan wordt dat bestand na integratie verwijderd. Merk ook op dat de
wijzigingen die het patch-bestand bevat, reeds toegepast moeten zijn op de boom en dat de
bestanden die door de patch aangepast werden geen bijkomende niet-opgetekende wijzigingen mogen
bevatten.
Indien het genereren van de patch gewijzigde binaire bestanden opmerkt, zullen die automatisch
toegevoegd worden aan debian/source/include-binaries, zodat die terecht komen in het debian
tar-archief (exact op dezelfde manier als dpkg-source --include-binaries --build zou doen).
Bouwopties
--allow-version-of-quilt-db=versie
Laat dpkg-source toe het broncodepakket te bouwen als de versie van de metadata van quilt de
opgegeven versie is, zelfs al kent dpkg-source die niet (sinds dpkg 1.15.5.4). Dit zegt effectief
dat de opgegeven versie van de quilt-metadata compatibel is met versie 2 die momenteel door
dpkg-source ondersteund wordt. De versie van de metadata van quilt wordt opgeslagen in
.pc/.version.
--include-removal
Negeer verwijderde bestanden niet en neem ze op in de automatisch gegenereerde patch.
--include-timestamp
Voeg de tijdsaanduiding toe in de automatisch gegenereerde patch.
--include-binaries
Voeg alle gewijzigde binaire bestanden toe aan het debian tar-archief. Voeg ze ook toe in
debian/source/include-binaries: in erop volgende bouwactiviteiten zullen ze standaard toegevoegd
worden en is deze optie dus niet meer nodig.
--no-preparation
Tracht de bouwboom niet voor te bereiden door patches toe te passen die blijkbaar niet toegepast
zijn (sinds dpkg 1.14.18).
--single-debian-patch
Gebruik debian/patches/debian-changes in plaats van debian/patches/debian-changes-versie voor de
naam van de tijdens het bouwen automatisch gegenereerde patch (sinds dpkg 1.15.5.4). Deze optie is
in het bijzonder nuttig als het pakket wordt onderhouden in een VCS (versiebeheersysteem) en een
reeks patches niet op een betrouwbare manier gegenereerd kan worden. De huidige verschillen (de
diff) met de toeleveraarsversie moeten dan eerder in een enkele patch opgeslagen worden. Deze
optie wordt geplaatst in debian/source/local-options en gaat samen met een bestand
debian/source/local-patch-header waarin uitgelegd wordt hoe de door Debian aangebrachte
wijzigingen best herzien kunnen worden, bijvoorbeeld in het versiebeheersysteem dat gebruikt
wordt.
--create-empty-orig
Creëer automatisch een leeg primair origineel tar-archief als dat ontbreekt en er wel bijkomende
originele tar-archieven zijn (sinds dpkg 1.15.6). Deze optie is bedoeld om gebruikt te worden als
het broncodepakket slechts een bundel is van samengestelde toegeleverde software zonder een
“centraal” programma.
--no-unapply-patches, --unapply-patches
Standaard zal dpkg-source de patches uit de uitbreiding (hook) --after-build automatisch
terugdraaien als het die tijdens --before-build heeft toegepast (--unapply-patches sinds dpkg
1.15.8, --no-unapply-patches sinds dpkg 1.16.5). Deze opties laten u toe om het proces van
automatisch terugdraaien van patches uitdrukkelijk in of uit te schakelen. Deze opties mogen enkel
in debian/source/local-options gebruikt worden, zodat alle gegenereerde broncodepakketten
standaard hetzelfde gedrag vertonen.
--abort-on-upstream-changes
Het proces mislukt als een automatische patch gegenereerd werd (sinds dpkg 1.15.8). Deze optie kan
gebruikt worden om te verzekeren dat alle wijzigingen terdege geregistreerd worden in aparte
quilt-patches vooraleer het broncodepakket gegenereerd wordt. Deze optie is niet toegestaan in
debian/source/options, maar mag gebruikt worden in debian/source/local-options.
--auto-commit
Het proces mislukt niet als een automatische patch gegenereerd werd. In de plaats daarvan wordt
hij onmiddellijk opgetekend in het bestand series van quilt.
Extractieopties
--skip-debianization
Slaat het extraheren van het debian tar-archief bovenop de broncode van de toeleveraar over (sinds
dpkg 1.15.1).
--skip-patches
Pas op het einde van de extractie geen patches toe (sinds dpkg 1.14.18).
Indeling: 3.0 (custom) (d.w.z. aangepast)
Ondersteund sinds dpkg 1.14.17. Deze indeling is bijzonder. Ze stelt eigenlijk geen echte
broncodepakketindeling voor, maar kan gebruikt worden om broncodepakketten met arbitraire bestanden te
maken.
Bouwopties
Alle argumenten die geen opties zijn, worden geïnterpreteerd als bestanden die geïntegreerd moeten worden
in het gegenereerde broncodepakket. Ze moeten bestaan en zich bij voorkeur in de huidige map bevinden.
Tenminste één bestand moet opgegeven worden.
--target-format=waarde
Verplicht. Definieert de echte indeling van het gegenereerde broncodepakket. Het gegenereerde
.dsc-bestand zal in het veld Format deze waarde bevatten en niet “3.0 (custom)”.
Indeling: 3.0 (git)
Ondersteund sinds dpkg 1.14.17. Dit is een experimentele indeling.
Een broncodepakket volgens deze indeling bestaat uit een eenvoudige bundeling van een git-depot .git die
de broncode van het pakket bevat. Er kan ook een bestand .gitshallow bestaan die de revisies vermeldt van
een git shallow clone (een summiere kloon van een git-depot).
Extraheren
De bundel wordt gekloond in de doelmap als een git-depot. Als er een bestand gitshallow bestaat, wordt
het als .git/shallow geïnstalleerd binnenin het gekloonde git-depot.
Merk op dat standaard het nieuwe depot dezelfde tak zal binnengehaald hebben die binnengehaald was in de
originele broncode. (Meestal is dat “master”, maar dat kan om het even wat zijn). Eventuele andere takken
zullen beschikbaar zijn onder remotes/origin/.
Bouwen
Vooraleer voort te gaan, worden een aantal controles uitgevoerd om zeker te zijn dat er geen
niet-vastgelegde wijzigingen zijn die niet mogen genegeerd worden.
git-bundle(1) wordt gebruikt om een bundel te genereren van het git-depot. Standaard worden alle takken
en tags uit het depot in de bundel opgenomen.
Bouwopties
--git-ref=ref
Laat toe om een git-referentie op te geven die in de bundel opgenomen moet worden. Daar gebruik
van maken schakelt het standaardgedrag om alle takken en tags op te nemen uit. Kan meermaals
vermeld worden. De referentie kan de naam van een tak of een tag zijn die opgenomen moet worden.
Het kan ook een parameter zijn die doorgegeven kan worden aan git-rev-list(1). Gebruik
bijvoorbeeld --git-ref=master om enkel de master-tak op te nemen. Om alle takken en tags, behalve
de tak persoonlijk op te nemen, gebruikt u --git-ref=--all --git-ref=^persoonlijk.
--git-depth=aantal
Creëert een summiere (shallow) kloon met een geschiedenis die afgekapt werd bij het opgegeven
aantal revisies.
Indeling: 3.0 (bzr)
Ondersteund sinds dpkg 1.14.17. Dit is een experimentele indeling. Ze genereert één enkel tar-archief met
daarin het bzr-depot.
Extraheren
Het tar-archief wordt uitgepakt en daarna wordt bzr gebruikt om een werkkopie van de huidige tak te
maken.
Bouwen
Vooraleer voort te gaan, worden een aantal controles uitgevoerd om zeker te zijn dat er geen
niet-vastgelegde wijzigingen zijn die niet mogen genegeerd worden.
Daarna wordt het versiebeheerspecifieke deel van de broncodemap gekopieerd naar een tijdelijke map.
Vooraleer deze tijdelijke map in een tar-archief ingepakt wordt, worden verschillende opruimtaken
verricht om plaats te winnen.
DIAGNOSTIEK
geen broncode-indeling opgegeven in debian/source/format
Het bestand debian/source/format moet altijd bestaan en de gewenste broncode-indeling aangeven. Met het
oog op neerwaartse compatibiliteit wordt indeling “1.0” verondersteld als het bestand niet bestaat, maar
u zou hierop niet moeten betrouwen: ergens in de toekomst zal dpkg-source aangepast worden, zodat het zal
mislukken als het bestand niet bestaat.
De verantwoording is dat indeling “1.0” niet langer de aanbevolen indeling is. U zou gewoonlijk één van
de recentere indelingen (“3.0 (quilt)”, “3.0 (native)”) moeten kiezen, maar dpkg-source zal dit niet
automatisch voor u doen. Indien u de oude indeling wilt blijven gebruiken, moet u dat expliciet aangeven
en “1.0” plaatsen in debian/source/format.
de diff wijzigt de volgende bestanden van de toeleveraar
Als u broncode-indeling “1.0” gebruikt, is het meestal geen goed idee om rechtstreeks wijzigingen aan te
brengen in bestanden van de toeleveraar, vermits de wijzigingen verborgen en grotendeels
niet-gedocumenteerd belanden in het bestand .diff.gz. U zou uw wijzigingen dan beter opslaan als patches
in de map debian en ze dan op het ogenblik van het bouwen toepassen. Om deze complexe werkwijze te
vermijden, kunt u ook de indeling “3.0 (quilt)” gebruiken, die dit geïntegreerd aanbiedt.
kan wijziging aan bestand niet representeren
Wijzigingen aan de broncode van de toeleveraar worden gewoonlijk met patch-bestanden opgeslagen, maar
niet alle wijzigingen kunnen met patches gerepresenteerd worden, omdat die enkel de inhoud van gewone
tekstbestanden kunnen aanpassen. Indien u een bestand tracht te vervangen door iets van een ander type
(bijvoorbeeld een gewoon bestand vervangen door een symbolische koppeling of een map), zult u deze
foutmelding krijgen.
nieuw gecreëerd leeg bestand bestand zal niet gerepresenteerd worden in de diff
Lege bestanden kunnen niet met behulp van patch-bestanden aangemaakt worden. Deze wijziging wordt dus
niet geregistreerd in het broncodepakket en u wordt daarover ingelicht.
toegangsrechten uitvoerbare modus van bestand zullen niet gerepresenteerd worden in de diff
Patch-bestanden registreren geen toegangsrechten van bestanden en dus wordt het feit dat een bestand
uitvoerbaar is, niet in het broncodepakket opgeslagen. Deze waarschuwing brengt dit feit in herinnering.
toegangsrechten bijzondere modus van bestand zullen niet gerepresenteerd worden in de diff
Patch-bestanden registreren geen toegangsrechten van bestanden en dus worden wijzigingen aan
toegangsrechten niet opgeslagen in het broncodepakket. Deze waarschuwing brengt dit feit in herinnering.
OMGEVING
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).
SOURCE_DATE_EPOCH
Indien dit ingesteld werd, zal het gebruikt worden als de tijdsaanduiding (timestamp) (in seconden
sinds de epoch) om de mtime vast te zetten op de items uit het tar(5)-bestand.
VISUAL
EDITOR Gebruikt door de broncode-indelingmodules “2.0” en “3.0 (quilt)”.
GIT_DIR
GIT_INDEX_FILE
GIT_OBJECT_DIRECTORY
GIT_ALTERNATE_OBJECT_DIRECTORIES
GIT_WORK_TREE
Gebruikt door de broncode-indelingmodules “3.0 (git)”.
BESTANDEN
debian/source/format
Dit bestand bevat op één enkele regel de indeling die gebruikt moet worden om het broncodepakket te
bouwen (mogelijke indelingen werden hierboven beschreven). Voorafgaande of nakomende witruimte is niet
toegelaten.
debian/source/include-binaries
Dit bestand bevat een lijst van binaire bestanden (één per regel) die opgenomen moeten worden in het
debian tar-archief. Voorafgaande of nakomende spaties worden gestript. Regels die beginnen met ‘#’ zijn
commentaar en worden overgeslagen. Lege regels worden genegeerd.
debian/source/options
Dit bestand bevat een lijst met lange opties die automatisch voorgevoegd moeten worden aan de reeks
commandoregelopties die gebruikt worden bij het inroepen van het commando dpkg-source --build of
dpkg-source --print-format. Opties zoals --compression en --compression-level zijn zeer geschikt voor dit
bestand.
Elke optie moet op een aparte regel geplaatst worden. Lege regels en regels die beginnen met ‘#’ worden
genegeerd. De ‘--’ vooraan moeten weggelaten worden en korte opties zijn niet toegelaten. Facultatieve
witruimte rond het symbool ‘=’ en facultatieve aanhalingstekens rond de waarde zijn toegelaten. Hierna
volgt een voorbeeld van een dergelijk bestand:
# laat dpkg-source een bestand debian.tar.bz2 aanmaken met maximale compressie
compression = "bzip2"
compression-level = 9
# gebruik debian/patches/debian-changes als automatische patch
single-debian-patch
# negeer wijzigingen aan config.{sub,guess}
extend-diff-ignore = "(^|/)(config.sub|config.guess)$"
Opmerking: --format-opties worden niet aanvaard in dit bestand. U moet daarvoor eerder
debian/source/format gebruiken.
debian/source/local-options
Precies zoals debian/source/options, behalve dat het bestand niet opgenomen wordt in het gegenereerde
broncodepakket. Dit kan nuttig zijn om een voorkeur op te slaan die eigen is aan de onderhouder of aan
een bepaald depot van een versiebeheersysteem waarin het pakket onderhouden wordt.
debian/source/local-patch-header en debian/source/patch-header
Vrij opgemaakte tekst die geplaatst wordt bovenaan de automatische patch die gegenereerd wordt bij de
indelingen “2.0” en “3.0 (quilt)”. local-patch-header wordt niet toegevoegd aan het gegenereerde
broncodepakket, terwijl dat met patch-header wel het geval is.
debian/patches/leverancier.series
debian/patches/series
Dit bestand somt alle patches op die toegepast moeten worden (in de opgegeven volgorde) bovenop het
broncodepakket van de toeleveraar. Spaties vooraan en achteraan worden weggehaald. leverancier is de naam
in kleine letters van de huidige leverancier of debian als geen leverancier gedefinieerd werd. Indien het
leveranciersspecifieke series-bestand niet bestaat, zal het leveranciersloze series-bestand gebruikt
worden. Regels die beginnen met ‘#’ zijn commentaar en worden overgeslagen. Lege regels worden genegeerd.
De overige regels beginnen met de bestandsnaam van een patch (relatief ten opzichte van de map
debian/patches/) tot aan de eerste spatie of het einde van de regel. Facultatieve quilt-opties kunnen
daarna komen tot aan het einde van de regel of tot aan het eerste ‘#’-teken dat voorafgegaan wordt door
één of meer spaties (hetgeen het begin van een commentaarstuk aangeeft dat doorloopt tot het einde van de
regel).
BUGS
Het punt waarop de vervanging van velden plaats vindt, vergeleken met bepaalde standaardinstellingen voor
uitvoervelden, is eerder onduidelijk.
ZIE OOK
deb-src-control(5), deb-changelog(5), dsc(5).
1.19.7 2022-05-25 dpkg-source(1)