Använda Devtools på Arch Linux

Paketet Devtools skapades ursprungligen för betrodda användare för att korrekt skapa paket för de officiella förråden. Det kan dock användas av vanliga användare också för att bygga AUR-paket, eller till och med modifierade officiella paket.

Se den här guiden för att förstå och använda AUR i allmänhet, inklusive för att få PKGBUILD. Det här dokumentet visar bara stegen som är specifika för Devtools, om det är den metod du väljer för att kompilera ett paket.

Devtools upprätthåller en separat ren Arch-installation, belägen i /var/lib/archbuild/<TARGET>/root, som bara innehåller paketgrupper baseoch base-devel. Om den här rena installationen inte finns skapas den automatiskt. Om den finns uppdaterar den automatiskt alla paket i den. När Devtools används för att bygga ett paket, börjar det med en kopia av den här rena installationen, installerar endast nödvändiga paket i kopian, kopierar källkoden till den, utför kompileringen och paketeringen i den och kopierar bara ut det resulterande paketet, i identisk form från vad som finns i de officiella arkiven.

Det finns fördelar med Devtools framför att köra makepkgdirekt. En fördel är att base-develoch andra paket som krävs för att kompilera, men inte köra, paketet du skapar aldrig hamnar i ditt huvudsystem. Det är färre paket att behöva regelbundet uppgradera, och ha oro över. Även om det i första hand är en fördel för underhållare av Arch-paket, avslöjar denna process lätt när a PKGBUILDär felaktig, till exempel om ett beroende missas från att listas som underhållaren råkar ha redan installerat i deras huvudsystem. Du kan också använda en maskin som är snabbare på att bygga paket och kopiera det resulterande paketet till en långsammare maskin som kör det, utan att förorena byggmaskinens installation.

Den största nackdelen är att den rena roten alltid finns där, tar cirka 800 MB, och vanligtvis tar en enda kopia mer utrymme. Observera att om du /var/lib/archbuild/använder Btrfs börjar kopian av den rena roten vara en Btrfs ögonblicksbild, så dessa filer tar inte dubbelt så mycket utrymme. Den rena roten hålls alltid där för att undvika att installera om den varje gång ett paket görs.

Kompilera med hjälp av Devtools

Installera Devtools:

# pacman -S devtools

För att bygga ett paket innehåller Devtools archbuild, men du kör inte detta direkt. Den innehåller också symboliska länkar för {extra, gnome-unstable, kde-unstable, staging, testing}-x86_64-build. Symbollänken som används för att köra den kommer att inspekteras av archbuild, för att avgöra vilket mål du vill att den ska använda. Det kan köras för att använda dessa instabila/staging/testande arkiv, som kan ha nyare versioner än de som har släppts till de officiella arkiven. För att använda de officiella arkiven för icke-AUR-paket, i katalogen med PKGBUILD, till exempel katalogen gjord av git clone, kör följande:

$ extra-x86_64-build

Obs: Resten av den här guiden kommer helt enkelt att hänvisa till extra-x86_64-build.

När den är klar kommer följande resultat att bli:

  • /var/lib/archbuild/extra-x86_64/root- En ren chroot , som är en uppdaterad installation med endast paketgrupper baseoch base-devel.
  • /var/lib/archbuild/extra-x86_64/<USERNAME>- Det här kommer att innehålla en build-chroot . Detta är en kopia av den rena chrooten med eventuella beroenden som krävs för att bygga eller köra paketet som byggs, såväl som dess källkod, kompileringsresultat och paket.
  • Katalogen du befinner dig i kommer att innehålla paket- och byggloggfilerna, samt eventuell nedladdad källkod.

I slutet kanske du märker " Checking PKGBUILD" och " Checking <PKGNAME>-<PKGVER>-<PKGREL>-<ARCH>.pkg.tar.xz". Alla rader efter dessa matas ut från namcap, som automatiskt letar efter problem som felaktiga PKGBUILDfiler, inkluderade beroenden som paketet inte verkar använda, beroenden som inte ingår som paketet verkar använda och mer. Falska positiva resultat genereras ofta av namcap, men är ett utmärkt verktyg för att ge saker att undersöka. Om ditt paket fungerar korrekt är det inte en bra idé att varna underhållaren om namcaputdata, såvida du inte har tittat på det och verifierat att en ändring bör göras.

