| .\"******************************************************************* |
| .\" |
| .\" This file was generated with po4a. Translate the source file. |
| .\" |
| .\"******************************************************************* |
| .TH dpkg\-buildflags 1 2011\-09\-13 Debianprojektet Dpkg\-sviten |
| .SH NAMN |
| dpkg\-buildflags \- returnerar byggflaggor att använda för att bygga paket |
| . |
| .SH SYNOPS |
| \fBdpkg\-buildflags\fP [\fIflagga\fP...] \fIkommando\fP |
| . |
| .SH BESKRIVNING |
| \fBdpkg\-buildflags\fP är ett verktyg för att hämta kompileringsflaggor att |
| använda för att bygga Debianpaket. |
| . |
| De förvalda flaggorna anges av leverantören, men de kan utökas/överstyras på |
| flera sätt: |
| .IP 1. |
| på hela systemet med \fB/etc/dpkg/buildflags.conf\fP; |
| .IP 2. |
| för den nuvarande användaren med \fB$XDG_CONFIG_HOME/dpkg/buildflags.conf\fP |
| där \fB$XDG_CONFIG_HOME\fP har standardvärdet \fB$HOME/.config\fP; |
| .IP 3. |
| temporärt av användaren med miljövariabler (se stycket \fBMILJÖ\fP). |
| .IP 4. |
| dynamiskt av paketansvariga med miljövariabler som sätts via \fBdebian/rules\fP |
| (se stycket \fBMILJÖ\fP). |
| .P |
| Konfigurationsfilerna kan innehålla två sorters direktiv: |
| .TP |
| \fBSET\fP\fI flagga värde\fP |
| Överstyr flaggan \fIflagga\fP till att ha värdet \fIvärde\fP. |
| .TP |
| \fBSTRIP\fP\fI flagga värde\fP |
| Ta bort alla flaggor som listas i \fIvärde\fP från flaggan som anges i |
| \fIflagga\fP. |
| .TP |
| \fBAPPEND\fP\fI flagga värde\fP |
| Utöka flaggan \fIflagga\fP genom att lägga till alternativen som anges i |
| \fIvärde\fP. Ett blanksteg läggs till före värdet om flaggans nuvarande värde |
| inte är tomt. |
| .TP |
| \fBPREPEND\fP\fI flagga värde\fP |
| Utöka flaggan \fIflagga\fP genom att lägga till alternativen som anges i |
| \fIvärde\fP först. Ett blanksteg läggs till efter värdet om flaggans nuvarande |
| värde inte är tomt. |
| .P |
| Konfigurationsfilerna kan innehålla kommentarer på rader som börjar med ett |
| nummertecken (#). Även tomma rader ignoreras. |
| .SH KOMMANDON |
| .TP |
| \fB\-\-dump\fP |
| Skriv alla kompileringsflaggor och deras värde på standard ut. En flagga |
| skrivs per rad, avdelade från sitt värde med ett likamedtecken |
| ("\fIflagga\fP=\fIvärde\fP"). Detta är standardåtgärden. |
| .TP |
| \fB\-\-list\fP |
| Skriv ut listan över flaggor som stöds av den aktuella leverantören (en per |
| rad). Se stycket \fBFLAGGOR SOM STÖDS\fP för mer information om dem. |
| .TP |
| \fB\-\-export=\fP\fIformat\fP |
| Skriv skal\- (om \fIformat\fP är \fBsh\fP) eller make\-kommandon (om \fIformat\fP är |
| \fBmake\fP) som kan användas för att exportera alla kompileringsflaggor i |
| miljön till standard ut. Om \fIformat\fP är \fBconfigure\fP kan utdata användas på |
| en \fB./configure\fP\-kommandorad. Om \fIformat\fP inte anges antas \fBsh\fP. Endast |
| kompileringsflaggor som börjar med en stor bokstav tas med, andra antas att |
| inte vara lämpliga för miljön. |
| .TP |
| \fB\-\-get\fP\fI flagga\fP |
| Skriv ut värdet på flaggan på standard ut. Avslutar med 0 om flaggan är |
| känd, om inte avslutar den med 1. |
| .TP |
| \fB\-\-origin\fP\fI flagga\fP |
| Anger ursprunget till flaggan som returneras av \fB\-\-get\fP. Avslutar med 0 om |
| flaggan är känd, om inte avslutar med 1. Ursprunget kan vara ett av följande |
| värden: |
| .RS |
| .TP |
| \fBvendor\fP |
| originalflagga satt av leverantören returneras; |
| .TP |
| \fBsystem\fP |
| flaggan är satt/modifierad av systemkonfigurationen; |
| .TP |
| \fBuser\fP |
| flaggan är satt/modifierad av användarkonfigurationen; |
| .TP |
| \fBenv\fP |
| flaggan är satt/modifierad av en miljöspecifik konfiguration. |
| .RE |
| .TP |
| \fB\-\-help\fP |
| Visar hjälpskärm och avslutar. |
| .TP |
| \fB\-\-version\fP |
| Visar version och avslutar. |
| . |
| .SH "FLAGGOR SOM STÖDS" |
| .TP |
| \fBCFLAGS\fP |
| Flaggor för C\-kompilatorn. Standardvärdet som satts av leverantören |
| innehåller \fI\-g\fP och den förvalda optimeringsnivån (vanligtvis \fI\-O2\fP, eller |
| \fI\-O0\fP om miljövariabeln \fBDEB_BUILD_OPTIONS\fP definierar \fInoopt\fP). |
| .TP |
| \fBCPPFLAGS\fP |
| Flaggor för C\-förprocesseraren. Förvalt värde: tomt. |
| .TP |
| \fBCXXFLAGS\fP |
| Flaggor för C++\-kompilatorn. Samma som \fBCFLAGS\fP. |
| .TP |
| \fBFFLAGS\fP |
| Flaggor för Fortrankompilatorn. Samma som \fBCFLAGS\fP. |
| .TP |
| \fBLDFLAGS\fP |
| Flaggor som sänds till kompilatorn vid länkning av binärer eller delade |
| objekt (om länkaren anropas direkt måste \fB\-Wl\fP och \fB,\fP tas bort från dessa |
| flaggor). Standardvärde: tomt. |
| . |
| .SH FILER |
| .TP |
| \fB/etc/dpkg/buildflags.conf\fP |
| Konfigurationsfil för hela systemet. |
| .TP |
| \fB$XDG_CONFIG_HOME/dpkg/buildflags.conf\fP eller \fB$HOME/.config/dpkg/buildflags.conf\fP |
| Användarens konfigurationsfil. |
| .SH MILJÖVARIABLER |
| Det finns två uppsättningar miljövariabler som utför samma operationer, den |
| första (DEB_\fIflagga\fP_\fIop\fP) bör aldrig användas inuti \fBdebian/rules\fP). Den |
| är tänkt för användare som vill bygga om källkodspaketet med andra |
| byggflaggor. Den andra uppsättningen (DEB_\fIflagga\fP_MAINT_\fIop\fP) bör endast |
| användas i \fBdebian/rules\fP av paketansvariga för att ändra de slutgiltiga |
| byggflaggorna. |
| .TP |
| \fBDEB_\fP\fIflagga\fP\fB_SET\fP |
| .TQ |
| \fBDEB_\fP\fIflagga\fP\fB_MAINT_SET\fP |
| Denna variabel kan användas för att tvinga fram värdet som returneras för |
| given \fIflagga\fP. |
| .TP |
| \fBDEB_\fP\fIflagga\fP\fB_STRIP\fP |
| .TQ |
| \fBDEB_\fP\fIflagga\fP\fB_MAINT_STRIP\fP |
| Denna variabel kan användas för att tillhandahålla en blankstegsavdelad |
| lista med flaggor som kommer att tas bort från uppsättningen flaggor som ges |
| för given \fIflagga\fP. |
| .TP |
| \fBDEB_\fP\fIflagga\fP\fB_APPEND\fP |
| .TQ |
| \fBDEB_\fP\fIflagga\fP\fB_MAINT_APPEND\fP |
| Denna variabel kan användas för att lägga till ytterligare flaggor till |
| värdet som returneras för given \fIflagga\fP. |
| .TP |
| \fBDEB_\fP\fIflagga\fP\fB_PREPEND\fP |
| .TQ |
| \fBDEB_\fP\fIflagga\fP\fB_MAINT_PREPEND\fP |
| Denna variabel kan användas för att lägga till ytterligare flaggor först i |
| värdet som returneras för given \fIflagga\fP. |
| .TP |
| \fBDEB_BUILD_MAINT_OPTIONS\fP |
| Den här variabeln kan användas för att slå av/på olika härdningsbyggflaggor |
| genom alternativet \fBhardening\fP. Se avsnittet \fBHÄRDNING\fP för mer |
| information. |
| . |
| .SH HÄRDNING |
| Du kan använda flera kompileringsflaggor (se detaljer nedan) för att härda |
| den färdiga binären mot minnesfördärvningsangrepp, eller för att ge |
| ytterligare varningsmeddelanden under kompileringen. Förutom det som anges |
| nedan aktiveras dessa som standard för arkitekturer som stöder dem. |
| .P |
| Varje härdningsfunktion kan aktiveras och inaktiveras i miljövariabeln |
| \fBDEB_BUILD_MAINT_OPTIONS\fP värde \fBhardening\fP med modifierarna "+" och |
| "\-". Du kan till exempel aktivera och funktionen "pie" och inaktivera |
| funktionen "fortify" genom att ange detta i \fBdebian/rules\fP: |
| .P |
| export DEB_BUILD_MAINT_OPTIONS=hardening=+pie,\-fortify |
| .P |
| Den speciella funktionen \fBall\fP kan användas för att aktivera eller |
| inaktivera alla härdningsfunktioner samtidigt. Du kan till exempel |
| inaktivera allt och endast aktivera "format" och "fortify" med: |
| .P |
| export DEB_BUILD_MAINT_OPTIONS=hardening=\-all,+format,+fortify |
| . |
| .TP |
| \fBformat\fP |
| Inställningen (aktiverad som standard) lägger till \fB\-Wformat |
| \-Wformat\-security \-Werror=format\-security\fP till \fBCFLAGS\fP och |
| \fBCXXFLAGS\fP. Detta kommer att varna om olämplig användning av |
| formatsträngar, och att misslyckas när formatfunktionerna används på ett |
| sätt som representerar möjliga säkerhetsproblem. För närvarande varnar detta |
| om anrop till funktionerna \fBprintf\fP och \fBscanf\fP där formatsträngen inte är |
| en fast sträng och när det inte finns några formatargument, som i |
| \fBprintf(foo);\fP istället för \fBprintf("%s", foo);\fP Detta kan vara ett |
| säkerhetshål om formatsträngen kommer från en obetrodd källa och innehåller |
| "%n". |
| . |
| .TP |
| \fBfortify\fP |
| Inställningen (aktiverad som standard) lägger till \fB\-D_FORTIFY_SOURCE=2\fP |
| till \fBCFLAGS\fP. Kompilatorn har under kodgenereringen kännedom om en hel del |
| information om buffertstorlekar (där tillämpligt) och försöker ersätta |
| osäkra funktionsanrop med obegränsade buffertlängder med längdbegränsade |
| dito. Det här är speciellt användbart för gammal, skräpig kod. Dessutom |
| blockeras formatsträngar i skrivbart minne som innehåller "%n". Om ett |
| program är beroende av en sådan formatsträng måste det gås runt i kod. |
| |
| Observera att, för att den här flaggan skall ha någon effekt, måste |
| källkoden också kompileras med \fB\-O1\fP eller högre. |
| .TP |
| \fBstackprotector\fP |
| Inställningen (aktiverad som standard) lägger till \fB\-fstack\-protector |
| \-\-param=ssp\-buffer\-size=4\fP till \fBCFLAGS\fP och \fBCXXFLAGS\fP. Detta lägger till |
| säkerhetskontroller mot stacköverskrivningar, vilket gör att många möjliga |
| kodinjiceringsangrepp istället avbryter programmet. I det bästa fallet gör |
| det kodinjiceringsangrepp till överbelastnignsangrepp eller icke\-problem |
| (beroende på programmet). |
| |
| Den här funktionen kräver länkning mot glibc (eller ett annat bibliotek som |
| tillhandahåller \fB__stack_chk_fail\fP), så det måste inaktiveras när du bygger |
| med \fB\-nostdlib\fP eller \fB\-ffreestanding\fP eller liknande. |
| . |
| .TP |
| \fBrelro\fP |
| Inställningen (aktiverad som standard) lägger till \fB\-Wl,\-z,relro\fP till |
| \fBLDFLAGS\fP. Vid inläsning av programmet måste länkaren skriva till flera |
| ELF\-minnessektioner. Den här inställningen flaggar till inläsaren att dessa |
| sektioner skall göras skrivskyddade innan programmet får kontroll. Detta |
| skyddar huvudsaklingen mot GOT\-överskrivningsangrepp. |
| . |
| .TP |
| \fBbindnow\fP |
| This setting (disabled by default) adds \fB\-Wl,\-z,now\fP to \fBLDFLAGS\fP. During |
| program load, all dynamic symbols are resolved, allowing for the entire PLT |
| to be marked read\-only (due to \fBrelro\fP above). |
| . |
| .TP |
| \fBpie\fP |
| Inställningen (inaktiverad som standard) lägger till \fB\-fPIE\fP till \fBCFLAGS\fP |
| och \fBCXXFLAGS\fP, samt \fB\-fPIE \-pie\fP till \fBLDFLAGS\fP. Positionsoberoende |
| exekverbara program (PIE) behövs för att dra fördel av slumpmässig |
| adressrymd (ASLR), vilket stöds av vissa versioner av kärnan. Medan ASLR |
| redan kan användas för datautrymmen i stacken och heap:en (brk och mmap), |
| måste kodområden först kompileras som positionsoberoende. Delade bibliotek |
| gör redan detta (\-fPI C), så de drar automatiskt fördel av ASLR medan binära |
| \&.text\-regioner måste byggas med PIE för att uppnå ASLR. När detta sker är |
| ROP\-angrepp (Return Oriented Programming) mycket svårare eftersom det inte |
| finns några statiska platser att studsa från i ett |
| minnesfördärvningsangrepp. |
| |
| Detta är inte kompatibelt med \fB\-fPIC\fP så man måste vara försiktig när man |
| bygger delade objekt. |
| |
| Eftersom PIE i tillägg implementeras med ett generellt register kan vissa |
| arkitekturer (huvudsakligen i386) se prestandaförluster upp till 15% i |
| väldigt textsegment\-tunga programs körning; de flesta körningar ser mindre |
| än 1%. Arkitekturer med många generella register (t.ex amd64) ser inte en |
| lika stor värsta falls\-förlust. |
| . |
| .SH FÖRFATTARE |
| Upphovsrättsskyddat © 2010\-2011 Raphaël Hertzog |
| .sp |
| Upphovsrättsskyddat © 2011 Kees Cook |
| .sp |
| Detta är fri programvara; se GNU General Public License version 2 eller |
| senare för kopieringsvillkor. Det finns INGEN GARANTI. |
| |
| .SH "ÖVERSÄTTNING" |
| Peter Krefting och Daniel Nylander. |