Brug af Devtools på Arch Linux

Pakken Devtools blev oprindeligt lavet til betroede brugere til korrekt at oprette pakker til de officielle repositories. Det kan dog også bruges af almindelige brugere til at bygge AUR-pakker eller endda modificerede officielle pakker.

Se denne vejledning for at forstå og bruge AUR generelt, herunder opnåelse af PKGBUILD. Dette dokument viser kun de trin, der er specifikke for Devtools, hvis det er den metode, du vælger til at kompilere en pakke.

Devtools vedligeholder en separat ren Arch-installation, placeret i /var/lib/archbuild/<TARGET>/root, som kun indeholder pakkegrupper baseog base-devel. Hvis denne rene installation ikke findes, opretter den den automatisk. Hvis den eksisterer, opdaterer den automatisk alle pakker i den. Når Devtools bruges til at bygge en pakke, starter den med en kopi af denne rene installation, installerer kun nødvendige pakker i kopien, kopierer kildekoden ind i den, udfører kompilering og pakning i den og kopierer kun den resulterende pakke, i identisk form fra hvad der findes i de officielle depoter.

Der er fordele ved Devtools frem for at køre makepkgdirekte. En fordel er, at base-develog andre pakker, der er nødvendige for at kompilere, men ikke køre, den pakke, du laver, aldrig ender i dit hovedsystem. Det er færre pakker at skulle periodisk opgradere og have bekymringer om. Selvom det primært er en fordel for Arch-pakkevedligeholdere, afslører denne proces nemt, når a PKGBUILDer forkert, såsom hvis en afhængighed savnes fra at blive opført, som vedligeholderen tilfældigvis allerede har installeret i deres hovedsystem. Du kan også bruge en maskine, der er hurtigere til at bygge pakker, og kopiere den resulterende pakke til en langsommere maskine, der vil køre den, uden at forurene byggemaskinens installation.

Den største ulempe er, at den rene rod altid er der, tager omkring 800 MB, og normalt tager en enkelt kopi mere plads. Bemærk, hvis du /var/lib/archbuild/bruger Btrfs, starter kopien af ​​den rene rod med at være et Btrfs-øjebliksbillede, så disse filer tager ikke dobbelt plads. Den rene rod opbevares altid der for at undgå at geninstallere den, hver gang en pakke laves.

Kompilering ved hjælp af Devtools

Installer Devtools:

# pacman -S devtools

For at bygge en pakke inkluderer Devtools archbuild, men du kører ikke denne direkte. Det inkluderer også symbolske links til {extra, gnome-unstable, kde-unstable, staging, testing}-x86_64-build. Symlinket bliver brugt til at køre det vil blive inspiceret af archbuild, for at bestemme hvilket mål du vil have det til at bruge. Det kan køres for at bruge disse ustabile/iscenesættelse/testdepoter, som kan have nyere versioner end de er blevet frigivet til de officielle lagre. For at bruge de officielle depoter til ikke-AUR-pakker skal du køre følgende i mappen med PKGBUILD, for eksempel mappen lavet af git clone:

$ extra-x86_64-build

Bemærk: Resten af ​​denne vejledning vil blot henvise til extra-x86_64-build.

Når den er færdig med at køre, vil følgende være resultaterne:

  • /var/lib/archbuild/extra-x86_64/root- En ren chroot , som er en opdateret installation med kun pakkegrupper baseog base-devel.
  • /var/lib/archbuild/extra-x86_64/<USERNAME>- Dette vil indeholde en build-chroot . Dette er en kopi af den rene chroot med eventuelle afhængigheder, der kræves for at bygge eller køre den pakke, der bygges, såvel som dens kildekode, kompileringsresultater og pakke.
  • Den mappe, du befinder dig i, vil indeholde pakken og build-logfilerne samt enhver downloadet kildekode.

