.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "dpkg-buildflags 1" .TH dpkg-buildflags 1 2024-03-10 1.22.6 "dpkg suite" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH BEZEICHNUNG .IX Header "BEZEICHNUNG" dpkg-buildflags \- liefert Bauschalter zum Einsatz beim Paketbau .SH \(:UBERSICHT .IX Header "\(:UBERSICHT" \&\fBdpkg-buildflags\fR [\fIOption\fR …] [\fIBefehl\fR] .SH BESCHREIBUNG .IX Header "BESCHREIBUNG" \&\fBdpkg-buildflags\fR ist ein Werkzeug, das zum Abfragen der zu verwendenden Kompilierungsschalter f\(:ur den Bau von Debian-Paketen eingesetzt wird. .PP Die Standardschalter werden vom Lieferanten definiert, sie k\(:onnen auf mehrere Arten erweitert/\(:uberschrieben werden: .IP 1. 4 systemweit mit \fB/etc/dpkg/buildflags.conf\fR .IP 2. 4 f\(:ur den aktuellen Benutzer mit \fR\f(CB$XDG_CONFIG_HOME\fR\fB/dpkg/buildflags.conf\fR, wobei \fB\fR\f(CB$XDG_CONFIG_HOME\fR\fB\fR standardm\(:a\(ssig auf \fB\fR\f(CB$HOME\fR\fB/.config\fR gesetzt ist .IP 3. 4 tempor\(:ar durch den Benutzer mittels Umgebungsvariablen (siehe Abschnitt "UMGEBUNG") .IP 4. 4 dynamisch durch den Paketverwalter mittels Umgebungsvariablen, die \(:uber \fBdebian/rules\fR gesetzt wurden (siehe Abschnitt "UMGEBUNG") .PP Die Konfigurationsdateien k\(:onnen vier Arten von Direktiven enthalten: .IP "\fBSET\fR \fISchalter\fR \fIWert\fR" 4 .IX Item "SET Schalter Wert" \(:Uberschreibt den Schalter namens \fISchalter\fR, um den Wert \fIWert\fR zu erhalten. .IP "\fBSTRIP\fR \fISchalter\fR \fIWert\fR" 4 .IX Item "STRIP Schalter Wert" Aus dem Schalter namens \fISchalter\fR alle in \fIWert\fR aufgef\(:uhrten Bauschalter entfernen. Seit Dpkg 1.16.1. .IP "\fBAPPEND\fR \fISchalter\fR \fIWert\fR" 4 .IX Item "APPEND Schalter Wert" Erweitert den Schalter namens \fISchalter\fR durch Anh\(:angen der in \fIWert\fR angegebenen Optionen. Ein Leerzeichen wird dem angeh\(:angten Wert vorangestellt, falls der derzeitige Wert nicht leer ist. .IP "\fBPREPEND\fR \fISchalter\fR \fIWert\fR" 4 .IX Item "PREPEND Schalter Wert" Erweitert den Schalter namens \fISchalter\fR durch Voranstellen der in \fIWert\fR angegebenen Optionen. Ein Leerzeichen wird dem vorangestellten Wert angeh\(:angt, falls der derzeitige Wert nicht leer ist. Seit Dpkg 1.16.1. .PP Die Konfigurationsdateien k\(:onnen Kommentare in Zeilen enthalten, die mit einer Raute (#) beginnen. Leere Zeilen werden auch ignoriert. .PP Dieses Programm wurde in Dpkg 1.15.7 hinzugef\(:ugt. .SH BEFEHLE .IX Header "BEFEHLE" .IP \fB\-\-dump\fR 4 .IX Item "--dump" Gibt auf der Standardausgabe alle Kompilierschalter und ihre Werte aus. Es wird ein Schalter pro Zeile ausgegeben, wobei die Werte durch ein Gleichheitszeichen (\(Bq\fISchalter\fR=\fIWerte\fR\(lq) abgetrennt werden. Dies ist die Standardaktion. .IP \fB\-\-list\fR 4 .IX Item "--list" Gibt die Liste der vom aktuellen Lieferanten unterst\(:utzten Schalter (einen pro Zeile) aus. Lesen Sie den Abschnitt "UNTERST\(:UTZTE SCHALTER" f\(:ur weitere Informationen \(:uber sie. .IP \fB\-\-status\fR 4 .IX Item "--status" Zeigt alle Informationen an, die zum Verst\(:andnis des Verhaltens von \fBdpkg-buildflags\fR n\(:utzlich sein k\(:onnen (seit Dpkg 1.16.5): relevante Umgebungsvariablen, aktueller Lieferant, Zustand der Funktionsschalter. Auch die entstehenden Compiler-Schalter mit ihrem Ursprung werden ausgegeben. .Sp Dies ist zur Ausf\(:uhrung in \fBdebian/rules\fR gedacht, so dass das Bauprotokoll einen klaren Nachweis der verwandten Bauschalter enth\(:alt. Dies kann zur Diagnose von Problemen in Zusammenhang mit diesen n\(:utzlich sein. .IP \fB\-\-export=\fR\fIFormat\fR 4 .IX Item "--export=Format" Gibt auf der Standardausgabe Befehle aus, die dazu verwandt werden k\(:onnen, alle Kompilierschalter f\(:ur bestimmte Werkzeuge zu exportieren. Falls der Wert von \fIFormat\fR nicht angegeben wird, wird \fBsh\fR angenommen. Nur Kompilierschalter, die mit einem Gro\(ssbuchstaben beginnen, werden aufgenommen. Bei allen anderen wird angenommen, dass sie f\(:ur die Umgebung nicht geeignet sind. Unterst\(:utzte Formate: .RS 4 .IP \fBsh\fR 4 .IX Item "sh" Shell-Befehle, um alle Kompilierungsschalter in der Umgebung zu setzen und zu exportieren. Die Schalterwerte werden maskiert, so dass die Ausgabe f\(:ur Auswertung durch eine Shell bereit ist. .IP \fBcmdline\fR 4 .IX Item "cmdline" Argumente, die an die Befehlszeile eines Bauprogrammes \(:ubergeben werden, um alle \(:Ubersetzungsschalter zu verwenden (seit Dpkg 1.17.0). Die Schalterwerte werden in Shell-Syntax maskiert. .IP "\fBconfigure\fR (konfiguriert)" 4 .IX Item "configure (konfiguriert)" Dies ist ein historischer Alias f\(:ur \fBcmdline\fR. .IP \fBmake\fR 4 .IX Item "make" Make-Direktiven, um alle Kompilierungsschalter in der Umgebung zu setzen und zu exportieren. Die Ausgabe kann in ein Make-Steuerdateifragment geschrieben und mit einer \fBinclude\fR\-Direktive ausgewertet werden. .RE .RS 4 .RE .IP "\fB\-\-get\fR \fISchalter\fR" 4 .IX Item "--get Schalter" Gibt den Wert des Schalters auf der Standardausgabe aus. Beendet sich mit 0, falls der Schalter bekannt ist, andernfalls mit 1. .IP "\fB\-\-origin\fR \fISchalter\fR" 4 .IX Item "--origin Schalter" Gibt den Ursprung des von \fB\-\-get\fR gelieferten Werts aus. Beendet sich mit 0, falls der Schalter bekannt ist, andernfalls mit 1. Der Ursprung kann einer der folgenden Werte sein: .RS 4 .IP \fBvendor\fR 4 .IX Item "vendor" der urspr\(:unglich vom Lieferanten gesetzte Schalter wird zur\(:uckgeliefert .IP \fBsystem\fR 4 .IX Item "system" der Schalter wurde durch eine systemweite Konfiguration gesetzt/ver\(:andert .IP \fBuser\fR 4 .IX Item "user" der Schalter wurde durch eine benutzerspezifische Konfiguration gesetzt/ver\(:andert .IP \fBenv\fR 4 .IX Item "env" der Schalter wurde durch eine umgebungsspezifische Konfiguration gesetzt/ver\(:andert .RE .RS 4 .RE .IP \fB\-\-query\fR 4 .IX Item "--query" Alle Informationen anzeigen, die zur Erkl\(:arung des Verhaltens des Programms hilfreich sein k\(:onnten: aktueller Lieferant, relevante Umgebungsvariablen, Funktionalit\(:atsbereiche, Zustand der Funktionsschalter, ob eine Funktionalit\(:at als eingebaute Vorgabe durch den Compiler behandelt wird (seit Dpkg 1.21.14) und die Compiler-Schalter mit ihrem Ursprung (seit Dpkg 1.19.0). .Sp Zum Beispiel: .Sp .Vb 3 \& Vendor: Debian \& Environment: \& DEB_CFLAGS_SET=\-O0 \-Wall \& \& Area: qa \& Features: \& bug=no \& canary=no \& Builtins: \& \& Area: hardening \& Features: \& pie=no \& Builtins: \& pie=yes \& \& Area: reproducible \& Features: \& timeless=no \& Builtins: \& \& Flag: CFLAGS \& Value: \-O0 \-Wall \& Origin: env \& \& Flag: CPPFLAGS \& Value: \-D_FORTIFY_SOURCE=2 \& Origin: vendor .Ve .IP "\fB\-\-query\-features\fR \fIBereich\fR" 4 .IX Item "--query-features Bereich" Gibt die Funktionalit\(:aten, die f\(:ur den \(:ubergebenen Bereich aktiviert sind, aus (seit Dpkg 1.16.2). Falls die Funktionalit\(:at als eingebaute Vorgabe durch den Compiler gehandhabt wird (selbst wenn nur f\(:ur einige Architekturen), dann wird das Feld \fBBuiltin\fR ausgegeben (seit Dpkg 1.21.14). Lesen Sie den Abschnitt \fBFUNKTIONALIT\(:ATSBEREICHE\fR f\(:ur weitere Details zu den aktuell erkannten Bereichen. Beendet sich mit 0, falls der Bereich bekannt ist, andernfalls mit 1. .Sp Die Ausgabe ist im RFC822\-Format, mit einem Abschnitt pro Funktionalit\(:at. Beispiel: .Sp .Vb 3 \& Feature: pie \& Enabled: yes \& Builtin: yes \& \& Feature: stackprotector \& Enabled: yes .Ve .IP \fB\-\-help\fR 4 .IX Item "--help" Zeigt einen Hinweis zum Aufruf und beendet das Programm. .IP \fB\-\-version\fR 4 .IX Item "--version" Gibt die Version aus und beendet das Programm. .SH "UNTERST\(:UTZTE SCHALTER" .IX Header "UNTERST\(:UTZTE SCHALTER" .IP \fBASFLAGS\fR 4 .IX Item "ASFLAGS" Optionen f\(:ur den Assembler des Rechners. Standardwert: leer. Seit Dpkg 1.21.0. .IP \fBCFLAGS\fR 4 .IX Item "CFLAGS" Optionen f\(:ur den C\-Compiler des Rechners. Der vom Lieferanten gesetzte Standardwert enth\(:alt \fI\-g\fR und die Standard-Optimierungsstufe (normalerweise \fI\-O2\fR oder \fB\-O0\fR, falls die Umgebungsvariable \fBDEB_BUILD_OPTIONS\fR \fInoopt\fR definiert). .IP \fBCPPFLAGS\fR 4 .IX Item "CPPFLAGS" Optionen f\(:ur den C\-Pr\(:aprozessor des Rechners. Standardwert: leer. .IP \fBCXXFLAGS\fR 4 .IX Item "CXXFLAGS" Optionen f\(:ur den C++\-Compiler des Rechners. Identisch zu \fBCFLAGS\fR. .IP \fBOBJCFLAGS\fR 4 .IX Item "OBJCFLAGS" Optionen f\(:ur den Objective-C-Compiler des Rechners. Identisch zu \fBCFLAGS\fR. Seit Dpkg 1.17.7. .IP \fBOBJCXXFLAGS\fR 4 .IX Item "OBJCXXFLAGS" Optionen f\(:ur den Objective\-C++\-Compiler des Rechners. Identisch zu \fBCXXFLAGS\fR. Seit Dpkg 1.17.7. .IP \fBDFLAGS\fR 4 .IX Item "DFLAGS" Optionen f\(:ur den D\-Compiler des Rechners (ldc oder gdc). Seit Dpkg 1.20.6. .IP \fBFFLAGS\fR 4 .IX Item "FFLAGS" Optionen f\(:ur den Fortran\-77\-Compiler des Rechners. Eine Untermenge von \fBCFLAGS\fR. .IP \fBFCFLAGS\fR 4 .IX Item "FCFLAGS" Optionen f\(:ur den Fortran\-9x\-Compiler des Rechners. Identisch zu \fBFFLAGS\fR. Seit Dpkg 1.17.7. .IP \fBLDFLAGS\fR 4 .IX Item "LDFLAGS" Optionen, die beim Linken von Programmen oder Laufzeitbibliotheken an den Compiler des Rechners weitergegeben werden (falls der Linker direkt aufgerufen wird, m\(:ussen \fB\-Wl\fR und \fB,\fR aus diesen Optionen entfernt werden). Standardm\(:a\(ssig leer. .IP \fBASFLAGS_FOR_BUILD\fR 4 .IX Item "ASFLAGS_FOR_BUILD" Optionen f\(:ur den Assembler zum Bauen. Standardwert: leer. Seit Dpkg 1.22.1. .IP \fBCFLAGS_FOR_BUILD\fR 4 .IX Item "CFLAGS_FOR_BUILD" Optionen f\(:ur den C\-Compiler zum Bauen. Der vom Lieferanten gesetzte Standardwert enth\(:alt \fI\-g\fR und die Standard-Optimierungsstufe (normalerweise \fI\-O2\fR oder \fB\-O0\fR, falls die Umgebungsvariable \fBDEB_BUILD_OPTIONS\fR \fInoopt\fR definiert). Seit Dpkg 1.22.1. .IP \fBCPPFLAGS_FOR_BUILD\fR 4 .IX Item "CPPFLAGS_FOR_BUILD" Optionen f\(:ur den C\-Pr\(:aprozessor zum Bauen. Standardwert: leer. Seit Dpkg 1.22.1. .IP \fBCXXFLAGS_FOR_BUILD\fR 4 .IX Item "CXXFLAGS_FOR_BUILD" Optionen f\(:ur den C++\-Compiler zum Bauen. Identisch zu \fBCFLAGS_FOR_BUILD\fR. Seit Dpkg 1.22.1. .IP \fBOBJCFLAGS_FOR_BUILD\fR 4 .IX Item "OBJCFLAGS_FOR_BUILD" Optionen f\(:ur den Objective-C-Compiler zum Bauen. Identisch zu \fBCFLAGS_FOR_BUILD\fR. Seit Dpkg 1.22.1. .IP \fBOBJCXXFLAGS_FOR_BUILD\fR 4 .IX Item "OBJCXXFLAGS_FOR_BUILD" Optionen f\(:ur den Objective\-C++\-Compiler zum Bauen. Identisch zu \fBCXXFLAGS_FOR_BUILD\fR. Seit Dpkg 1.22.1. .IP \fBDFLAGS_FOR_BUILD\fR 4 .IX Item "DFLAGS_FOR_BUILD" Optionen f\(:ur den D\-Compiler (ldc oder gdc) zum Bauen. Seit Dpkg 1.22.1. .IP \fBFFLAGS_FOR_BUILD\fR 4 .IX Item "FFLAGS_FOR_BUILD" Optionen f\(:ur den Fortran\-77\-Compiler zum Bauen. Eine Untermenge von \fBCFLAGS_FOR_BUILD\fR. Seit Dpkg 1.22.1. .IP \fBFCFLAGS_FOR_BUILD\fR 4 .IX Item "FCFLAGS_FOR_BUILD" Optionen f\(:ur den Fortran\-9x\-Compiler zum Bauen. Identisch zu \fBFFLAGS_FOR_BUILD\fR. Seit Dpkg 1.22.1. .IP \fBLDFLAGS_FOR_BUILD\fR 4 .IX Item "LDFLAGS_FOR_BUILD" Optionen, die beim Linken von Programmen oder Laufzeitbibliotheken an den Compiler zum Bauen weitergegeben werden (falls der Linker direkt aufgerufen wird, m\(:ussen \fB\-Wl\fR und \fB,\fR aus diesen Optionen entfernt werden). Standardm\(:a\(ssig leer. Seit Dpkg 1.22.1. .PP Neue Schalter k\(:onnen in Zukunft hinzugef\(:ugt werden, falls die Notwendigkeit aufkommt (beispielsweise, um weitere Sprachen zu unterst\(:utzen). .SH FUNKTIONALIT\(:ATSBEREICHE .IX Header "FUNKTIONALIT\(:ATSBEREICHE" Funktionalit\(:atsbereiche sind derzeit Lieferanten-spezifisch und die nachfolgend beschriebenen werden nur unter Debian und abgeleiteten Distributionen erkannt. .PP Jeder Funktionalit\(:atsbereich kann in dem Bereichswert der Umgebungsvariablen \fBDEB_BUILD_OPTIONS\fR und \fBDEB_BUILD_MAINT_OPTIONS\fR durch die Wandler \(Fc\fB+\fR\(Fo und \(Fc\fB\-\fR\(Fo aktiviert oder deaktiviert werden. Gem\(:a\(ss der allgemeine Syntax dieser Variablen (in \fBdpkg\-buildpackage\fR\|(1) beschrieben) k\(:onnen mehrere Funktionalit\(:atsbereiche getrennt durch Leerzeichen angegeben werden, wobei jede die Funktionalit\(:atskennzeichner als verpflichtende Parameter nach einem Gleichzeichen (\(Fc\fB=\fR\(Fo) erh\(:alt. Die Funktionalit\(:atskennzeichner werden durch Kommata getrennt und von links nach rechts ausgewertet, wobei die Einstellungen innerhalb des gleichen Funktionalit\(:atskennzeichners die vorhergehenden au\(sser Kraft setzen, selbst falls die Funktionalit\(:atskennzeichner \(:uber mehrere, durch Leerzeichen getrennte Funktionalit\(:atsbereichseinstellungen f\(:ur den gleichen Bereich verteilt sind. .PP Um beispielsweise die \fBhardening\fR\-Funktionalit\(:at \(Fcpie\(Fo zu aktivieren und die Funktionalit\(:at \(Fcfortify\(Fo zu deaktivieren, k\(:onnen Sie folgendes in \fBdebian/rules\fR verwenden: .PP .Vb 1 \& export DEB_BUILD_MAINT_OPTIONS = hardening=+pie,\-fortify .Ve .PP Die spezielle Funktionalit\(:at \fBall\fR (in allen Bereichen g\(:ultig) kann dazu verwandt werden, alle Bereichsfunktionalit\(:aten auf einmal zu aktivieren oder zu deaktivieren. Um daher alles im Bereich \fBhardening\fR zu deaktivieren und nur \(Bqformat\(lq und \(Bqfortify\(lq zu aktiveren, kann Folgendes eingesetzt werden: .PP .Vb 1 \& export DEB_BUILD_MAINT_OPTIONS = hardening=\-all,+format,+fortify .Ve .PP Es k\(:onnen mehrere Funktionalit\(:atsbereiche gesetzt werden: .PP .Vb 1 \& export DEB_BUILD_MAINT_OPTIONS = hardening=+pie abi=+lfs .Ve .PP Das Au\(sserkraftsetzenverhalten gilt auch f\(:ur die besondere Funktionalit\(:at \fBall\fR, sowie bestimmten Funktionalit\(:aten, wodurch Zusammensetzungen erm\(:oglicht werden sollten. Um daher \(Fclfs\(Fo im Bereich \fBabi\fR zu aktivieren und nur \(Fcpie\(Fo und \(Fcfortify\(Fo in dem Bereich \fBhardening\fR, aber \(Fcformat\(Fo nur, wenn CONDITION definiert ist, k\(:onnte dies wie folgt passieren: .PP .Vb 6 \& export DEB_BUILD_MAINT_OPTIONS = hardening=\-all,+pie,+format abi=+lfs \& … \& DEB_BUILD_MAINT_OPTIONS += hardening=+fortify \& ifdef CONDITION \& DEB_BUILD_MAINT_OPTIONS += hardening=\-format \& endif .Ve .SS abi .IX Subsection "abi" Mehrere Optionen zur Kompilierung (Details weiter unten) k\(:onnen verwandt werden, um das ABI eines Paketes zu \(:andern. Dies kann standardm\(:a\(ssig aufgrund von R\(:uckw\(:artskompatibilit\(:at nicht aktiviert sein, au\(sser dies wird koordiniert oder einzeln gepr\(:uft. .IP \fBlfs\fR 4 .IX Item "lfs" Diese Einstellung (seit Dpkg 1.22.0; standardm\(:a\(ssig deaktiviert) aktiviert die Unterst\(:utzung f\(:ur gro\(sse Dateien auf 32\-Bit\-Architekturen, bei denen ihre ABI diese Unterst\(:utzung nicht standardm\(:a\(ssig aktiviert, indem \fB\-D_LARGEFILE_SOURCE \-D_FILE_OFFSET_BITS=64\fR zu \fBCPPFLAGS\fR hinzugef\(:ugt wird. .Sp Wenn diese Funktionalit\(:at aktiviert ist, wird sie den Wert aus der gleichen Funktionalit\(:at im Funktionalit\(:atsbereich \fBfuture\fR au\(sser Kraft setzen. .IP \fBtime64\fR 4 .IX Item "time64" This setting (since dpkg 1.22.0; enabled by default except for i386, hurd\-i386 and kfreebsd\-i386 since dpkg 1.22.5) enables 64\-bit time_t support on 32\-bit architectures where their ABI does not include it by default, by adding \fB\-D_TIME_BITS=64\fR to \fBCPPFLAGS\fR. This setting automatically enables the \fBlfs\fR feature from the \fBabi\fR feature area. .Sp Falls diese Einstellung explizit aktiviert ist, dann wird sie auf allen Architekturen einschlie\(sslich i386 aktiviert, aber nicht auf hurd\-i386 oder kfreebsd\-i386 (wo der Kernel nicht \(:uber die Schnittstelle time64 verf\(:ugt) und die standardm\(:a\(ssige bin\(:are R\(:uckw\(:artskompatibilit\(:at wird ignoriert. .Sp Sie wird standardm\(:a\(ssig durch GCC auch auf den Debian-Architekturen Armel, Armhf, HPPA, M68k, Mips, Mipsel, Powerpc und Sh4 aktiviert, bei denen die Deaktivierung der Funktionalit\(:at stattdessen \fB\-U_LARGEFILE_SOURCE \-U_FILE_OFFSET_BITS \-U_TIME_BITS\fR zu \fBCPPFLAGS\fR hinzf\(:ugt. .SS "future (Zukunft)" .IX Subsection "future (Zukunft)" Mehrere Optionen zur Kompilierung (Details weiter unten) k\(:onnen verwandt werden, um Funktionen zu aktivieren, die standardm\(:a\(ssig aktiviert sein sollten, dies aber aus R\(:uckw\(:artskompatibilit\(:atsgr\(:unden nicht sein k\(:onnen. .IP \fBlfs\fR 4 .IX Item "lfs" Diese Einstellung (seit Dpkg 1.19.0; standardm\(:a\(ssig deaktiviert) ist jetzt ein Alias f\(:ur die Funktionalit\(:at \fBlfs\fR im Bereich \fBabi\fR; verwenden Sie stattdessen letzteres. Die Funktionalit\(:at aus dem Bereich \fBabi\fR setzt diese Einstellung au\(sser Kraft. .SS "qa (QS)" .IX Subsection "qa (QS)" Mehrere Optionen zur Kompilierung (Details weiter unten) k\(:onnen verwandt werden, um Probleme im Quellcode oder im Bausystem zu erkennen. .IP \fBbug-implicit-func\fR 4 .IX Item "bug-implicit-func" This setting (since dpkg 1.22.3; enabled by default since dpkg 1.22.6) adds \fB\-Werror=implicit\-function\-declaration\fR to \fBCFLAGS\fR. .IP \fBbug\fR 4 .IX Item "bug" Diese Einstellung (seit Dpkg 1.17.4; standardm\(:a\(ssig deaktiviert) f\(:ugt Warnoptionen hinzu, die zuverl\(:assig problematischen Quellcode erkennen. Diese Warnungen sind fatal. Die einzigen derzeit unterst\(:utzten Schalter sind \fBCFLAGS\fR und \fBCXXFLAGS\fR, wobei die Schalter auf \fB\-Werror=array\-bounds\fR, \fB\-Werror=clobbered\fR, \fB\-Werror=implicit\-function\-declaration\fR und \fB\-Werror=volatile\-register\-var\fR gesetzt werden. .Sp Diese Funktionalit\(:at behandelt \fB\-Werror=implicit\-function\-declaration\fR mittels der Funktionalit\(:at \fBbug-implicit-func\fR, falls diese nicht angegeben wurde. .IP \fBcanary\fR 4 .IX Item "canary" Diese Einstellung (seit Dpkg 1.17.14; standardm\(:a\(ssig deaktiviert) f\(:ugt Pseudo-Zufallsbarrieren-Optionen zu den Bauschaltern hinzu, so dass die Bauprotokolle \(:uberpr\(:uft werden k\(:onnen, wie die Bauschalter weitergereicht werden. Dies erlaubt, Auslassungen in den normalen Bauschaltereinstellungen zu finden. Derzeit werden nur die Schalter \fBCPPFLAGS\fR, \fBCFLAGS\fR, \fBOBJCFLAGS\fR, \fBCXXFLAGS\fR und \fBOBJCXXFLAGS\fR unterst\(:utzt, wobei die Schalter auf \fB\-D_\|_DEB_CANARY_\fR\fISchalter\fR_\fIZufallskennung\fR\fB_\|_\fR gesetzt werden, und \fBLDFLAGS\fR, das auf \fB\-Wl,\-z,deb\-canary\-\fR\fIZufallskennung\fR gesetzt wird. .SS "optimize (Optimierung)" .IX Subsection "optimize (Optimierung)" Mehrere Optionen zur Kompilierung (Details weiter unten) k\(:onnen verwandt werden, um bei der Optimierung des entstehenden Programms zu helfen (seit Dpkg 1.21.0). \fBHinweis\fR: durch Aktivieren \fBaller\fR dieser Optionen kann es zu nicht reproduzierbaren Programmartefakten kommen. .IP \fBlto\fR 4 .IX Item "lto" Diese Einstellung (seit Dpkg 1.21.0; standardm\(:a\(ssig deaktiviert) aktiviert Link Time Optimization (Optimierung zum Link-Zeitpunkt), indem \fB\-flto=auto \-ffat\-lto\-objects\fR zu \fBCFLAGS\fR, \fBCXXFLAGS\fR, \fBOBJCFLAGS\fR, \fBOBJCXXFLAGS\fR, \fBFFLAGS\fR, \fBFCFLAGS\fR und \fBLDFLAGS\fR hinzugef\(:ugt wird. .SS "sanitize (Bereinigung)" .IX Subsection "sanitize (Bereinigung)" Mehrere Kompilierzeit-Optionen (nachfolgend beschrieben) k\(:onnen dazu verwandt werden, ein erstelltes Programm vor Speicherverf\(:alschungsangriffen Speicherlecks, Verwendung nach Freigabe, Daten\-Zugriffswettl\(:aufen (\(Bqraces\(lq) in Threads und Fehlern durch undefiniertes Verhalten zu bereinigen. \fBHinweis\fR: Diese Optionen sollten \fBnicht\fR beim Bauen im Produktivbetrieb benutzt werden, da sie die Zuverl\(:assigkeit von spezifikationsgetreuem Code, die Sicherheit oder sogar die Funktionalit\(:at reduzieren bzw. negativ beeinflussen k\(:onnen. .IP \fBaddress\fR 4 .IX Item "address" Diese Einstellung (seit Dpkg 1.18.0; standardm\(:a\(ssig deaktiviert) f\(:ugt \fB\-fsanitize=address\fR zu \fBLDFLAGS\fR und \fB\-fsanitize=address \-fno\-omit\-frame\-pointer\fR zu \fBCFLAGS\fR und \fBCXXFLAGS\fR hinzu. .IP \fBthread\fR 4 .IX Item "thread" Diese Einstellung (seit Dpkg 1.18.0; standardm\(:a\(ssig deaktiviert) f\(:ugt \fB\-fsanitize=thread\fR zu \fBCFLAGS\fR, \fBCXXFLAGS\fR und \fBLDFLAGS\fR hinzu. .IP \fBleak\fR 4 .IX Item "leak" Diese Einstellung (seit Dpkg 1.18.0; standardm\(:a\(ssig deaktiviert) f\(:ugt \fB\-fsanitize=leak\fR zu \fBLDFLAGS\fR hinzu. Sie wird automatisch deaktiviert, falls entweder die Funktionalit\(:aten \fBaddress\fR oder \fBthread\fR aktiviert werden, da diese sie einschlie\(ssen. .IP \fBundefined\fR 4 .IX Item "undefined" Diese Einstellung (seit Dpkg 1.18.0; standardm\(:a\(ssig deaktiviert) f\(:ugt \fB\-fsanitize=undefined\fR zu \fBCFLAGS\fR, \fBCXXFLAGS\fR und \fBLDFLAGS\fR hinzu. .SS "hardening (H\(:artung)" .IX Subsection "hardening (H\(:artung)" Mehrere Kompilierzeit-Optionen (nachfolgend beschrieben) k\(:onnen dazu verwandt werden, ein erstelltes Programm gegen Speicherverf\(:alschungsangriffe zu h\(:arten, oder zus\(:atzliche Warnungsmeldungen w\(:ahrend der \(:Ubersetzung auszugeben. Sie werden f\(:ur Architekturen, die diese unterst\(:utzen, standardm\(:a\(ssig aktiviert; die Ausnahmen sind unten angegeben. .IP \fBformat\fR 4 .IX Item "format" Diese Einstellung (seit Dpkg 1.16.1; standardm\(:a\(ssig aktiviert) f\(:ugt \fB\-Wformat \-Werror=format\-security\fR zu \fBCFLAGS\fR, \fBCXXFLAGS\fR \fBCXXFLAGS\fR, \fBOBJCFLAGS\fR und \fBOBJCXXFLAGS\fR hinzu. Damit erhalten Sie Warnungen bei inkorrekter Verwendung von Formatzeichenketten. Es wird zu einem Fehler f\(:uhren, wenn Formatfunktionen deart verwandt werden, dass daraus ein m\(:ogliches Sicherheitsproblem werden k\(:onnte. Derzeit warnt dies bei Aufrufen von \fBprintf\fR\- und \fBscanf\fR\-Funktionen, bei denen die Formatzeichenkette nicht eine reine Zeichenkette ist und es keine Formatargumente gibt, wie in \fBprintf(foo);\fR statt \fBprintf("%s", foo);\fR. Dies k\(:onnte ein Sicherheitsproblem sein, falls die Formatzeichenkette aus einer nicht vertrauensw\(:urdigen Eingabe stammt und \(Bq%n\(lq enth\(:alt. .IP \fBfortify\fR 4 .IX Item "fortify" Diese Einstellung (seit Dpkg 1.16.1; standardm\(:a\(ssig aktiviert) f\(:ugt \fB\-D_FORTIFY_SOURCE=2\fR zu \fBCPPFLAGS\fR hinzu. W\(:ahrend der Code-Erstellung hat der Compiler umfangreiche Informationen \(:uber Puffergr\(:o\(ssen (wo m\(:oglich) und versucht, unsichere unbegrenzte Pufferfunktionsaufrufe durch l\(:angenbegrenzte zu ersetzen. Das ist besonders f\(:ur alten, verkramten Code n\(:utzlich. Zus\(:atzlich werden Formatzeichenketten in schreibbarem Speicher, die \(bq%n\(cq enthalten, blockiert. Falls eine Anwendung von solchen Formatzeichenketten abh\(:angt, m\(:ussen daf\(:ur andere L\(:osungsm\(:oglichkeiten gefunden werden. .Sp Beachten Sie, dass die Quellen auch mit \fB\-O1\fR oder h\(:oher \(:ubersetzt werden m\(:ussen, damit diese Option einen Effekt hat. Falls die Umgebungsvariable \fBDEB_BUILD_OPTIONS\fR \fInoopt\fR enth\(:alt, dann wird die Unterst\(:utzung von \fBfortify\fR aufgrund neuer Warnungen von Glibc 2.16 und neuer deaktiviert. .IP \fBstackprotector\fR 4 .IX Item "stackprotector" Diese Einstellung (seit Dpkg 1.16.1; standardm\(:a\(ssig aktiviert falls \(Bqstackprotectorstrong\(lq nicht verwandt wird) f\(:ugt \fB\-fstack\-protector \-\-param=ssp\-buffer\-size=4\fR zu \fBCFLAGS\fR, \fBCXXFLAGS\fR, \fBOBJCFLAGS\fR, \fBOBJCXXFLAGS\fR, \fBFFLAGS\fR und \fBFCFLAGS\fR hinzu. Dies f\(:ugt Sicherheitspr\(:ufungen gegen die \(:Uberschreibung des Stapelspeichers (Stacks) hinzu. Damit werden viele m\(:ogliche Code\-Einf\(:ugeangriffe zu Abbruchsituationen. Im besten Fall werden damit Code\-Einf\(:ugungsangriffe zu Diensteverweigerungsangriffen oder zu keinen Problemen (abh\(:angig von der Anwendung). .Sp Diese Funktionalit\(:at ben\(:otigt das Linken mit Glibc (oder einem anderen Anbieter von \fB_\|_stack_chk_fail\fR). Sie muss daher deaktiviert werden, wenn mit \fB\-nostdlib\fR oder \fB\-ffreestanding\fR oder \(:Ahnlichem gebaut wird. .IP \fBstackprotectorstrong\fR 4 .IX Item "stackprotectorstrong" Diese Einstellung (seit Dpkg 1.17.11; standardm\(:a\(ssig aktiviert) f\(:ugt \fB\-fstack\-protector\-strong\fR zu \fBCFLAGS\fR, \fBCXXFLAGS\fR, \fBOBJCFLAGS\fR, \fBOBJCXXFLAGS\fR, \fBFFLAGS\fR und \fBFCFLAGS\fR hinzu. Dies ist eine st\(:arkere Variante von \fBstackprotector\fR, allerdings ohne signifikante Einbu\(ssen bei der Leistung. .Sp Deaktivierung von \fBstackprotector\fR deaktiviert auch diese Einstellung. .Sp Diese Funktionalit\(:at stellt die gleichen Anforderungen wie \fBstackprotector\fR und ben\(:otigt zus\(:atzlich GCC 4.9 oder neuer. .IP \fBstackclash\fR 4 .IX Item "stackclash" Diese Einstellung (seit Dpkg 1.22.11; standardm\(:a\(ssig aktiviert) f\(:ugt \fB\-fstack\-clash\-protection\fR auf \fBamd64\fR, \fBarm64\fR, \fBarmhf\fR und \fBarmel\fR zu \fBCFLAGS\fR, \fBCXXFLAGS\fR, \fBOBJCFLAGS\fR, \fBOBJCXXFLAGS\fR, \fBFFLAGS\fR und \fBFCFLAGS\fR hinzu. Dies erg\(:anzt Code, um Stack-Konflikt-artige Angriffe zu verhindern. .IP \fBbranch\fR 4 .IX Item "branch" Diese Einstellung (seit Dpkg 1.22.0; standardm\(:a\(ssig aktiviert) f\(:ugt \fB\-fcf\-protection\fR auf \fBamd64\fR und \fB\-mbranch\-protection=standard\fR auf \fBarm64\fR zu \fBCFLAGS\fR, \fBCXXFLAGS\fR, \fBOBJCFLAGS\fR, \fBOBJCXXFLAGS\fR, \fBFFLAGS\fR und \fBFCFLAGS\fR hinzu. Dies erg\(:anzt Branch-Schutz zu indirekten Aufrufen, Spr\(:ungen und R\(:uckkehrwerten, um zu pr\(:ufen, ob diese zur Laufzeit g\(:ultig sind. .IP \fBrelro\fR 4 .IX Item "relro" Diese Einstellung (seit Dpkg 1.16.1; standardm\(:a\(ssig aktiviert) f\(:ugt \fB\-Wl,\-z,relro\fR zu \fBLDFLAGS\fR hinzu. W\(:ahrend des Ladens des Programms m\(:ussen mehrere ELF-Speicherabschnitte vom Binder (Linker) geschrieben werden. Diese Einstellung signalisiert dem Ladeprogramm, diese Abschnitte in nur-Lese-Zugriff zu \(:andern, bevor die Steuerung an das Programm \(:ubergeben wird. Insbesondere verhindert dies GOT\-\(:Uberschreibeangriffe. Falls diese Option deaktiviert ist, wird auch \fBbindnow\fR deaktiviert. .IP \fBbindnow\fR 4 .IX Item "bindnow" Diese Einstellung (seit Dpkg 1.16.1; standardm\(:a\(ssig deaktiviert) f\(:ugt \fB\-Wl,\-z,now\fR zu \fBLDFLAGS\fR hinzu. W\(:ahrend des Ladens des Programms werden alle dynamischen Symbole aufgel\(:ost, womit das gesamte PLT nur-lesend markiert werden kann (aufgrund von \fBrelro\fR oben). Diese Option kann nicht aktiviert werden, falls \fBrelro\fR nicht aktiviert ist. .IP \fBpie\fR 4 .IX Item "pie" Diese Einstellung (seit Dpkg 1.16.1; seit Dpkg 1.18.23 ohne globale Vorgabe, da sie jetzt standardm\(:a\(ssig durch GCC auf den Debian-Architekturen Amd64, Arm64, Armel, Armhf, Hurd\-i386, I386, Kfreebsd\-amd64, Kfreebsd\-i386, Mips, Mipsel, Mips64el, Powerpc, PPC64, PPC64el, Riscv64, S390x, Sparc und Sparc64 aktiviert ist) f\(:ugt, falls ben\(:otigt, die ben\(:otigten Optionen, um PIE zu aktivieren oder zu deaktivieren, \(:uber GCC-Spezifikationsdateien hinzu, abh\(:angig davon, ob GCC auf diesen Architekturen die Schalter selbst einspeist oder nicht. Wenn die Einstellung aktiviert ist und GCC den Schalter einspeist, f\(:ugt dies nichts hinzu. Wenn die Einstellung aktiviert ist und GCC den Schalter nicht einspeist, dann f\(:ugt es \fB\-fPIE\fR (mittels \fI/usr/share/dpkg/pie\-compiler.specs\fR) zu \fBCFLAGS\fR, \fBCXXFLAGS\fR, \fBOBJCFLAGS\fR, \fBOBJCXXFLAGS\fR, \fBFFLAGS\fR und \fBFCFLAGS\fR und \fB\-fPIE \-pie\fR (mittels \fI/usr/share/dpkg/pie\-link.specs\fR) zu \fBLDFLAGS\fR hinzu. Wenn die Einstellung deaktiviert ist und GCC den Schalter einspeist, dann f\(:ugt es \fB\-fno\-PIE\fR (mittels \fI/usr/share/dpkg/no\-pie\-compile.specs\fR) zu \fBCFLAGS\fR, \fBCXXFLAGS\fR, \fBOBJCFLAGS\fR, \fBOBJCXXFLAGS\fR, \fBFFLAGS\fR und \fBFCFLAGS\fR und \fB\-fno\-PIE \-no\-pie\fR (mittels \fI/usr/share/dpkg/no\-pie\-link.specs\fR) zu \fBLDFLAGS\fR hinzu. .Sp \(BqPosition Independent Executable\(lq (positionsunabh\(:angige Programme) (PIE) ist ben\(:otigt, um \(BqAddress Space Layout Randomization\(lq (Bereitstellung eines zuf\(:alligen Adressbereichlayouts) (ASLR) auszunutzen, der von einigen Kernelversionen bereitgestellt wird. W\(:ahrend ASLR bereits f\(:ur Datenbereiche auf dem Stapel (Stack) und Heap erzwungen werden kann (brk und mmap), m\(:ussen die Codebereiche positionsunabh\(:angig \(:ubersetzt werden. Laufzeitbibliotheken machen dies bereits (\fB\-fPIC\fR), so dass sie ASLR automatisch erhalten, aber Programm\-.text\-Regionen m\(:ussen als PIE gebaut werden, um ASLR zu erhalten. Wenn dies passiert, sind ROP\- (Return Oriented Programming) Angriffe sehr viel schwerer durchzuf\(:uhren, da es keine statischen Orte mehr gibt, zu denen w\(:ahrend eines Speicherverf\(:alschungsangriffs hingesprungen werden k\(:onnte. .Sp PIE ist nicht zu \fB\-fPIC\fR kompatibel, daher m\(:ussen Sie beim Bau von Laufzeitbibliotheksobjekten im Allgemeinen Vorsicht walten lassen. Da aber der ausgegebene PIE-Schalter mittels GCC-Spezifikationsdateien hinzugef\(:ugt wird, sollte es immer sicher sein, sie bedingungslos zu setzen, unabh\(:angig von dem Objekttyp, der \(:ubersetzt oder gelinkt wird. .Sp Statische Bibliotheken k\(:onnen von jedem Programm und anderen statischen Bibliotheken benutzt werden. Abh\(:angig von den zum Kompilieren aller Objekte innerhalb einer statischen Bibliothek verwandten Schaltern k\(:onnen diese Bibliotheken von verschiedenen Gruppen von Objekten verwandt werden: .RS 4 .IP keine 4 .IX Item "keine" Kann weder in ein PIE-Programm noch in eine Laufzeitbibliothek gelinkt werden. .IP \fB\-fPIE\fR 4 .IX Item "-fPIE" Kann in jedes Programm, aber nicht in eine Laufzeitbibliothek gelinkt werden (empfohlen). .IP \fB\-fPIC\fR 4 .IX Item "-fPIC" Kann in jedes Programm und jede Laufzeitbibliothek gelinkt werden. .RE .RS 4 .Sp Falls es notwendig ist, diese Schalter manuell zu setzen und die GCC\-Spezifikations\-Hinzuf\(:ugung zu umgehen, m\(:ussen mehrere Dinge beachtet werden. Die bedingungslose und explizite \(:Ubergabe von \fB\-fPIE\fR, \fB\-fpie\fR oder \fB\-pie\fR an das Bausystem mit Libtool ist sicher, da diese Schalter entfernt werden, wenn Laufzeit-Bibliotheken gebaut werden. Andernfalls k\(:onnte es bei Projekten, die sowohl Programme wie auch Laufzeit-Bibliotheken bauen, notwendig sein, dass Sie beim Bau der Laufzeit-Bibliotheken sicherstellen, dass \fB\-fPIC\fR immer als Letztes an die Kompilierungsschalter wie \fBCFLAGS\fR \(:ubergeben wird (so dass es jedes fr\(:uhere \fB\-PIE\fR au\(sser Kraft setzen kann) und \fB\-shared\fR als Letztes an Link-Schalter wie \fBLDFLAGS\fR \(:ubergeben wird (so dass es jedes fr\(:uhere \fB\-pie\fR au\(sser Kraft setzen kann). \fBHinweis\fR: Das sollte mit der Vorgabe-GCC-Spezifikationsmaschinerie nicht notwendig sein. .Sp Zus\(:atzlich k\(:onnen auf einigen Architekturen mit sehr wenigen Registern (dazu geh\(:ort aber i386 nicht mehr, seitdem in GCC >= 5 Optimierungen erfolgten) Leistungsverluste von bis zu 15% in sehr text-Segment-lastigen Anwendungsf\(:allen auftreten, da PIE \(:uber allgemeine Register implementiert ist; in den meisten Anwendungsf\(:allen sind dies weniger als 1%. Architekturen mit mehr allgemeinen Registern (z.B. Amd64) erfahren nicht diese Schlimmstfall-Strafe. .RE .SS "reproducible (Reproduzierbarkeit)" .IX Subsection "reproducible (Reproduzierbarkeit)" Die Kompilierzeit-Optionen (nachfolgend beschrieben) k\(:onnen dazu verwandt werden, die Reproduzierbarkeit zu verbessern oder zus\(:atzliche Warnungsmeldungen w\(:ahrend der \(:Ubersetzung auszugeben. Sie werden f\(:ur Architekturen, die diese unterst\(:utzen, standardm\(:a\(ssig aktiviert; die Ausnahmen sind unten angegeben. .IP \fBtimeless\fR 4 .IX Item "timeless" Diese (seit Dpkg 1.17.14; standardm\(:a\(ssig aktivierte) Einstellung f\(:ugt \fB\-Wdate\-time\fR zu \fBCPPFLAGS\fR hinzu. Dies f\(:uhrt zu Warnungen, wenn die Makros \fB_\|_TIME_\|_\fR, \fB_\|_DATE_\|_\fR und \fB_\|_TIMESTAMP_\|_\fR verwandt werden. .IP \fBfixfilepath\fR 4 .IX Item "fixfilepath" Diese Einstellung (seit Dpkg 1.19.1; standardm\(:a\(ssig aktiviert) f\(:ugt \fB\-ffile\-prefix\-map=\fR\fIBUILDPATH\fR\fB=.\fR zu \fBCFLAGS\fR, \fBCXXFLAGS\fR, \fBOBJCFLAGS\fR, \fBOBJCXXFLAGS\fR, \fBFFLAGS\fR und \fBFCFLAGS\fR hinzu, wobei \fBBUILDPATH\fR auf das oberste Verzeichnis des bauenden Pakets gesetzt wird. Dies f\(:uhrt dazu, dass der Baupfad aus allen erstellten Dateien entfernt wird. .Sp Falls sowohl \fBfixdebugpath\fR als auch \fBfixfilepath\fR gesetzt sind, hat diese Option Vorrang, da sie eine Obermenge erster ist. .Sp \&\fBHinweis\fR: Falls der Bauprozess die Bauschalter in die resultierenden gebauten Objekte erfasst, dann wird das Paket nicht mehr reproduzierbar. Die Deaktivierung dieser Option k\(:onnte einige der Objekte wieder reproduzierbar machen, w\(:urde daf\(:ur aber auch die Deaktivierung von \fBfixdebugpath\fR ben\(:otigen, wodurch s\(:amtliche erstellten Fehlersuchsymbole nicht mehr reproduzierbar w\(:aren. Die beste Korrektur besteht darin, die Bauschalter nicht mehr zu erfassen. .IP \fBfixdebugpath\fR 4 .IX Item "fixdebugpath" Diese Einstellung (seit Dpkg 1.18.5; standardm\(:a\(ssig aktiviert) f\(:ugt \fB\-fdebug\-prefix\-map=\fR\fIBUILDPATH\fR\fB=.\fR zu \fBCFLAGS\fR, \fBCXXFLAGS\fR, \fBOBJCFLAGS\fR, \fBOBJCXXFLAGS\fR, \fBFFLAGS\fR und \fBFCFLAGS\fR hinzu, wobei \fBBUILDPATH\fR auf das oberste Verzeichnis des bauenden Pakets gesetzt wird. Dies f\(:uhrt dazu, dass der Baupfad aus allen erstellten Debug-Symbolen entfernt wird. .Sp \&\fBHinweis\fR: Dies Funktion hat \(:ahnliche Reproduzierbarkeitseigenschaften wie \fBfixfilepath\fR. .SH UMGEBUNG .IX Header "UMGEBUNG" Es gibt zwei Gruppen von Umgebungsvariablen, die den gleichen Vorgang durchf\(:uhren. Der erste (DEB_\fISchalter\fR_\fIVorg\fR) sollte niemals innerhalb von \fBdebian/rules\fR verwandt werden. Er ist f\(:ur Benutzer gedacht, die das Quellpaket mit anderen Bauschaltern erneut bauen m\(:ochten. Der zweite Satz (DEB_\fISchalter\fR_MAINT_\fIVorg\fR) sollte nur durch Paketbetreuer in \fBdebian/rules\fR verwandt werden, um die entstehenden Bauschalter zu \(:andern. .IP \fBDEB_\fR\fISchalter\fR\fB_SET\fR 4 .IX Item "DEB_Schalter_SET" .PD 0 .IP "\fBDEB_\fR\fISchalter\fR\fB_MAINT_SET\fR (seit Dpkg 1.16.1)" 4 .IX Item "DEB_Schalter_MAINT_SET (seit Dpkg 1.16.1)" .PD Diese Variable kann zum Erzwingen des f\(:ur \fISchalter\fR zur\(:uckgegebenen Werts verwandt werden. .IP "\fBDEB_\fR\fISchalter\fR\fB_STRIP\fR (seit Dpkg 1.16.1)" 4 .IX Item "DEB_Schalter_STRIP (seit Dpkg 1.16.1)" .PD 0 .IP "\fBDEB_\fR\fISchalter\fR\fB_MAINT_STRIP\fR (seit Dpkg 1.16.1)" 4 .IX Item "DEB_Schalter_MAINT_STRIP (seit Dpkg 1.16.1)" .PD Diese Variable kann zum Bereitstellen einer durch Leerzeichen getrennten Liste von Optionen verwandt werden, die aus dem Satz von \fISchalter\fR zur\(:uckgelieferten Schaltern entfernt werden. .IP \fBDEB_\fR\fISchalter\fR\fB_APPEND\fR 4 .IX Item "DEB_Schalter_APPEND" .PD 0 .IP "\fBDEB_\fR\fISchalter\fR\fB_MAINT_APPEND\fR (seit Dpkg 1.16.1)" 4 .IX Item "DEB_Schalter_MAINT_APPEND (seit Dpkg 1.16.1)" .PD Diese Variable kann zum Anh\(:angen erg\(:anzender Optionen zum Wert, der von \fISchalter\fR zur\(:uckgegeben wird, verwandt werden. .IP "\fBDEB_\fR\fISchalter\fR\fB_PREPEND\fR (seit Dpkg 1.16.1)" 4 .IX Item "DEB_Schalter_PREPEND (seit Dpkg 1.16.1)" .PD 0 .IP "\fBDEB_\fR\fISchalter\fR\fB_MAINT_PREPEND\fR (seit Dpkg 1.16.1)" 4 .IX Item "DEB_Schalter_MAINT_PREPEND (seit Dpkg 1.16.1)" .PD Diese Variable kann zum Voranstellen erg\(:anzender Optionen zum Wert, der von \fISchalter\fR zur\(:uckgegeben wird, verwandt werden. .IP \fBDEB_BUILD_OPTIONS\fR 4 .IX Item "DEB_BUILD_OPTIONS" .PD 0 .IP "\fBDEB_BUILD_MAINT_OPTIONS\fR (seit Dpkg 1.16.1)" 4 .IX Item "DEB_BUILD_MAINT_OPTIONS (seit Dpkg 1.16.1)" .PD Diese Variablen k\(:onnen von Benutzern oder Betreuern zum Deaktivieren oder Aktivieren verschiedener Bereichsfunktionalit\(:aten benutzt werden, die Bauschalter beeinflussen. Die Variable \fBDEB_BUILD_MAINT_OPTIONS\fR setzt jede Einstellung in den Funktionalit\(:atsbereichen \fBDEB_BUILD_OPTIONS\fR au\(sser Kraft. Lesen Sie den Abschnitt "FUNKTIONALIT\(:ATSBEREICHE" f\(:ur weitere Details. .IP \fBDEB_VENDOR\fR 4 .IX Item "DEB_VENDOR" Diese Einstellung definiert den aktuellen Lieferanten. Falls nicht gesetzt, wird er aus \fB/etc/dpkg/origins/default\fR ermittelt. .IP \fBDEB_BUILD_PATH\fR 4 .IX Item "DEB_BUILD_PATH" Diese Variable setzt den Baupfad (seit Dpkg 1.18.8), der in Funktionalit\(:aten wie \fBfixdebugpath\fR verwandt wird, so dass sie durch den Aufrufenden gesteuert werden k\(:onnen. Diese Variable ist derzeit spezifisch f\(:ur Debian und Derivative. .IP \fBDPKG_COLORS\fR 4 .IX Item "DPKG_COLORS" Setzt den Farbmodus (seit Dpkg 1.18.5). Die derzeit unterst\(:utzten Werte sind: \fBauto\fR (Vorgabe), \fBalways\fR und \fBnever\fR. .IP \fBDPKG_NLS\fR 4 .IX Item "DPKG_NLS" Falls dies gesetzt ist, wird es zur Entscheidung, ob Native Language Support, auch als Unterst\(:utzung f\(:ur Internationalisierung (oder i18n) bekannt, aktiviert wird (seit Dpkg 1.19.0). Die akzeptierten Werte sind: \fB0\fR und \fB1\fR (Vorgabe). .SH DATEIEN .IX Header "DATEIEN" .SS Konfigurationsdateien .IX Subsection "Konfigurationsdateien" .IP \fB/etc/dpkg/buildflags.conf\fR 4 .IX Item "/etc/dpkg/buildflags.conf" Systemweite Konfigurationsdatei .ie n .IP "\fR\fB$XDG_CONFIG_HOME\fR\fB/dpkg/buildflags.conf\fR oder" 4 .el .IP "\fR\f(CB$XDG_CONFIG_HOME\fR\fB/dpkg/buildflags.conf\fR oder" 4 .IX Item "$XDG_CONFIG_HOME/dpkg/buildflags.conf oder" .PD 0 .ie n .IP \fR\fB$HOME\fR\fB/.config/dpkg/buildflags.conf\fR 4 .el .IP \fR\f(CB$HOME\fR\fB/.config/dpkg/buildflags.conf\fR 4 .IX Item "$HOME/.config/dpkg/buildflags.conf" .PD Benutzerkonfigurationsdatei .SS Paketierungsunterst\(:utzung .IX Subsection "Paketierungsunterst\(:utzung" .IP \fB/usr/share/dpkg/buildflags.mk\fR 4 .IX Item "/usr/share/dpkg/buildflags.mk" Make-Steuerdateischnipsel, das alle von \fBdpkg-buildflags\fR unterst\(:utzten Schalter in Variablen laden (und optional exportieren) wird. (seit Dpkg 1.16.1) .SH BEISPIELE .IX Header "BEISPIELE" Um Bauschalter an einen Baubefehl in einer Make-Steuerdatei zu \(:ubergeben: .Sp .Vb 1 \& $(MAKE) $(shell dpkg\-buildflags \-\-export=cmdline) \& \& ./configure $(shell dpkg\-buildflags \-\-export=cmdline) .Ve .PP Um Bauschalter in einem Shell-Skript oder Shell-Fragement zu setzen, kann \fBeval\fR verwendet werden, um die Ausgabe zu interpretieren und die Schalter in die Umgebung zu exportieren: .Sp .Vb 1 \& eval "$(dpkg\-buildflags \-\-export=sh)" && make .Ve .PP Oder die Positionsparameter zu setzen, die an einen Befehl \(:ubergeben werden sollen: .Sp .Vb 2 \& eval "set \-\- $(dpkg\-buildflags \-\-export=cmdline)" \& for dir in a b c; do (cd $dir && ./configure "$@" && make); done .Ve .SS "Verwendung in debian/rules" .IX Subsection "Verwendung in debian/rules" Sie sollten \fBdpkg-buildflags\fR aufrufen oder \fBbuildflags.mk\fR in die Datei \fBdebian/rules\fR einbinden, um die ben\(:otigten Bauschalter, die an das Bausystem weitergegeben werden sollen, abzufragen. Beachten Sie, dass \(:altere Versionen von \fBdpkg-buildpackage\fR (vor Dpkg 1.16.1) diese Variablen automatisch exportierten. Allerdings sollten Sie sich nicht darauf verlassen, da dies den manuellen Aufruf von \fBdebian/rules\fR nicht korrekt erm\(:oglicht. .PP F\(:ur Pakete mit Autoconf-artigen Bausystemen k\(:onnen Sie die relevanten Optionen direkt wie oben gezeigt an Configure oder \fBmake\fR\|(1) \(:ubergeben. .PP F\(:ur andere Bausysteme oder wenn Sie feiner granulierte Steuerung ben\(:otigen (welcher Schalter wo weitergegeben wird), k\(:onnen Sie \fB\-\-get\fR verwenden. Oder Sie k\(:onnen stattdessen \fBbuildflags.mk\fR einbinden, das sich um den Aufruf von \fBdpkg-buildflags\fR k\(:ummert und die Bauschalter in Make-Variablen speichert. .PP Falls Sie alle Bauschalter in die Umgebung exportieren m\(:ochten (wo sie dann vom Bausystem eingelesen werden k\(:onnen): .Sp .Vb 2 \& DPKG_EXPORT_BUILDFLAGS = 1 \& include /usr/share/dpkg/buildflags.mk .Ve .PP F\(:ur zus\(:atzliche Steuerung, was exportiert wird, k\(:onnen Sie die Variablen manuell exportieren (da keine standardm\(:a\(ssig exportiert werden): .Sp .Vb 2 \& include /usr/share/dpkg/buildflags.mk \& export CPPFLAGS CFLAGS LDFLAGS .Ve .PP Und nat\(:urlich k\(:onnen Sie die Schalter manuell an Befehle weitergeben: .Sp .Vb 3 \& include /usr/share/dpkg/buildflags.mk \& build\-arch: \& $(CC) \-o hello hello.c $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .Ve .SH \(:UBERSETZUNG .IX Header "\(:UBERSETZUNG" Die deutsche \(:Ubersetzung wurde 2004, 2006\-2023 von Helge Kreutzmann , 2007 von Florian Rehnisch und 2008 von Sven Joachim angefertigt. Diese \(:Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 2 oder neuer f\(:ur die Kopierbedingungen. Es gibt KEINE HAFTUNG.