Du kan använda för pacmanatt installera paketet, vilket kommer att installera alla beroenden som krävs för att köra paketet så länge de finns i officiella arkiv eller ett lokalt arkiv.

Använd antingen ett lokalt arkiv enligt beskrivningen här eller installera filen direkt:

# pacman -U <PKGNAME>-<PKGVER>-<PKGREL>-<ARCH>.pkg.tar.xz

Om du skulle köra extra-x86_64-buildigen, just nu, eller när som helst senare med detta eller ett annat paket, kommer det att uppdatera den rena chrooten om det behövs, ta bort build-chrooten och göra den till en ny kopia av den rena chrooten och utföra samma process. Om din katalog fortfarande har källkoden nedladdad från förra gången, kommer den att använda den. Om paketet är ett utvecklings-AUR-paket kommer det att dra nya ändringar snarare än att klona om.

Internt extra-x86_64-buildkörs makechrootpkg, som internt anropar makepkg. Alternativen för extra-x86_64-buildinkluderar följande:

  • -c: Rengör chroots genom att ta bort och återskapa hela /var/lib/archbuild/extra-x86_64/katalogen, inklusive dess rena chroot och alla build chroot-kataloger. Detta behövs sällan, bara om den rena chrooten blir skadad eller om Devtools uppgraderas på ett sätt som bryter bakåtkompatibiliteten.
  • -r <dir>: Använd en annan katalog än för /var/lib/archbuild/extra-x86_64/att innehålla chroots.

Eventuella argument till extra-x86_64-buildefter --skickas till makechrootpkg, när den internt använder den. Flera argument skickas alltid automatiskt från extra-x86_64-buildtill makechrootpkg. Dessa automatiska argument är -r <value given to extra-x86_64-build -r option if given, /var/lib/archbuild/extra-x86_64 otherwise> -c -n. De ber om makechrootpkgatt ta bort bygg-chroot och göra den till en ny kopia av den rena chroot, och att köra namcappå paketet om det lyckas bygga. Ett vanligt använda alternativ som kan skickas till makechrootpkgär -l <copy name>. Detta är katalognamnet för att ge build-chroot, istället för <USERNAME>, vilket är användbart för att underhålla flera kopior eller kompilera flera paket samtidigt.

Eventuella argument till makechrootpkgefter --skickas till makepkg, när det internt använder det för att bygga paketet. Första gången makepkgkörs av makechrootpkggörs det med sina egna oföränderliga alternativ, för att ladda ner källfiler, om det behövs, och utföra integritetskontroller; sålunda kan ingenting vidarebefordras på denna körning. Det körs makepkgen andra gång för att bygga paketet, och skickar alltid automatiskt makepkgargument --syncdeps --noconfirm --log --holdver --skipintegsom talar om för makepkgatt, inom build-chroot, automatiskt installera saknade beroenden som krävs för att bygga och använda paketet, att inte be om bekräftelse under pacman, logga byggprocessen till text filer utöver stdout, uppdatera inte källkoden om du är i ett versionskontrollsystem och utför inte kontroller av källfilsverifiering.

Du kan koppla ihop dessa genom att använda följande formulär:

$ extra-x86_64-build <DEVTOOLS-OPTIONS> -- <MAKECHROOTPKG-OPTIONS> -- <MAKEPKG-OPTIONS>