I slutningen vil du muligvis bemærke " Checking PKGBUILD" og " Checking <PKGNAME>-<PKGVER>-<PKGREL>-<ARCH>.pkg.tar.xz". Eventuelle linjer efter disse udsendes fra namcap, som automatisk søger efter problemer som misdannede PKGBUILDfiler, inkluderede afhængigheder, som pakken ikke ser ud til at bruge, afhængigheder, der ikke er inkluderet, som pakken ser ud til at bruge, og mere. Falske positiver genereres ofte af namcap, men er et fantastisk værktøj til at give ting at undersøge. Hvis din pakke fungerer korrekt, er det ikke en god idé at advare vedligeholderen om namcapoutput, medmindre du har kigget på det og bekræftet, at der skal foretages en ændring.

Du kan bruge pacmantil at installere pakken, som vil installere alle afhængigheder, der kræves for at køre pakken, så længe de er i officielle arkiver eller et lokalt arkiv.

Brug enten et lokalt lager som forklaret her , eller installer filen direkte:

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

Hvis du skulle køre extra-x86_64-buildigen, lige nu, eller når som helst senere med denne eller en anden pakke, vil den opdatere den rene chroot, hvis det er nødvendigt, slette build-chrooten og gøre den til en ny kopi af den rene chroot og udføre den samme proces. Hvis din mappe stadig har kildekoden downloadet fra sidste gang, vil den bruge den. Hvis pakken er en udviklingsorienteret AUR-pakke, vil den trække nye ændringer frem for at klone igen.

Internt extra-x86_64-buildkører makechrootpkg, som internt kalder makepkg. Mulighederne for extra-x86_64-buildomfatter følgende:

  • -c: Rens chroots ved at fjerne og genskabe hele /var/lib/archbuild/extra-x86_64/mappen, inklusive dens rene chroot og alle build chroot mapper. Dette er sjældent nødvendigt, kun hvis den rene chroot bliver ødelagt, eller hvis Devtools er opgraderet på en måde, der bryder bagudkompatibiliteten.
  • -r <dir>: Brug en anden mappe end /var/lib/archbuild/extra-x86_64/til at indeholde chroots.

Eventuelle argumenter til extra-x86_64-buildefter --sendes til makechrootpkg, når det internt bruger det. Flere argumenter overføres altid automatisk fra extra-x86_64-buildtil makechrootpkg. Disse automatiske argumenter er -r <value given to extra-x86_64-build -r option if given, /var/lib/archbuild/extra-x86_64 otherwise> -c -n. De beder om makechrootpkgat fjerne build-chroot og gøre den til en ny kopi af den rene chroot, og at køre namcappå pakken, hvis den bygger med succes. En almindeligt brugt mulighed, der kan videregives til, makechrootpkger -l <copy name>. Dette er mappenavnet til at give build-chroot i stedet for <USERNAME>, hvilket er nyttigt til at vedligeholde flere kopier eller kompilere flere pakker på samme tid.

Eventuelle argumenter til makechrootpkgefter --sendes til makepkg, når det internt bruger det til at bygge pakken. Den første gang makepkgkøres af makechrootpkg, det gøres med sine egne uforanderlige muligheder, for at downloade kildefiler, hvis det er nødvendigt, og udføre integritetstjek; derfor kan intet videresendes på denne kørsel. Den kører makepkgen anden gang for at bygge pakken, og sender altid automatisk makepkgargumenter, --syncdeps --noconfirm --log --holdver --skipintegsom fortæller makepkg, at man inden for build-chrooten automatisk installerer manglende afhængigheder, der kræves for at bygge og bruge pakken, ikke at bede om bekræftelse under pacman, logge byggeprocessen til tekst filer ud over stdout, opdater ikke kildekoden, hvis du er i et versionskontrolsystem, og udfør ikke kontrol af kildefilen.

Du kan kæde disse sammen ved at bruge følgende formular:

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

Bemærk, at det /var/lib/archbuildkan behandles som om det var en midlertidig mappe. Hvis du har flere Vultr-harddiske, er det umagen værd at montere et RAID0 (stribe) filsystem her. Hvis du har meget RAM, kan du også montere et RAM-understøttet filsystem som tmpfs. Efter en pakke er bygget, kopieres den ud i den mappe, du løb extra-x86_64-buildfra, og hvis du ville, kunne du på dette tidspunkt slette /var/lib/archbuild. Den næste kørsel ville være langsommere, fordi den skulle lave en ny ren rod. Alternativt kan du slette for /var/lib/archbuild/<USERNAME>at genvinde ekstra plads fra build-chroot, før den automatisk slettes ved næste kørsel af Devtools. Så selvom du havde et RAID0-filsystem monteret her mislykkedes, ville det mest du ville miste være en kompilering i gang.

