Jag försöker skapa min första deb, så jag vet inte mycket om det än. Det här är min reglerfil för tillfället. När jag läser dokumentation och försöker förstå hur man skriver mer komplicerade reglerfiler stannar jag på binär - Arch och binär-indep mål I korthet förstår jag inte vad de faktiskt står för. Dokumentationen säger att paketbågen bestäms av Arkitektur-linjen i Control-filen. Om värdet är allt är paketet en arkitekturberoende. Om värdet är Någon då är paketet en arkitektur oberoende. Jag förstår helt denna del Men då börjar jag läsa manfiler för debhelper tools. man dpkg-buildpackage säger. Det kallar debian-regler byggd följt av fakeroot debian regler binärmål om inte en källkod byggs Har begärts med - S Observera att binärmålet är antingen binärt standardfall eller om - b är specificerat eller binärbåge om - B är specificerat eller binär-indep om - A är specifiedmands i binär-indep-sekvensen passeras - i alternativ att säkerställa De arbetar bara med binära oberoende paket och kommandon i binärbågsekvenserna passerar-ett alternativ för att säkerställa att de bara arbetar med arkitekturberoende paket. Därför försöker jag se standard uppsättning kommandon för binär, binär-båge och binär - indep mål genom att skriva. och få helt lika uppsättningar kommandon den enda skillnaden är - i och - a flaggor efter varje kommando. Så den första frågan är - vad är skillnaden mellan till exempel dhautobuild, dhautobuild - a och dhautobuild - i eller Någon annan dhcommand. And en annan fråga är - om min kontrollfil bara består av paket med all arkitektur behöver jag använda binär-indep-målet, eller jag kan göra det utan att använda bara byggbågsmål i mina regler file. asked maj 27 13 på 20 37. Skillnaden. Målet binära indep bygger alla Arkitektur alla binära paket i ditt källpaket Mål binärbågen bygger alla andra paket, antingen Arkitektur eller paket med en explicit arkitekturlista eller någon arkitekturvildbil Ds gillar Architecture Linux-any. Skillnaden mellan dessa två vägar i byggprocessen är relevant om du har ett källpaket som innehåller båda typerna av binära paket, arkitekturberoende och oberoende. Den ursprungliga byggnaden av paketet bygger både typer av binära Paket, men varje efterföljande byggnad på olika arkitekturer behöver bara bygga de arkitekturberoende binära paketen, eftersom du redan har byggt alla arkitekturoberoende paket i den första byggnaden. Imagine du har ett källpaket som heter foo som bygger de binära paketfoo-programmen Och foo-data Även om programmen i foo-program måste kompileras, t. ex. på grund av att de är skrivna i C och sålunda är binärpaketet av Arkitektur några datafiler i foo-data bilder, översättningar, hjälptexter, dokumentation, texturer, spel Kartor etc. är desamma för alla arkitekturer, varför det är Arkitektur alla Låt oss säga att uppströmsversionen av foo är 1 0 och det är den första Debianpaketrevisionen av den upstre Du släpper. Du bygger först alla paket på amd64-arkitekturen för 64-bitars PC-skivor, men du vill också kunna köra den på 32-bitars datorer, så du behöver också men du behöver inte en sekund Så din byggprocess kräver bara - arkmålen, t. ex. genom att ringa dpkg-buildpackage - B. Nödvändigheten av explicita mål. Med de minsta dh-stil debianreglerna behöver det inte behövas för att explicit ange mål eftersom många uppströms byggsystem inte gör det här Skillnad, men om de gör det, t. ex. genom att ha ett separat mål för att bygga dokumentationen, kan du implementera det som t. ex. Exempel taget från den 7-sidiga sidan. Varför behöver vi fakeroot-kommandot alls? Kan vi bara använda sudo - eller su-kommandona. Man-sidan says. fakeroot - kör ett kommando i en miljö som försvinner root-privilegier för filmanipulation. Ger en Falsk rotmiljö Detta paket är avsett att möjliggöra något som dpkg-buildpackage-rfakeroot, dvs att ta bort behovet att bli rot för en paketbyggnad. Detta görs genom att LDPRELOAD ställs till vilket ger wrappers runt getuid chown chmod mknod stat och skapar därmed en falsk rotmiljö Om du inte förstår något av detta behöver du inte fakeroot. My fråga är, vilket speciellt syfte löser det att en enkel su eller sudo don t Till exempel för ompaketering av alla installerade paket i ubuntu ger vi följande kommando. Kan vi Gör ovanstående kommando med sudo eller su istället för fakeroot som this. gives me this error. control katalog har dåliga behörigheter 700 måste vara 0755 och 0775.it är en bra ide, av säkerhetsskäl, för att undvika att göra som root allt som c Ould görs som vanlig användare, även om du kan köra sudo eller su, eftersom det är din maskin fakeroot har två användningsområden 1, det lurar program för att tro att du är en root-användare, vilket vissa felskrivna proprietära program kan kräva, även om det inte behövs vanligtvis Windows Utvecklare har gått Linux och 2 det låter emulera filläge och ägarförändringar som du annars inte skulle kunna göra, huvudsakligen för att skapa en tjärfil med rätt behörighet och äganderätt, användbart till exempel vid förpackningsprogrammet pqnet 12 aug 14 kl 10 03.I Tänk noten i utdraget från summan upp det Om du inte förstår något av det här behöver du inte fakeroot Om du inte kan tänka på en situation där fakeroot är användbar, så behöver du bokstavligen inte det Men människor som faktiskt gör det Behöver det helt förstå användarväsendet Christopher Schultz dec 5 16 på 15 32.Tänk att du är en utvecklare paketet underhållare, etc arbetar på en fjärrserver Du vill uppdatera innehållet i ett paket och bygga om det, ladda ner och anpassa En kärna från och bygga den osv. När du försöker göra de sakerna kommer du ta reda på att vissa steg kräver att du har root rättigheter UID och GID 0 av olika anledningar, säkerhet, förbiseenden, etc. Men det är inte möjligt att få roträttigheter , Eftersom du arbetar på en fjärrmaskin och många andra användare har samma problem som du Det här är vad exakt fakeroot gör det låtsas en effektiv UID och GID av 0 till miljön som kräver dem. I praktiken får du aldrig riktiga root-privilegier i Mitt emot sud och sudo som du nämner. Svarade den 20 mars 11 på 11 56. För att se klart skillnaden mellan fakeroot och en riktig sudo su, gör bara. Så länge du befinner dig inom fakerootskalet, ser det ut att du är rot - så länge du inte försöker göra någonting som verkligen behöver root privilegier och det här är exakt vad ett förpackningsverktyg behöver göra paket som är meningsfullt på vilken maskin som helst. När du använder fakeroot för förpackning, vad du vill Uppnå är att göra verktygen du ru N under fakeroot att se dina filer som ägda av root Ingenting mer, inget mindre Så i själva verket kommer su eller sudo inte att fungera för att få rätt fil ownership. answered 25 okt 12 på 10 16.Isn t faker dangerous Om jag skapar en fil Med suid bit och rx perm kommer filen att skapas ägd av root, exekverbar av någon, som root Eller kanske inställning av suid bit vann t arbeta Frizlab 3 okt 14 kl 21 14. Inte bra jag försökte detta ut själv Primärt skäl för Fakeroot är att få äganderätt rot i byggda paket utan att faktiskt vara root installerade paket kommer att ha rätt perms, men ntzrmtthihu777 Dec 16 14 på 14 38.Since svaren är svår att förstå för mig själv och det tog lite att tänka på att förstå det här kommentaren gjorde Jag förstår det, jag kommer att ge en förhoppningsvis bättre förklaring.1 Vad händer i fakeroot. Inget mer än vad som händer med din egen användare Absolut ingenting mer Om du fakeroot som när du kallar ger dig ett nytt skal, som sudo skulle låtsas att Gör saker som du nee Drog tillstånd för och avsluta, absolut ingenting skulle hända. Om du tänker på det, det är totalt slöseri med tid Varför skulle du göra saker som vanligtvis inte händer Det är vansinnigt Du kunde helt enkelt inte gjort något av det och det skulle ha Ingen skillnad, eftersom det inte finns några spår av det.2 Spår av fakeroot. Det kan vara ett spår kvar av fakeroot. Låt oss se på kommandon i MortenSickels svar som är ganska trevligt och förtjänar en upvote. Vid första ögonkastet, Det verkar som att ha använt fakeroot var ett totalt slöseri med tiden. Om du inte hade använt fakeroot skulle du ha samma sak. Den subtila grejen här är detta. Men det betyder att innehållet i filen fortfarande kommer ihåg att vara en rot Kan säga att inte använda fakeroot skulle ha producerat samma resultat. Du har rätt, det här exemplet är för enkelt. Låt oss ta ett annat exempel. Ta reda på vad som hände jag låtsas att vara rot som är helt ineffektiv och skapade x och y jag låtsas x Att tillhöra myuser och y att tillhöra rot De aktua Lly är båda tillhörande myuser som vi kan se i slutet men jag låtsade att det var så. Sedan skapade jag en lista och räddade min fantasi till en fil Senare när jag tittar tillbaka på filen kan jag se vem jag föreställde mig Filerna ska ägas av igen, de ägs inte egentligen av personer som jag föreställde mig, jag bara föreställde mig det.3 Så varför vill du ha det igen. Du kan säga att jag verkligen inte behöver förfalska att vara rot för att skapa den noteringen Jag kunde bara ha skapat noteringen, redigerad den för att reflektera min fantasi. Du har rätt, du behövde inte fakeroot för det. Faktum är att du vet att fakeroot inte gör någonting, du kan inte ha fått någon förmåga du inte har Förut. Men det här är vad fakeroot handlar om, redigering av noteringen kan vara nontrivial. Eftersom det är med ett paket som kan installeras på ditt system, har du en tar ed, gzip ed, xz ed, bzip2 ed eller något annat format Det är att hålla dina filer tillsammans och komma ihåg sina rättigheter och ägare kan du eas Ily ändra den komprimerade filen och redigera äganderätten till en fil jag inte vet om dig men jag kan inte tänka på ett sätt. Kan det vara ett verktyg som byggts upp, när allt är komprimerat, ändras den komprimerade filen och ändrar programvaran programmässigt Och behörigheter Ja det kan Så, antingen du kan förfalska ägarskapen innan du komprimerar eller byter dem efter att Debian har bestämt att den förra är lättare. 4 Varför inte bara använda sudo. Först och främst behöver du inte root privilegier för att bygga programvara och du T behöver root privilegier för att komprimera dem Så om du inte behöver det, måste du verkligen vara en Windows-användare att ens tänka på att få det tillståndet Men sarkasm åt sidan, kanske du inte ens har root-lösenord. Dessutom, säg att du gör det Har root behörigheter Och låt oss säga att du vill låtsas att en fil ska ha läsåtkomst bara till roten Så du sudo ändrar faktiskt filägaren och behörigheterna för att rota du kommer ur rotskal och försöker paketera allt Du misslyckas för att du nu kan inte läsa Filen längre eftersom du inte har root access Så du måste sudo och komprimera och bygga paketet som root Effektivt måste du göra allt som root. As en förpackare behöver du inte root behörigheter och du borde inte få det när Du installerar ett paket, kan du behöva installera en fil A som root och det är där du behöver rootbehörigheter. Alla fakeroot gör det för att göra det möjligt. Det låter förpackarlistan A som ägs av rot för arkivet, så att när paketet Dekomprimeras av användaren, arkivet kräver root tillstånd och skapar A som ägs av root. I har använt det för paketbyggnadsskript. Jag var inte säker på att personen som kör skriptet har root-nivååtkomst, men manuset fortfarande behövs för att generera, Säg en tjärfil som innehöll filer som hör till roten Det enklaste sättet att göra det var att köra paketbyggnadsskriptet under fakeroot, vilket lurade arkivet för att tro att filerna tillhörde rot och packade dem som sådana inuti arkivet. Detta Sätt när Paketet packades upp till destinationsmaskinen på en annan maskin. Hela filerna hörde inte till konstiga eller icke-existerande användare. Tänk på det var den enda plats jag sett här för att bygga någon form av arkiv rotfötter av inbyggda system, Arkiv, rpm paket deb paket, etc. answered Feb 24 11 på 12 58.fakeroot är ett lösningsverktyg för bugged förpackning programvara det finns ingen anledning att du måste vara rot för att skapa sådana paket, men eftersom de inte tillåter dig att ange fil Behörigheter på något annat sätt än att ställa in dem direkt i filsystemet, har du inget val pqnet 12 aug 14 klockan 10 08. En vanlig användning är att ta reda på vilka filer som ett felaktigt binär verkligen ville ha tillgång till Det är att ta reda på och fixa eller arbeta Runt buggar orsakade av hårdkodade banor och felaktigt undantagshantering. Achch Build System. Vad är Arch Build System. Arch Build System är ett portliknande system för att bygga och förpacka programvara från källkod medan pacman är speciali Zed Arch verktyg för binär pakethantering inklusive paket byggda med ABS, ABS är en samling verktyg för att kompilera källan i installerbara paket. Vad är ett portliknande system. Ports är ett system som används av BSD för att automatisera processen med att bygga programvara från Källkod Systemet använder en port för att ladda ner, packa upp, lappa, kompilera och installera den angivna programvaran. En port är bara en liten katalog på användarens dator, namngiven efter motsvarande programvara som ska installeras, som innehåller några filer med Instruktioner för att bygga och installera mjukvaran från källan Det gör installationen av programvara så enkel som att skriva gör eller göra installationen ren i portens katalog. ABS är ett liknande koncept. ABS består av ett katalogträd som ABS-trädet ligger under varav Träd innehåller många underkataloger, var och en inom ett repo namn och varje namnges av deras respektive paket. Detta träd representerar men innehåller inte alla officiella Arch-program som kan hämtas genom SVN-systemet Du kan hänvisa till varje paketnamn underkatalog som ABS, ungefär som man skulle hänvisa till en port. Dessa ABS eller underkataloger innehåller inte mjukvarupaketet eller källan utan snarare en PKGBUILD-fil och ibland andra filer. En PKGBUILD är en enkel bas Bygga skript en textfil som innehåller kompilerings - och förpackningsinstruktioner samt webbadressen till lämplig källa tarball som ska laddas ner. Den viktigaste delen av ABS är PKGBUILDs Genom att utfärda inuti ABS makepkg-kommandot, sammanställs programvaran först och packas sedan in i Byggkatalog Nu kan du använda pacman med Arch Linux-pakethanteraren för att installera, uppgradera och ta bort din nya package. ABS-översikt. ABS kan användas som paraplyterm, eftersom det innefattar och bygger på flera andra komponenter, även om det inte är tekniskt korrekt, kan ABS hänvisa till följande verktyg som en komplett verktygslåda. ABS-trä ABS-katalogstrukturen innehåller filer som behövs för att bygga alla officiella paket Men inte själva paketen eller källfilerna till mjukvaran. Det finns tillgängligt i svn - och git-repositories och abs-scriptet från abs-paketet laddar ner dem med hjälp av rsync till var abs på din lokala maskin. På det lokala systemet innehåller trädet underkataloger för varje Arkiv som anges som i sin tur innehåller en underkatalog för varje paket. Notera ABS-trädet synkroniseras en gång om dagen så det kan ligga bakom det som redan finns tillgängligt i repositories. GBGBUILD A Bash-skriptet som innehåller URL-adressen till källkoden tillsammans med kompileringen och Förpackningsinstruktioner makepkg shell kommandot verktyg som läser PKGBUILDs, laddar ner automatiskt och sammanställer källorna och skapar en enligt PKGEXT Array in Du kan också använda makepkg för att skapa egna anpassade paket från AUR eller tredjepartskällor. Se Skapa paket för mer information. Pacman pacman är helt separat, men krävs nödvändigtvis antingen av makepkg eller manuellt för att installera och ta bort de inbyggda paketen Och för att hämta beroenden AUR Arch User Repository är separat från ABS, men AUR som inte stöds PKGBUILDs är byggda med makepkg för att kompilera och paketera programvara. I motsats till ABS-trädet på din lokala dator finns AUR som ett webbläsarfunktion. Det innehåller tusentals Användarbidragna PKGBUILDs för programvara som inte är tillgänglig som officiellt Arch-paket Om du behöver bygga ett paket utanför det officiella Arch-trädet är chansen att det är i AUR. Warning Officiella PKGBUILDs antar att paket är inbyggda i en ren chroot Byggprogramvara på Ett smutsigt byggsystem kan misslyckas eller orsaka oväntat beteende vid körning, för om byggsystemet upptäcker avhängigheter dynamiskt, beror resultatet Ds om vilka paket som finns på byggsystemet. Varför skulle jag vilja använda ABS. Arch Build System används topil eller kompilera ett paket av någon anledning. Skapa och installera nya paket från programkälla för vilka inga paket ännu finns Tillgänglig se Skapa paket. Anpassa befintliga paket för att passa dina behov, vilket gör att du kan aktivera eller inaktivera alternativ, patching. Rebuild hela ditt system med dina compiler flaggor, la FreeBSD t. ex. med pacbuilder. Cleanly bygg och installera din egen anpassade kärna se Kärnkompilering. Få kärnmoduler som fungerar Med din anpassade kärna. Kompilera och installera en nyare, äldre, beta - eller utvecklingsversion av ett Arch-paket genom att redigera versionsnumret i PKGBUILD. ABS är inte nödvändigt för att använda Arch Linux, men det är användbart för att automatisera vissa uppgifter av Källkompilering. Bygga paket med hjälp av abs består av dessa steg. Sätt in abs-paketet med pacman. Run abs som root för att skapa ABS-trädet genom att synkronisera det med Arch Linux-servern. Kopiera buen Ld-filer brukar bo under var abs repo pkgname till en byggkatalog. Ändra till den katalogen, rediger PKGBUILD om det behövs och gör makepkg. Enligt instruktionerna i PKGBUILD kommer makepkg att ladda ner lämplig källkodstärkning, packa upp den, patch om så önskas , Kompilera enligt CFLAGS specificeras i och slutligen komprimera de inbyggda filerna i ett paket med förlängningen eller. Installering är lika enkelt som att göra pacman - U-fil Paketfjernhantering hanteras även av pacman. Install tools. This kommer att fånga abs-sync-skript , Olika byggskript och rsync som ett beroende, om du inte redan har det. Innan du faktiskt kan bygga någonting behöver du även grundläggande kompileringsverktyg. Dessa samlas in i paketgruppens bas-devel. Denna grupp kan vara Installeras med pacman. Edit för att inkludera dina önskade repositories. Remove framför lämpliga repositories. Exempel: ABS-trädet är en SVN-kataloghierarki som ligger under var abs och ser ut så här. Th E ABS-träd har exakt samma struktur som paketdatabasen. Första nivån på arkivnamnet. Andra nivå Paketnamnskataloger. Tredje nivån PKGBUILD innehåller information som behövs för att bygga ett paket och andra relaterade filer, fläckar, andra filer som behövs för att bygga paketet. Källkoden för paketet finns inte i ABS-katalogen. Istället innehåller PKGBUILD en webbadress som laddar ner källkoden när paketet är byggt. Så är storleken på abs-trädet ganska litet. Ladda ner ABS-trädet. Ditt ABS-träd är nu Skapas under var abs Observera att trädgrenar skapades motsvarande dem du angav i. Kommandot abs bör köras regelbundet för att hålla synkronisering med de officiella arkiverna. Individuella ABS-paketfiler kan också laddas ned med. På så sätt behöver du inte Kolla in hela abs-trädet bara för att bygga ett paket. Den här artikeln eller avsnittet är en kandidat för sammanslagning med makepkg. Notes Använd det andra argumentet i mallen för att ge mer detaljerad indi Katjoner Diskutera i Talk Arch Build System. makepkg s anger globala miljövariabler och kompilatorflaggor som du kanske vill redigera om du använder ett SMP-system eller för att ange andra önskade optimeringar Standardinställningarna är för optimering av i686 och x8664 som fungerar bra För de här arkitekturerna på enstaka CPU-system Standardvärdena kommer att fungera på SMP-maskiner, men kommer endast att använda en kärna CPU när kompilering ser makepkg för detaljer. Ange PACKAGER-variabeln i. Ställ in PACKAGER-variabeln i är ett valfritt men mycket rekommenderat steg. Det tillåter En flagga för att snabbt identifiera vilka paket som har byggts och installerats av DIG, inte den officiella underhållaren. Det här uppnås enkelt med expac. Showing all packages including those from AUR. Showing only packages contained in repos. This example only shows packages contained in the Repos definieras in. Create a build directory. It rekommenderas att skapa en byggkatalog där den faktiska sammanställningen kommer att äga rum du borde aldrig mod Ify ABS-trädet genom att bygga in det eftersom data kommer att gå förlorade överst på varje ABS-uppdatering. Det är bra att använda din hemkatalog, även om vissa Arch-användare föredrar att skapa en lokal katalog under var abs som ägs av en vanlig användare. Skapa din Bygga katalog e g. Copy ABS från trädet var abs repository pkgname till byggkatalogen. Build-paketet. I vårt exempel kommer vi att bygga den smala bildskärmshanteraren pack. Copy den slanka ABS från ABS-trädet till en byggkatalog. Navigate Till byggkatalogen. Modifiera PKGBUILD efter eget tycke Om du behöver göra ändringar i källan själv, istället för bara PKGBUILD, se Patching in ABS. Kör sedan makepkg med - s-flaggan för att möjliggöra automatisk hantering av beroendet. Innan du klagar på att du saknar beroenden bör du komma ihåg att gruppbasen-devel antas installeras när du bygger med makepkg Se Install tools. Install som root. That s det Du har just byggt smal från källan och installerat det på ditt system wi Th pacman Paketborttagning hanteras också av pacman med pacman - R slim. ABS-metoden för installation av programvara ger bekvämlighet samtidigt som man behåller fullständig öppenhet och kontroll över byggnads - och installationsfunktionerna som ingår i PKGBUILD. Samma steg utförs samma steg I den traditionella metoden som allmänt innehåller konfigurationen, gör, gör installationssteg men mjukvaran är installerad i en falsk rotmiljö. En falsk rot är helt enkelt en underkatalog i byggkatalogen som fungerar och fungerar som systemets rotkatalog. I samband med fakeroten Program skapar makepkg en falsk rotkatalog och installerar de sammanställda binärerna och tillhörande filer i den med root som ägare. Den falska rot - eller underkatalogen som innehåller den kompilerade mjukvaran komprimeras sedan till ett arkiv med förlängningen eller ett paket. När det åberopas, Pacman extraherar sedan paketet installerar det i systemets verkliga rotkatalog. Reservera ändrade paket. Uppdatera Systemet med pacman kommer att ersätta ett modifierat paket från ABS med paketet med samma namn från de officiella arkiverna Se följande anvisningar för hur du undviker detta. Sätt in en gruppmatris i PKGBUILD och lägg till paketet till en grupp som heter modifierad. Lägg till den här gruppen i avsnittet Ignorera gruppen in. Om nya versioner finns tillgängliga i de officiella arkiverna under en systemuppdatering, skriver pacman en anteckning om att den hoppa över den här uppdateringen eftersom den befinner sig i avsnittet IgnoreGroup. Vid det här laget måste det ändrade paketet byggas om från ABS för att undvika partiella uppgraderingar. pbget - hämta PKGBUILDs för enskilda paket direkt från webbgränssnittet. Innehåller AUR support. asp - ett verktyg för att hantera byggkällarfilerna som används för att skapa Arch Linux-paket. Används git-gränssnittet som erbjuder mer aktuella källor. Få källan. Ubuntu-kärnkällan är tillgänglig via git Mer information kan erhållas från KernelTeam KernelGitGuide. Build system breakdown. This kräver lite kunskap E av Debians byggsystem inklusive debiansystemsfilen, etc. Under gutsy har ombyggnaden skrivits om från grunden, främst för att avlägsna användningen av kärnpaket som byggverktyg, eftersom det blev alltför tungt och restriktivt för vårt Behov Vi använder fortfarande kärnkil för udeb-skapelse. Smakämnen är hur vi definierar olika typer av kärnor på samma arkitektur Varje smak kan riktas mot en specifik CPU, eller ge någon funktionalitet för ett visst syfte. Till exempel, amd64 x8664 arkitekturen Har dessa flavours. generic - Standardinstallationen kernel. server - Optimerad för serverinstallationer. När du bygger på amd64-arkitekturen är dessa kärnorna som är byggda. I verkligheten skiljer de sig bara i små variationer av kernel config-alternativ. Varje smak är byggd Använda en fördefinierad konfigurationsfil som används av kärnbyggnadssystemet Varje arkitektur innehåller det s config-filerna i debian-filnamnet config arch eller debian config arch när det gäller Ubuntu Hardy Filen Es är delade för varje smak i debian-grennamn config arch-konfigurationssmaak och gemensamma alternativ delas i debian-gren-namn-konfigurationsbågsark. När kärnorna är byggda sammanfogas de gemensamma och smakspecifika konfigurationsfilerna tillsammans i byggkatalogen. Debian-kontrollfilen genereras från kernel-kilkommandot Detta kommer att ske automatiskt under en fakeroot debian-regler. Filen genereras från ett debian-reglermål Det här är befolket av filer som definierar smakerna i debian-kontrollen d var. Vars-filer definierar paketbeskrivningar för varje smak. Changelog-filen är där vi spårar alla ändringar gjorda i förvaret. Detta är en standard debian changelog. Ändringar läggs inte till det manuellt. Istället görs det automatiskt vid frigivning med git logg See Nedan för process. ABI är förmodligen en av de viktigaste egenskaperna hos byggsystemet. I kärnpaketnamnet är ABI den numeriska komponenten direkt efterföljande Kärnversionen E g. ABI i ovanstående exempel är 1 ABI representeras i debian changelog som. Den mindre versionen efter ABI är en ständigt ökad revision. Det anger i grunden hur många uppladdningar som har gjorts för denna kärnversion. Kärnan ABI är härledd från filen som produceras under kärnbyggnaden Varje exporterad funktion ges en hash som definierar funktions s-argument och returvärde, vilket gör det enkelt att upptäcka förändringar som kan bryta moduler som är byggda mot kärnan, såsom vår egen Linux-begränsade - Moduler paketet. ABI-filerna för den tidigare byggnaden finns i debian abi prev-rev Layouten liknar debian config-katalogen eftersom varje arkitektur är en underkatalog och varje smak är en fil med ABI för den där smaken. När kärnbyggnadsprocessen avslutas kontrollerar den varje smak mot prev ABI Om tidigare och nuvarande ABI s är samma version, t ex 6, och ABI har ändrats, kommer byggnaden att misslyckas. Detta innebär att en ABI-bump Behövs se nedan. Från och med nu resulterar en enda ABI-förändring i någon smak i en ABI-bump för hela byggnaden. Det finns ingen per-smak eller per-arkitektur ABI-nummer. Detta är av sanitetsskäl. Övergripande ABI kontrollerar fel. När man skapar Filer nedan se till att filen har något innehåll a 1 är vanligt för att säkerställa att filen inte går förlorad när man skapar källkodspaket när det finns en. Ingen ABI-kontroll för alla smaker och arkitekturer. Ta bort byggnaden med skipabi sant som argument. Ingen ABI Kolla efter alla smaker av en specifik arkitektur. Skapa filen abi tidigare versionen arch ignore. No ABI kontrollera en smak av en specifik arkitektur. Skapa filen abi tidigare version arch flavour. Ignorera specifika symboler för alla smaker av alla arkitekturer i Alla versioner. Skapa filen abi perm-blacklist och skriv varje symbol för att ignorera i en rad. Om alla symboler i en viss modul ska ignoreras innehåller den raden modulnamnet prefixed av M notera mellanslag mellan kolon och modu Le namn. Ignorera specifika symboler för alla smaker av alla arkitekturer i en version. Skapa en fil abi förra versionen svartlistan med samma semantik som perm-blacklist filen. Modul listor. Modellistorna spåras på samma sätt som ABI och hålls I debian abi prev-ver arch flavour Filen är en basnamnssorterad lista, sans extension, av alla moduler i en viss smak. Detta är markerat oavsett ABI, eftersom det är ment att spåra release-to-release för att undvika att moduler går saknas Vid misstag. Övergripande modulkontrollfel. När du skapar filer nedan ser du att filen har något innehåll a 1 är vanligt för att säkerställa att filen inte går förlorad när du genererar källkodspaket när det finns en. Ingen modulkontroll för alla smaker och arkitekturer. Bygga med hoppmodul sant som argument. Ingen modul kontroller för alla smaker av en specifik arkitektur. Skapa filen abi tidigare versionen arch. No modul checka för en smak av en specifik arkitektur. Skapa filen abi tidigare versionen a Rch flavour. Ignore specifika moduler för alla smaker av alla arkitekturer. Skapa en fil abi tidigare version och placera varje modul för att ignorera i en separat rad av den filen. På det finns en git repo kallad kteam-verktyg. Det innehåller också några git krokar Som vi använder för att säkerställa överensstämmelse med politiken för vårt träd. Om du arbetar mycket med Ubuntu Linux-kärnträdet, bör du lägga dessa skript i katalogen över dina fungerande treemitmallar. I debian commit-mallar i källträdet Det finns flera mallar som bör användas när du förbereder ändringar som du förväntar dig att vara integrerade med Ubuntu-kärnrepo. Fördjupningsmallarna innehåller kommentarer för hur du fyller i nödvändig information. Observera också att alla förbindelser måste ha en signerad linje - s alternativ att git commit En typisk git commit kommando kommer att se ut. Notera att - e redigera alternativet måste följa - F alternativet, annars git kommer inte låta dig redigera commit-mallen innan man begår Den primära du wi Jag ska använda patchmallen Det är kommenterat kraftigt, så det borde vara självförklarande Vissa mallar kräver inte redigering som bumpabi och updateconfigs mallar Ett exempel på commit-logg kommer att se ut här. Den första raden är kritisk och bör sammanfatta förändringen Prefixet För linjen definierar typen av åtagandet se nedan Den sista raden ska innehålla din sign-off för plåstret och eventuella ack som den har mottagit. Återstoden av texten bör kortfattat beskriva förändringen. Utvecklingscykel. I det här avsnittet beskrivs alla berörda steg I en gemensam utvecklingscykel Det vill säga cyklerna från en uppladdning av Ubuntu-kärnan till nästa. Uppdatera ABI och moduler listor. För att starta en ny version måste du ladda ner ABI och modulfiler från föregående version. För att göra detta , Använd. I ovanstående exempel är 2 6 26 kärnversionen och 1 1 är den senast uppladdade revisionen. Den här laddar ner alla tidigare deb s och extraherar ABI-filerna och modullistorna Du kan lätt hitta det t O gör detta från en DC-maskin där arkivet är närmare nedladdning av alla kärnan deb s är en bandbredd eater. Startar en ny release. Instant efter en uppladdning bör du springa. Detta kommer att generera en ny debian changelog-post för nästa revisionsnummer, Och ändra lämpliga andra filer under debian-katalogen. Lägg till ny kod. Nu kan du rebase ditt träd, dra från andra grenar eller tillämpa korrigeringar som går in i den här uppdateringen. Uppdatering av configs optional. As nya drivrutiner läggs till och sammanslagningar görs med uppströms , it becomes necessary to update our configs in debian branch-name config This is easily done for all architectures with one simple command. This runs silentoldconfig for all flavours, so if any possible config options are unanswered, it will ask you Alternatively, if you know of a new config option, you can alleviate answering the same question for it on all flavours by appending it to the debian branch-name config arch config files, and running the above command. Once the config s are updated, you simply commit the new changes. Now build the kernel for all archs and flavours. Bumping the ABI. If the build fails because of the ABI checker, this is a sign that the ABI needs to be bumped. If it becomes necessary to increase the ABI, you simply need to edit debian changelog and increase the ABI in the version For example, if the current changelog looks like. And an ABI bump is required, you would change the above line to look like. Once this is complete and the changelog is committed the following commands should be run to regenerate the control files. Submitting Patches. Patches need to be ACK d by other members of the Ubuntu kernel team before being pushed. Upstream syncing. During an Ubuntu development cycles, the kernel is constantly synced against upstream Linux GIT head This involves merging conflicts, possibly deprecating local patches, and performing test builds. For stable releases, we cherry pick and sometimes outright sync to the 2 6 x y GIT tree for that particul ar release. During development cycle, when we are following upstream git very closely, we will use git rebase to stay synced to upstream Once upstream version has been released, we no longer rebase This may cause times where you need to force a GIT pull because the master of our tree is now rebased. Third party drivers. During gutsy, feisty and hardy, third-party drivers were kept in a package called linux-ubuntu-modules They are now kept in a subdirectory ubuntu in the main kernel tree. Modules added by Ubuntu have to meet some basic criteria. Modules added to the main tree must be open source. Must be stable, and pass code review. Must support hardware and or features relevant to a good portion of users. It is preferable that these drivers are maintained upstream, and be scheduled for inclusion In some cases, we keep drivers that do not meet these last criteria However, this is mainly due to being grandfathered in and our policy of not losing support for hardware. Preparing an upload. Once the tree is ready for upload, follow these steps to complete the package for uploading. Run git status to be sure you have no outstanding commits, or extraneous files in your local tree. It may also be a good idea to run git ls-files --others to check for extraneous files. Create the changelog entries, with the following commands. Tag the release The - m option is the message for the tag commit, and matches the actual tag name. Push the changes and tag to our repo. If the tree has a in the repo, download that to the same directory as the git tree. Ensure the tree is clean and the control files are populated. Run dpkg-buildpackage. or to build with source use. Upload using whatever tools you wish dupload for example. Submit your patch for upstream inclusion when appropriate, e g quirk updates. It should be noted that for development releases, a new tarball is generated at each upload However at release time, a is used, which is based on the upstream tarball of the released kernel we are using. Announce Kernel uploads. A number of other groups are affected by the Ubuntu Kernel changing We therefore announce all kernel uploads to the kernel-team, installer group, and ARM group note the ARM group are subscribed to kernel-team An example email is included below. Pushing to our repo. The kernel team should push changes to our repo see KernelGitGuide for public repo For normal pushes, use the following command. For a release the release tag should be pushed as well well with. NOTE Each release tree is someone s responsibility If it s not yours, it s probably best to email patches to rather than committing yourself. Security and Proposed Updates. On occasion, security patches are applied to stable kernels For these kernels, you will set the archive in debian changelog to rel - security where rel is some release like intrepid. The security team generally provides patches in the form of CVE s, with GIT SHA URL s to an upstream patch that fixes the problem We usually use will fetch from the upstream GI T repo, and git cherry-pick to get the fix into the local tree. The easiest way to fetch the remote repo s objects is to create a remote file such as containing. Then to pull the objects, and cherry pick an SHA, do this. The - e option will bring up an editor to add any Ubuntu related info to the commit perhaps a bug number, or maybe even add the CVE number The - x will keep the original GIT SHA in the commit message to track where it came from The - s option applies your Signed-off-by so that we can track who applied the commit. Security uploads should be build tested prior to upload this is the case for any upload, but especially so for security and proposed updates You and one other person should boot test the resulting kernel. If possible especially for critical code paths , attempt to reproduce the bug via supplied reproducers usually from the security team to verify it actually fixes the bug Make sure that there are no regressions as well. After upload, notify the security team that you h ave made the upload and include a copy of the changelog. Performing builds. Grab the Pre-requisite Tools. A good way to ensure that you have all of the tools installed that are required to build a package is to use debuild - b If you are missing something, it will fail very quickly. Pre-upload test builds. A set of scripts to help farm out builds across all supported architectures is described in. Quick builds. Aside from the standard dpkg-buildpackage build method, there are several easier ways to do build for developers When I actually add new code, I generally do an out-of-tree build for test, like so. You can add - jX as needed. One other helpful tool for a developer is to install the ccache package This speeds rebuild by a large factor. Normal full build. To test normal package building, one can use this command from the kernel git repo. This will build every kernel flavour. Partial build. You can also do single or multiple specific flavours during the build, using this syntax. So you can change g eneric with any flavour you want to build You may also want to do. to get the architecture independent headers package. LUM builds are done using. where flavour generic, ume, rt, xen, etc. Build options. There are several build options, in the form of environment variables and make variables Make options are passed on the debian rules command line. CONCURRENCYLEVEL X where X is a number to pass using make s - j option Use of this option is generally not recommended, as it will override the value normally selected automatically by the build rule based on the number of processor cores Setting the value to 1 can be useful to serialize the build in order to help isolate the source of a build or clean failure. AUTOBUILD - can be passed to make as well Tells the build to create a non-official package with generated ABI Used for daily builds of the kernel. skipabi true - Used for test only, causes the build to skip the ABI consistency check. skipmodule true - Same as above, but for the module check. NOK ERNLOG - Used for the insertchanges or printchanges target Causes git-ubuntu-log to not include upstream kernel changes in changelog output. E g When trying to avoid previous or current ABI file missing and not wanting to do an ABI-bump. Post upload. There are several things to do after an upload These depend greatly on what the upload involved Usually, for a non-ABI changing upload, you do not need to do anything further. However, for an ABI changing upload, packages need to be rebuilt against the linux-headers Note that these packages have an extra version whose major matches the ABI of the kernel it is being built against. This package contains modules that are proprietary They are distributed separately so that it is easy for users to not have to use them. For an ABI bump, edit debian rules and find abiversion Change the value to the new ABI number Use dpkg-buildpackage as normal after creating a new changelog entry. The linux-restricted-modules package was not stored in a git tree prior to Intrepid To get it you would need to use apt-get source like. This will only work from an environment that has the apropriate series deb-src set for restricted like. With Intrepid LRM started to be a git tree on and you can clone it to a working directory If you got the sources, then look for the abi-version in debian rules and make sure it corresponds to the abi of your new kernel and you have installed the header packages for all flavours After that fakeroot dpkg-buildpackage will build the package. For Jaunty, you will need to follow the same instructions for bumping the ABI in the base source, i e updating debian changelog then running. For Hardy there was a separate LUM git tree which was quite similar to LRM Setting the ABI is the same as in linux-source via debian changelog A quick summary to checkout, use git clone ubuntu-hardy-lum and to build, use fakeroot debian rules binary-modules-FLAVOUR Please note that the alsa tree for Hardy is in linux-ubuntu-modules, so if you re havi ng sound issues you might want to try building this package in addition to the main kernel package. Starting with Intrepid, additional modules are placed into the ubuntu directory of the main kernel repository. The linux-meta package provides meta packages for easier user upgrades Because our kernel packages are named with full ABI and flavour, users normally would have to manually upgrade to a new kernel if it had an ABI bump The meta packages always point to the latest kernel, so if users install these packages and they are installed by default on new systems , then upgrades will always pull in everything they need to be current. For an ABI bump, edit debian changelog and increment the ABI number and since only an ABI bump requires a new linux-meta package the upload number. This package is usually empty during development It is meant for post-release updates of new drivers It is packages separately from the kernel so that it is easier to provide sometimes untested drivers for new hardwa re on a stable release Users do not have this package installed by default. This package is based heavily on linux-ubuntu-modules. main, proposed and security, OH MY. We have some differing processes for different types of uploads Described here for the sanity challenged. No differences for this Uploading to main the current development release is the primary target for work. Technically known as rel - proposed e g edgy-proposed is where we can push changes that need testing, and are unsuited for a wide audience of users who expect a rock solid distribution. Kernel changes after release first get uploaded to - proposed and after some time will get moved to the - updates. See the KernelUpdates page for more information. This is self explanatory, or so it would seem Security patches will get applied to a temporary topic branch based on the last version in - updates The resulting kernel package is uploaded to a special build environment and will get into the security and updates pocket After upload t he security patches will be merged back into the main tree. KernelTeam KernelMaintenance henrix 2012-02-22 17 20 37.Arch fakeroot binary trading.-G Equivalent to --build source, any since dpkg 1 17 11 If --as-root is also given, then the command is executed as root see --root-command the clean, binary, binary-arch and binary-indep targets Arch fakeroot binary trading Live Rates Of Forex In Taiwan Etc See the manpage for option and strip Strip symbols from binaries libraries -- docs Save doc --as-root Only meaningful together with --target since dpkg 1 15 0 - si - sa - sd - vversion - Cchanges-description - m, --release-by maintainer-address - e, --build-by maintainer-address Passed unchanged to dpkg-genchanges - a, --host-arch architecture Specify the Debian architecture we build for long option since dpkg 1 17 17 Otherwise it runs the preclean hook and calls fakeroot debian rules clean to clean the build-tree unless - nc or --no-pre-clean is specified It runs the source hook and calls dpkg-so urce - b to generate the source package if a source build has been requested with --build or equivalent options It runs the build hook and calls debian rules build-target, then runs the binary hook followed by fakeroot debian rules binary - target unless a source-only build has been requested with --build source or equivalent options It runs the check hook and calls a package checker for the file if a command is specified in DEBCHECKCOMMAND or with --check-command It runs the sign hook and calls gpg2 or gpg to sign the file if any, unless - us or --unsigned-source is specified or on UNRELEASED builds , and the file unless - uc or --unsigned-changes is specified or on UNRELEASED builds Each line in the configuration file is either an option exactly the same as the command line option but without leading hyphens or a comment if it starts with a binary Builds the architecture specific and independent binary packages - g Equivalent to --build source, all since dpkg 1 17 11 --target target --targ et target - T, --rules-target target Calls debian rules target after having setup the build environment and stops the package build process here since dpkg 1 15 0, long option since dpkg 1 18 8.Many dpkg-buildpackage options are forwarded to dpkg-genchanges It runs the postclean hook and if - tc or --post-clean is specified, it will call fakeroot debian rules clean again Note when using this value standalone and if what you want is simply to re - build the source package, using dpkg-source is always better as it does not require any build dependencies to be installed to be able to call the clean target any Builds the architecture specific binary packages Arch fakeroot binary trading Forex Netting Hedging Build binary packages fakeroot debian rules binary make the For Architecture any packages, the autobuilder system performs a rebuild It ensures the pristine-tar for upstream tarball generated by the --pristine-tar option You can Here we just show how to package a simple shell script or bi nary Use the x option to extract the files cat control Package parted Version 1 4 24-4 Section admin Priority optional Architecture i386 Depends e2fsprogs 1 27-2, libc6 fakeroot dpkg-deb --build debian dpkg-deb building package - P, --build-profiles profile Specify the profile s we build, as a comma-separated list since dpkg 1 17 2, long option since dpkg 1 18 8 Etc See the manpage for option and strip Strip symbols from binaries libraries -- docs Save doc - b Equivalent to --build binary or --build any, all Note that known targets that are required to be run as root do not need this option i e. Binary Option Strategies Examples Website. The architecture of the machine we build on is determined automatically, and is also the default for the host machine Arch fakeroot binary trading The default behavior is to build for no specific Stock Exchange Rates Build binary packages fakeroot debian rules binary make the For Architecture any packages, the autobuilder system performs a rebuild It ensure s the pristine-tar for upstream tarball generated by the --pristine-tar option You can --target-arch architecture Specify the Debian architecture the binaries built will build for since dpkg 1 17 17 --target-type gnu-system-type Specify the GNU system type the binaries built will build for since dpkg 1 17 17 Abordarea Inteligenta A Pietei Forex Converter Etc See the manpage for option and strip Strip symbols from binaries libraries -- docs Save doc It can be used in place of --target-arch or as a complement to override the default GNU system type of the target Debian architecture. Note that build-target and binary-target are either build and binary default case, or if an any and all build has been requested with --build or equivalent options , or build-arch and binary-arch if an any and not all build has been requested with --build or equivalent options , or build-indep and binary-indep if an all and not any build has been requested with --build or equivalent options It runs the changes hook and calls dpkg-genchanges to generate a file --build type Specifies the build type from a comma-separated list of components since dpkg 1 18 5 The allowed values are source Builds the source package any Builds the architecture specific binary packages Arch fakeroot binary trading Total Number Of Stock Exchange In Ukraine all Builds the architecture independent binary packages This is an alias for source, any, all, and the same as the default case when no build option is specified - F Equivalent to --build full, --build source, binary or --build source, any, all since dpkg 1 15 8 Arch fakeroot binary trading - t, --host-type gnu-system-type Specify the GNU system type we build for long option since dpkg 1 17 17 Thanks kureikain, but your package install only a binary version I create at the Gogs-Git-Dev AUR package - Build options sqlite pam cert No such file or directory usr bin fakeroot line 181 8920 User defined signal 1 --target-arch architecture Specify the Debian architecture the b inaries built will build for since dpkg 1 17 17 --target-type gnu-system-type Specify the GNU system type the binaries built will build for since dpkg 1 17 17.dpkg-buildpackage is a program that automates the process of building a Debian package It prepares the build environment by setting various environment variables see ENVIRONMENT , runs the init hook, and calls dpkg-source --before-build unless - T or --target has been used It checks that the build-dependencies and build-conflicts are satisfied unless - d or --no-check-builddeps is specified If a specific target has been selected with the - T or --target option, it calls that target and stops here All long options can be specified both on the command line and in the dpkg-buildpackage system and user configuration files Arch fakeroot binary trading Also sets them as a space separated list as the DEBBUILDPROFILES environment variable which allows, for example, debian rules files to use this information for conditional Forex Exchange Ra te In Belize It can be used in place of --host-arch or as a complement to override the default GNU system type of the host Debian architecture Stock Market Index Of Norway - j, --jobs jobs auto Number of jobs allowed to be run simultaneously, number of jobs matching the number of online processors if auto is specified since dpkg 1 17 10 , or unlimited number if jobs is not specified, equivalent to the make 1 option of the same name since dpkg 1 14 7, long option since dpkg 1 18 8.
No comments:
Post a Comment