Observera att det /var/lib/archbuildkan behandlas som om det vore en tillfällig katalog. Om du har flera Vultr-hårddiskar är det värt att montera ett RAID0 (stripe) filsystem här. Om du har mycket RAM-minne kan du också montera ett RAM-stödt filsystem som tmpfs. Efter att ett paket har byggts kopieras det ut till katalogen du sprang extra-x86_64-buildfrån och om du ville kan du vid det här laget ta bort /var/lib/archbuild. Nästa körning skulle vara långsammare, eftersom den skulle behöva göra en ny ren rot. Alternativt kan du ta bort för /var/lib/archbuild/<USERNAME>att återta extra utrymme från build-chroot innan det automatiskt raderas vid nästa körning av Devtools. Så även om du hade ett RAID0-filsystem monterat här misslyckas, skulle det mesta du skulle förlora vara en kompilering på gång.

Devtools konfigurationsfiler

Det finns några detaljer att notera med Devtools konfigurationsfiler. De finns i /usr/share/devtools/, såsom makepkg-x86_64.confoch pacman-extra.conf:

  • För /etcfiler som makepkg.confoch pacman.confkan du säkert redigera dem på plats, och när paketet uppgraderas kommer det inte att skriva över dina ändringar. Snarare sparas de nya konfigurationsfilerna (om de ändrades från den tidigare versionen) som slutar med .pacnew. Däremot finns Devtools konfigurationsfiler /usr/share/som inte är avsedda att redigeras av användaren, så när Devtools uppgraderas kommer det att helt skriva över dina ändringar av dessa filer utan att varna dig. En ändring av detta beteende har föreslagits och avvisats, eftersom detta hjälper till att säkerställa att paket skickas till de officiella arkiven, alla med samma kompileringsinställningar.
  • Värdet för MAKEFLAGS, PACKAGER, och {SRC,SRCPKG,PKG,LOG}DESTtas från /etc/makepkg.confsnarare än /usr/share/devtools/makepkg-x86_64.conf.

Lokalt förråd

Om du bygger paket som har beroenden av andra paket som du har byggt, måste du använda ett lokalt arkiv, så att när det pacmankörs inom build-chrooten hittar det beroenden.

För att ställa in ett lokalt arkiv, se avsnittet "Lokalt arkiv" i den här guiden .

Skapa ett anpassat mål:

# ln -s archbuild /usr/bin/custom-x86_64-build
# cp /usr/share/devtools/pacman-{extra,custom}.conf

Redigera /usr/share/devtools/pacman-custom.confoch lägg till följande i slutet:

[archLocalRepo]
SigLevel = Optional TrustAll
Server = file:///archLocalRepo

Redigera /etc/pacman.confoch lägg till följande. Detta tvingar katalogen att bindas monterad i chroot:

CacheDir    = /var/cache/pacman/pkg/ /archLocalRepo/

Nu, istället för att använda, extra-x86_64-buildanvänd detta:

$ custom-x86_64-build

Om du alltid vill använda det anpassade målet kan du ta bort /var/lib/archbuild/extra-x86_64-build/katalogen om den finns, eftersom chroots nu kommer att finnas i /var/lib/archbuild/custom-x86_64-build/.

Paketera snabbare

Notera att aktivera trådad paketering innebär att /usr/share/devtoolskonfigurationsfilerna redigeras , vilket inte stöds officiellt, så du måste utföra denna ändring varje gång Devtools uppgraderas.

Devtools kombinerar ett helt paket till ett arkivformat. Som standard .tar.xzanvänder den en enda tråd för xzkomprimeringen.

På system med flera processorer kan du tillåta xzatt använda flera trådar genom att redigera /usr/share/devtools/makepkg-x86_64.confoch ändra följande rad:

COMPRESSXZ=(xz -c -z -)

För att tillåta så många trådar som du har virtuella kärnor:

COMPRESSXZ=(xz -c -z - --threads=0)

För att tillåta användning av flera virtuella kärnor, men inte alla, för att minska påverkan på systemets övergripande prestanda, lägg till ett specifikt antal:

COMPRESSXZ=(xz -c -z - --threads=21)

Om du anger fler trådar än antalet virtuella kärnor du har minskar prestandan.

Om du inte har något emot att paketfilen är (potentiellt mycket) större, inaktivera komprimering genom att redigera /usr/share/devtools/makepkg-x86_64.confoch ändra följande rad:

PKGEXT='.pkg.tar.xz'