Devtools konfigurationsfiler

Der er et par detaljer at bemærke med Devtools konfigurationsfiler. De er placeret i /usr/share/devtools/, såsom makepkg-x86_64.confog pacman-extra.conf:

  • For /etcfiler som makepkg.confog pacman.conf, kan du sikkert redigere dem på plads, og når pakken er opgraderet, vil den ikke overskrive dine ændringer. Det vil snarere gemme de nye konfigurationsfiler (hvis de er ændret fra den tidligere version), der slutter med .pacnew. Devtools konfigurationsfiler er /usr/share/dog ikke beregnet til at blive brugerredigeret, så når Devtools opgraderes, vil det fuldstændigt overskrive dine ændringer til disse filer uden at advare dig. En ændring af denne adfærd er blevet foreslået og afvist, fordi dette hjælper med at sikre, at pakker sendes til de officielle lagre, alle med de samme kompileringsindstillinger.
  • Værdien for MAKEFLAGS, PACKAGER, og {SRC,SRCPKG,PKG,LOG}DESTer taget fra /etc/makepkg.confsnarere end /usr/share/devtools/makepkg-x86_64.conf.

Lokalt depot

Hvis du bygger pakker, der har afhængigheder til andre pakker, du har bygget, skal du bruge et lokalt lager, så pacmandet finder afhængighederne , når det kører i build-chrooten.

Se afsnittet "Lokalt lager" i denne vejledning for at konfigurere et lokalt lager .

Opret et tilpasset mål:

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

Rediger /usr/share/devtools/pacman-custom.conf, og tilføj følgende til sidst:

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

Rediger /etc/pacman.conf, og tilføj følgende. Dette tvinger mappen til at blive bind monteret i chroot:

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

extra-x86_64-buildBrug nu dette i stedet for at bruge:

$ custom-x86_64-build

Hvis du altid vil bruge det tilpassede mål, kan du slette /var/lib/archbuild/extra-x86_64-build/mappen, hvis den findes, da chroots nu vil være i /var/lib/archbuild/custom-x86_64-build/.

Pakke hurtigere

Bemærk, at aktivering af threaded packaging involverer redigering af /usr/share/devtoolskonfigurationsfilerne, som ikke er officielt understøttet, så du bliver nødt til at udføre denne ændring, hver gang Devtools opgraderes.

Devtools kombinerer en hel pakke til et arkivformat. Som standard .tar.xzbruger den en enkelt tråd til xzkomprimeringen.

På multi-CPU-systemer kan du tillade xzat bruge flere tråde ved at redigere /usr/share/devtools/makepkg-x86_64.confog ændre følgende linje:

COMPRESSXZ=(xz -c -z -)

For at tillade så mange tråde, som du har virtuelle kerner:

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

For at tillade brug af flere virtuelle kerner, men ikke dem alle, for at reducere indvirkningen på den samlede systemydelse, skal du tilføje et specifikt tal:

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

Angivelse af flere tråde end antallet af virtuelle kerner, du har, vil reducere ydeevnen.

Hvis du ikke har noget imod, at pakkefilen er (potentielt meget) større, skal du deaktivere komprimering ved at redigere /usr/share/devtools/makepkg-x86_64.confog ændre følgende linje:

PKGEXT='.pkg.tar.xz'

Skift det til at se sådan ud:

PKGEXT='.pkg.tar'

Installation af 2019 Arch Linux på en Vultr-server

Installation af 2019 Arch Linux på en Vultr-server

Introduktion Arch Linux har en mindre, men stadig stærk, følge end mere populære distributioner. Dens filosofi er helt anderledes, med fordele en

Installation af Arch Linux på en Vultr-server

Installation af Arch Linux på en Vultr-server

Vultr giver dig den fantastiske funktionalitet ved at lade dig bruge dit eget brugerdefinerede billede ud over deres fremragende skabeloner, som giver dig mulighed for at køre