Ändra det så att det ser ut så här:

PKGEXT='.pkg.tar'

Installerar 2019 Arch Linux på en Vultr-server

Installerar 2019 Arch Linux på en Vultr-server

Inledning Arch Linux har en mindre, men fortfarande stark, efterföljare än mer populära distributioner. Dess filosofi är helt annorlunda, med fördelar en

Installera Arch Linux på en Vultr-server

Installera Arch Linux på en Vultr-server

Vultr ger dig den fantastiska funktionaliteten att låta dig använda din egen anpassade bild förutom deras utmärkta mallar, vilket gör att du kan köra

Använda Devtools på Arch Linux

Använda Devtools på Arch Linux

Paketet Devtools skapades ursprungligen för betrodda användare för att korrekt skapa paket för de officiella förråden. Det kan dock användas av vanliga användare

Använder Makepkg på Arch Linux

Använder Makepkg på Arch Linux

Om du använder makepkg direkt, förorenar det ditt system något. Bas-devel-paketgruppen måste installeras. På detta sätt, som standard, behövs endast beroenden

Hur man installerar PostgreSQL 11.1 på Arch Linux

Hur man installerar PostgreSQL 11.1 på Arch Linux

Förutsättningar En Vultr-server som kör uppdaterad Arch Linux (se den här artikeln.) Sudo-åtkomst. Kommandon som krävs för att köras som root har prefixet # och ett

Hur man använder HTTPS på Arch Linux Webserver

Hur man använder HTTPS på Arch Linux Webserver

Förutsättningar En Vultr-server som kör uppdaterad Arch Linux (se den här artikeln.) En webbserver som körs, antingen Apache eller Nginx Sudo-åtkomstkommandon krävs t

Installera Arch Linux med Btrfs Snapshotting

Installera Arch Linux med Btrfs Snapshotting

Förord ​​Arch Linux är en allmän distribution välkänd för sin banbrytande teknologi och flexibla konfiguration. Med Btrfs ögonblicksbilder kan vi ta

Bygga paket på Arch Linux (inklusive AUR)

Bygga paket på Arch Linux (inklusive AUR)

På Arch Linux är de officiella förråden: kärna, extra och community. Dessa paket är redan kompilerade och de installeras via pacman. För th

Installera Spigot Server på Arch Linux

Installera Spigot Server på Arch Linux

Denna handledning förklarar hur man ställer in en Minecraft-server med Spigot på Arch Linux. Denna handledning förutsätter att du är en normal användare (inte-root) och hav

Hur man installerar Nginx 1.14 på Arch Linux

Hur man installerar Nginx 1.14 på Arch Linux

Förutsättningar En Vultr-server som kör uppdaterad Arch Linux (se den här artikeln.) Sudo-åtkomst. Kommandon som krävs för att köras som root har # prefix. Th

Hur man installerar Apache 2.4 på Arch Linux

Hur man installerar Apache 2.4 på Arch Linux

Förutsättningar En Vultr-server som kör uppdaterad Arch Linux. Se den här guiden för mer information. Sudo tillgång. Kommandon som krävs för att köras som root ar

Hur man installerar Python 3.7 på en Arch Linux-webbserver

Hur man installerar Python 3.7 på en Arch Linux-webbserver

Förutsättningar En Vultr-server som kör uppdaterad Arch Linux (se den här artikeln.) En webbserver som körs, antingen Apache eller Nginx Sudo-åtkomst: Kommandon kräver

Hur man installerar Perl 5.28 på en Arch Linux-webbserver

Hur man installerar Perl 5.28 på en Arch Linux-webbserver

Förutsättningar En Vultr-server som kör uppdaterad Arch Linux (se den här artikeln.) En webbserver som körs, antingen Apache eller Nginx Sudo-åtkomst: Kommandon kräver

Hur man installerar PHP 7.3 på en Arch Linux-webbserver

Hur man installerar PHP 7.3 på en Arch Linux-webbserver

Förutsättningar En Vultr-server som kör uppdaterad Arch Linux (se den här artikeln.) En webbserver som körs, antingen Apache- eller Nginx Sudo-åtkomst. Kommandon kräver

Installera Mumble Server på Arch Linux

Installera Mumble Server på Arch Linux

Denna handledning förklarar hur man ställer in en Mumble-server (Murmur) på Arch Linux. Allt som görs i denna handledning görs som rotanvändare. Installation en

Konfigurera en Counter-Strike: Global Offensive (CSGO) Server på Arch Linux

Konfigurera en Counter-Strike: Global Offensive (CSGO) Server på Arch Linux

Denna handledning förklarar hur man ställer in en Counter-Strike: Global Offensive-server på Arch Linux. Den här handledningen förutsätter att du har loggat in med standardanvändning

Konfigurera en Team Fortress 2-server på Arch Linux

Konfigurera en Team Fortress 2-server på Arch Linux

Denna handledning förklarar hur man ställer in en Team Fortress 2-server på Arch Linux. Jag antar att du är inloggad med ett icke-root användarkonto som har sudo-åtkomst

Hur man installerar MariaDB 10.3 eller MySQL 8.0 på Arch Linux

Hur man installerar MariaDB 10.3 eller MySQL 8.0 på Arch Linux

Förutsättningar En Vultr-server som kör uppdaterad Arch Linux (se den här artikeln.) Sudo-åtkomst: Kommandon som krävs för att köras som root har prefixet #, och en

Hur man installerar MongoDB 4.0 på Arch Linux

Hur man installerar MongoDB 4.0 på Arch Linux

Förutsättningar En Vultr-server som kör uppdaterad Arch Linux (se den här artikeln) Sudo-åtkomst: Kommandon som krävs för att köras som root har prefixet #, och en

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Artificiell intelligens är inte i framtiden, det är här i nuet I den här bloggen Läs hur Artificiell intelligens-applikationer har påverkat olika sektorer.

DDOS-attacker: En kort översikt

DDOS-attacker: En kort översikt

Är du också ett offer för DDOS-attacker och förvirrad över de förebyggande metoderna? Läs den här artikeln för att lösa dina frågor.

Har du någonsin undrat hur hackare tjänar pengar?

Har du någonsin undrat hur hackare tjänar pengar?

Du kanske har hört att hackare tjänar mycket pengar, men har du någonsin undrat hur de tjänar den typen av pengar? låt oss diskutera.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Vill du se revolutionerande uppfinningar av Google och hur dessa uppfinningar förändrade livet för varje människa idag? Läs sedan till bloggen för att se uppfinningar av Google.

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Konceptet med att självkörande bilar ska ut på vägarna med hjälp av artificiell intelligens är en dröm vi har ett tag nu. Men trots flera löften finns de ingenstans att se. Läs den här bloggen för att lära dig mer...

Technological Singularity: A Distant Future of Human Civilization?

Technological Singularity: A Distant Future of Human Civilization?

När vetenskapen utvecklas i snabb takt och tar över en hel del av våra ansträngningar, ökar också riskerna för att utsätta oss för en oförklarlig singularitet. Läs, vad singularitet kan betyda för oss.

Utveckling av datalagring – Infographic

Utveckling av datalagring – Infographic

Lagringsmetoderna för data har utvecklats kan vara sedan födelsen av data. Den här bloggen tar upp utvecklingen av datalagring på basis av en infografik.

Funktioner för Big Data Reference Architecture Layers

Funktioner för Big Data Reference Architecture Layers

Läs bloggen för att känna till olika lager i Big Data Architecture och deras funktionaliteter på enklaste sätt.

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

I denna digitala värld har smarta hemenheter blivit en avgörande del av livet. Här är några fantastiska fördelar med smarta hemenheter om hur de gör vårt liv värt att leva och enklare.

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

Nyligen släppte Apple macOS Catalina 10.15.4, en tilläggsuppdatering för att åtgärda problem, men det verkar som om uppdateringen orsakar fler problem som leder till att mac-datorer blir murade. Läs den här artikeln för att lära dig mer