Brug af Devtools på Arch Linux

Brug af Devtools på Arch Linux

Pakken Devtools blev oprindeligt lavet til betroede brugere til korrekt at oprette pakker til de officielle repositories. Det kan dog bruges af almindelige brugere

Brug af Makepkg på Arch Linux

Brug af Makepkg på Arch Linux

Hvis du bruger makepkg direkte, forurener det en del dit system. Base-devel-pakkegruppen skal installeres. På denne måde kræves der som standard kun afhængigheder

Sådan installeres PostgreSQL 11.1 på Arch Linux

Sådan installeres PostgreSQL 11.1 på Arch Linux

Forudsætninger En Vultr-server, der kører up to date Arch Linux (se denne artikel.) Sudo-adgang. Kommandoer, der kræves for at blive kørt som root, har # og én foran

Sådan bruges HTTPS på Arch Linux Webserver

Sådan bruges HTTPS på Arch Linux Webserver

Forudsætninger En Vultr-server, der kører opdateret Arch Linux (se denne artikel.) En kørende webserver, enten Apache eller Nginx Sudo-adgangskommandoer påkrævet t

Opbygning af pakker på Arch Linux (inklusive AUR)

Opbygning af pakker på Arch Linux (inklusive AUR)

På Arch Linux er de officielle depoter: kerne, ekstra og fællesskab. Disse pakker er allerede kompileret, og de er installeret gennem pacman. For th

Opsæt Spigot Server på Arch Linux

Opsæt Spigot Server på Arch Linux

Denne tutorial forklarer, hvordan man opsætter en Minecraft-server ved hjælp af Spigot på Arch Linux. Denne vejledning antager, at du er en normal bruger (ikke-root) og hav

Sådan installeres Nginx 1.14 på Arch Linux

Sådan installeres Nginx 1.14 på Arch Linux

Forudsætninger En Vultr-server, der kører up to date Arch Linux (se denne artikel.) Sudo-adgang. Kommandoer, der skal køres som root, har # foran. Th

Sådan installeres Apache 2.4 på Arch Linux

Sådan installeres Apache 2.4 på Arch Linux

Forudsætninger En Vultr-server, der kører up to date Arch Linux. Se denne vejledning for mere information. Sudo adgang. Kommandoer, der skal køres som root ar

Sådan installeres Python 3.7 på en Arch Linux-webserver

Sådan installeres Python 3.7 på en Arch Linux-webserver

Forudsætninger En Vultr-server, der kører up to date Arch Linux (se denne artikel.) En kørende webserver, enten Apache- eller Nginx Sudo-adgang: Kommandoer kræver

Installer Arch Linux med Btrfs Snapshotting

Installer Arch Linux med Btrfs Snapshotting

Forord Arch Linux er en distribution til generelle formål, der er kendt for sin avancerede teknologi og fleksible konfiguration. Med Btrfs snapshots kan vi tage

Sådan installeres Perl 5.28 på en Arch Linux-webserver

Sådan installeres Perl 5.28 på en Arch Linux-webserver

Forudsætninger En Vultr-server, der kører up to date Arch Linux (se denne artikel.) En kørende webserver, enten Apache- eller Nginx Sudo-adgang: Kommandoer kræver

Sådan installeres PHP 7.3 på en Arch Linux-webserver

Sådan installeres PHP 7.3 på en Arch Linux-webserver

Forudsætninger En Vultr-server, der kører up to date Arch Linux (se denne artikel.) En kørende webserver, enten Apache- eller Nginx Sudo-adgang. Kommandoer kræver

Opsæt Mumble Server på Arch Linux

Opsæt Mumble Server på Arch Linux

Denne vejledning forklarer, hvordan man opsætter en Mumble-server (Murmur) på Arch Linux. Alt, der udføres i denne tutorial, udføres som root-brugeren. Installation en

Konfigurer en Counter-Strike: Global Offensive (CSGO) server på Arch Linux

Konfigurer en Counter-Strike: Global Offensive (CSGO) server på Arch Linux

Denne vejledning forklarer, hvordan man opsætter en Counter-Strike: Global Offensive-server på Arch Linux. Denne vejledning forudsætter, at du er logget ind med en standardbrug

Konfigurer en Team Fortress 2-server på Arch Linux

Konfigurer en Team Fortress 2-server på Arch Linux

Denne vejledning forklarer, hvordan du opsætter en Team Fortress 2-server på Arch Linux. Jeg antager, at du er logget ind med en ikke-root brugerkonto, der har sudo-adgang

Sådan installeres MariaDB 10.3 eller MySQL 8.0 på Arch Linux

Sådan installeres MariaDB 10.3 eller MySQL 8.0 på Arch Linux

Forudsætninger En Vultr-server, der kører up to date Arch Linux (se denne artikel.) Sudo-adgang: Kommandoer, der kræves for at blive kørt som root, er foranstillet med #, og en

Sådan installeres MongoDB 4.0 på Arch Linux

Sådan installeres MongoDB 4.0 på Arch Linux

Forudsætninger En Vultr-server, der kører up to date Arch Linux (se denne artikel) Sudo-adgang: Kommandoer, der kræves for at blive kørt som root, er foranstillet med #, og en

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Kunstig intelligens er ikke i fremtiden, det er her lige i nuet I denne blog Læs, hvordan kunstig intelligens-applikationer har påvirket forskellige sektorer.

DDOS-angreb: et kort overblik

DDOS-angreb: et kort overblik

Er du også et offer for DDOS-angreb og forvirret over forebyggelsesmetoderne? Læs denne artikel for at løse dine spørgsmål.

Har du nogensinde spekuleret på, hvordan tjener hackere penge?

Har du nogensinde spekuleret på, hvordan tjener hackere penge?

Du har måske hørt, at hackere tjener mange penge, men har du nogensinde spekuleret på, hvordan tjener de den slags penge? lad os diskutere.

Revolutionære opfindelser fra Google, der vil gøre dit liv lettere.

Revolutionære opfindelser fra Google, der vil gøre dit liv lettere.

Vil du se revolutionerende opfindelser fra Google, og hvordan disse opfindelser ændrede livet for ethvert menneske i dag? Læs derefter til bloggen for at se opfindelser fra Google.

Fredag ​​Essential: Hvad skete der med AI-drevne biler?

Fredag ​​Essential: Hvad skete der med AI-drevne biler?

Konceptet med selvkørende biler til at køre på vejene ved hjælp af kunstig intelligens er en drøm, vi har haft i et stykke tid nu. Men på trods af flere løfter er de ingen steder at se. Læs denne blog for at lære mere...

Teknologisk singularitet: En fjern fremtid for menneskelig civilisation?

Teknologisk singularitet: En fjern fremtid for menneskelig civilisation?

Efterhånden som videnskaben udvikler sig i et hurtigt tempo og overtager en stor del af vores indsats, stiger risikoen for at udsætte os selv for en uforklarlig Singularitet. Læs, hvad singularitet kunne betyde for os.

Udvikling af datalagring – Infografik

Udvikling af datalagring – Infografik

Opbevaringsmetoderne for dataene har været under udvikling, kan være siden fødslen af ​​dataene. Denne blog dækker udviklingen af ​​datalagring på basis af en infografik.

Funktioner af Big Data Reference Architecture Layers

Funktioner af Big Data Reference Architecture Layers

Læs bloggen for at kende forskellige lag i Big Data-arkitekturen og deres funktionaliteter på den enkleste måde.

6 fantastiske fordele ved at have smarte hjemmeenheder i vores liv

6 fantastiske fordele ved at have smarte hjemmeenheder i vores liv

I denne digitalt drevne verden er smarte hjemmeenheder blevet en afgørende del af livet. Her er et par fantastiske fordele ved smarte hjemmeenheder om, hvordan de gør vores liv værd at leve og enklere.

macOS Catalina 10.15.4-tillægsopdatering forårsager flere problemer end at løse

macOS Catalina 10.15.4-tillægsopdatering forårsager flere problemer end at løse

For nylig udgav Apple macOS Catalina 10.15.4 en supplerende opdatering for at løse problemer, men det ser ud til, at opdateringen forårsager flere problemer, hvilket fører til mursten af ​​mac-maskiner. Læs denne artikel for at lære mere