Bruke Devtools på Arch Linux

Pakken Devtools ble opprinnelig laget for at Trusted Users skulle lage pakker for de offisielle depotene. Imidlertid kan den brukes av vanlige brukere også til å bygge AUR-pakker, eller til og med modifiserte offisielle pakker.

Se denne veiledningen for å forstå og bruke AUR generelt, inkludert innhenting av PKGBUILD. Dette dokumentet viser bare trinnene som er spesifikke for Devtools, hvis det er metoden du velger for å kompilere en pakke.

Devtools opprettholder en egen ren Arch-installasjon, som ligger i /var/lib/archbuild/<TARGET>/root, som kun inneholder pakkegrupper baseog base-devel. Hvis denne rene installasjonen ikke eksisterer, oppretter den den automatisk. Hvis den eksisterer, oppdaterer den automatisk alle pakker i den. Når Devtools brukes til å bygge en pakke, starter den med en kopi av denne rene installasjonen, installerer bare nødvendige pakker i kopien, kopierer kildekoden inn i den, utfører kompileringen og pakkingen i den, og kopierer bare ut den resulterende pakken, i identisk form fra det som finnes i de offisielle depotene.

Det er fordeler med Devtools fremfor å kjøre makepkgdirekte. En fordel er at base-develog andre pakker som er nødvendige for å kompilere, men ikke kjøre, pakken du lager aldri ender opp i hovedsystemet ditt. Det er færre pakker å måtte oppgradere med jevne mellomrom, og ha bekymringer om. Selv om det først og fremst er en fordel for Arch-pakkevedlikeholdere, avslører denne prosessen lett når a PKGBUILDer feil, for eksempel hvis en avhengighet mangler fra å bli oppført som vedlikeholderen tilfeldigvis allerede har installert i hovedsystemet. Du kan også bruke en maskin som er raskere til å bygge pakker, og kopiere den resulterende pakken til en tregere maskin som vil kjøre den, uten å forurense byggemaskinens installasjon.

Den største ulempen er at den rene roten alltid er der, tar omtrent 800 MB, og vanligvis tar en enkelt kopi mer plass. Merk at hvis du /var/lib/archbuild/bruker Btrfs, begynner kopien av den rene roten å være et Btrfs-øyeblikksbilde, så disse filene tar ikke dobbelt så mye plass. Den rene roten holdes alltid der for å unngå å installere den på nytt hver gang en pakke lages.

Kompilere ved hjelp av Devtools

Installer Devtools:

# pacman -S devtools

For å bygge en pakke inkluderer Devtools archbuild, men du kjører ikke dette direkte. Det inkluderer også symbolkoblinger av {extra, gnome-unstable, kde-unstable, staging, testing}-x86_64-build. Symlinken som brukes til å kjøre, vil bli inspisert av archbuild, for å finne ut hvilket mål du vil at den skal bruke. Det kan kjøres for å bruke disse ustabile/staging/testing-repositoriene, som kan ha nyere versjoner enn de som er utgitt til de offisielle repositoriene. For å bruke de offisielle depotene for ikke-AUR-pakker, i katalogen med PKGBUILD, for eksempel katalogen laget av git clone, kjør følgende:

$ extra-x86_64-build

Merk: Resten av denne veiledningen vil bare referere til extra-x86_64-build.

Etter at den er ferdig å kjøre, vil følgende være resultatene:

  • /var/lib/archbuild/extra-x86_64/root- En ren chroot , som er en oppdatert installasjon med kun pakkegrupper baseog base-devel.
  • /var/lib/archbuild/extra-x86_64/<USERNAME>- Dette vil inneholde en build-chroot . Dette er en kopi av den rene chrooten med eventuelle avhengigheter som kreves for å bygge eller kjøre pakken som bygges, så vel som kildekoden, kompileringsresultatene og pakken.
  • Katalogen du befinner deg i vil inneholde pakke- og byggeloggfilene, samt eventuell nedlastet kildekode.

På slutten kan du legge merke til " Checking PKGBUILD" og " Checking <PKGNAME>-<PKGVER>-<PKGREL>-<ARCH>.pkg.tar.xz". Eventuelle linjer etter disse sendes ut fra namcap, som automatisk ser etter problemer som misformede PKGBUILDfiler, inkluderte avhengigheter som pakken ikke ser ut til å bruke, avhengigheter som ikke er inkludert som pakken ser ut til å bruke, og mer. Falske positiver genereres ofte av namcap, men er et flott verktøy for å gi ting å undersøke. Hvis pakken din fungerer som den skal, er det ikke en god idé å varsle vedlikeholderen om namcaputdata, med mindre du har sett på den og bekreftet at en endring bør gjøres.

Du kan bruke pacmantil å installere pakken, som vil installere alle avhengigheter som kreves for å kjøre pakken så lenge de er i offisielle depoter eller et lokalt depot.

Bruk enten et lokalt arkiv som forklart her , eller installer filen direkte:

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

Hvis du skulle kjøre extra-x86_64-buildigjen, akkurat nå, eller når som helst senere med denne eller en annen pakke, vil den oppdatere den rene chrooten om nødvendig, slette build-chrooten og gjøre den til en ny kopi av den rene chrooten, og utføre den samme prosessen. Hvis katalogen din fortsatt har kildekoden lastet ned fra forrige gang, vil den bruke den. Hvis pakken er en utviklingsbasert AUR-pakke, vil den trekke nye endringer i stedet for å klone på nytt.

Internt extra-x86_64-buildkjører makechrootpkg, som kaller internt makepkg. Alternativene for extra-x86_64-buildinkluderer følgende:

  • -c: Rengjør chrootene ved å fjerne og gjenskape hele /var/lib/archbuild/extra-x86_64/katalogen, inkludert dens rene chroot og alle bygge chroot-kataloger. Dette er sjelden nødvendig, bare hvis den rene chroot blir ødelagt, eller hvis Devtools er oppgradert på en måte som bryter bakoverkompatibiliteten.
  • -r <dir>: Bruk en annen katalog enn /var/lib/archbuild/extra-x86_64/å inneholde chroots.

Eventuelle argumenter til extra-x86_64-buildetter --sendes til makechrootpkg, når den internt bruker den. Flere argumenter overføres alltid automatisk fra extra-x86_64-buildtil makechrootpkg. Disse automatiske argumentene er -r <value given to extra-x86_64-build -r option if given, /var/lib/archbuild/extra-x86_64 otherwise> -c -n. De ber om makechrootpkgå fjerne bygge-chroot og gjøre den til en ny kopi av den rene chroot, og å kjøre namcappå pakken hvis den bygger. Et ofte brukt alternativ som kan sendes til makechrootpkger -l <copy name>. Dette er katalognavnet for å gi build-chroot, i stedet for <USERNAME>, som er nyttig for å vedlikeholde flere kopier eller kompilere flere pakker samtidig.

Eventuelle argumenter til makechrootpkgetter --sendes til makepkg, når den internt bruker den til å bygge pakken. Den første gangen makepkgkjøres av makechrootpkg, det gjøres med sine egne uforanderlige alternativer, for å laste ned kildefiler, om nødvendig, og utføre integritetskontroller; dermed kan ingenting videresendes på denne kjøringen. Den kjører makepkgen gang til for å bygge pakken, og sender alltid makepkgargumenter --syncdeps --noconfirm --log --holdver --skipintegsom forteller at makepkgman, innenfor bygge-chroot, automatisk installerer manglende avhengigheter som kreves for å bygge og bruke pakken, ikke å be om bekreftelse under pacman, logge byggeprosessen til tekst filer i tillegg til stdout, ikke oppdater kildekoden hvis du er i et versjonskontrollsystem og ikke utfør kildefilbekreftelseskontroller.

Du kan lenke disse sammen ved å bruke følgende skjema:

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

Merk at det /var/lib/archbuildkan behandles som om det var en midlertidig katalog. Hvis du har flere Vultr-harddisker, er det verdt å montere et RAID0 (stripe) filsystem her. Hvis du har mye RAM, kan du også montere et RAM-støttet filsystem som tmpfs. Etter at en pakke er bygget, blir den kopiert ut i katalogen du løp extra-x86_64-buildfra, og hvis du ville, kan du på dette tidspunktet slette /var/lib/archbuild. Den neste kjøringen vil være tregere, fordi den må lage en ny ren rot. Alternativt kan du slette for /var/lib/archbuild/<USERNAME>å gjenvinne ekstra plass fra build-chroot før den automatisk slettes ved neste kjøring av Devtools. Så selv om du hadde et RAID0-filsystem montert her mislykkes, ville det meste du ville tapt være en kompilering i prosess.

Devtools konfigurasjonsfiler

Det er noen få detaljer å merke seg med Devtools konfigurasjonsfiler. De er plassert i /usr/share/devtools/, for eksempel makepkg-x86_64.confog pacman-extra.conf:

  • For /etcfiler som makepkg.confog pacman.conf, kan du trygt redigere dem på plass, og når pakken er oppgradert, vil den ikke overskrive endringene dine. I stedet vil den lagre de nye konfigurasjonsfilene (hvis de endret seg fra forrige versjon) som slutter med .pacnew. Imidlertid er Devtools konfigurasjonsfiler i /usr/share/som ikke er ment å bli brukerredigert, så når Devtools oppgraderes, vil den fullstendig overskrive endringene dine i disse filene uten å varsle deg. En endring av denne oppførselen har blitt foreslått og avvist, fordi dette bidrar til å sikre at pakker sendes til de offisielle depotene, alle med de samme kompileringsinnstillingene.
  • Verdien for MAKEFLAGS, PACKAGER, og {SRC,SRCPKG,PKG,LOG}DESTer hentet fra i /etc/makepkg.confstedet for /usr/share/devtools/makepkg-x86_64.conf.

Lokalt depot

Hvis du bygger pakker som har avhengigheter til andre pakker du har bygget, må du bruke et lokalt depot, slik at når det pacmankjøres i bygge-chrooten, finner det avhengighetene.

For å konfigurere et lokalt depot, se avsnittet "Lokalt depot" i denne veiledningen .

Opprett 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.confog legg til følgende på slutten:

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

Rediger /etc/pacman.confog legg til følgende. Dette tvinger katalogen til å binde montert i chrooten:

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

Nå, i stedet for å bruke, extra-x86_64-buildbruk dette:

$ custom-x86_64-build

Hvis du alltid vil bruke det tilpassede målet, kan du slette /var/lib/archbuild/extra-x86_64-build/katalogen hvis den eksisterer, da chrootene nå vil være i /var/lib/archbuild/custom-x86_64-build/.

Pakke raskere

Merk at du aktiverer gjenget pakking innebærer å redigere /usr/share/devtoolskonfigurasjonsfilene, som ikke støttes offisielt, så du må utføre denne endringen hver gang Devtools oppgraderes.

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

På multi CPU-systemer kan du tillate xzå bruke flere tråder ved å redigere /usr/share/devtools/makepkg-x86_64.conf, og endre følgende linje:

COMPRESSXZ=(xz -c -z -)

For å tillate så mange tråder som du har virtuelle kjerner:

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

For å tillate bruk av flere virtuelle kjerner, men ikke alle, for å redusere innvirkningen på den generelle systemytelsen, legg til et spesifikt tall:

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

Hvis du spesifiserer flere tråder enn antallet virtuelle kjerner du har, reduseres ytelsen.

Hvis du ikke har noe imot at pakkefilen er (potensielt mye) større, deaktiver komprimering ved å redigere /usr/share/devtools/makepkg-x86_64.conf, og endre følgende linje:

PKGEXT='.pkg.tar.xz'

Endre den slik at den ser slik ut:

PKGEXT='.pkg.tar'

Installerer 2019 Arch Linux på en Vultr-server

Installerer 2019 Arch Linux på en Vultr-server

Introduksjon Arch Linux har en mindre, men fortsatt sterk, følge enn mer populære distribusjoner. Filosofien er ganske annerledes, med fordeler en

Installere Arch Linux på en Vultr-server

Installere Arch Linux på en Vultr-server

Vultr gir deg den fantastiske funksjonaliteten til å la deg bruke ditt eget tilpassede bilde i tillegg til deres utmerkede maler, som lar deg kjøre

Bruke Devtools på Arch Linux

Bruke Devtools på Arch Linux

Pakken Devtools ble opprinnelig laget for at Trusted Users skulle lage pakker for de offisielle depotene. Den kan imidlertid brukes av vanlige brukere

Bruker Makepkg på Arch Linux

Bruker Makepkg på Arch Linux

Hvis du bruker makepkg direkte, forurenser det systemet ditt noe. Base-devel-pakkegruppen må være installert. På denne måten er det som standard kun nødvendig med avhengigheter

Slik installerer du PostgreSQL 11.1 på Arch Linux

Slik installerer du PostgreSQL 11.1 på Arch Linux

Forutsetninger En Vultr-server som kjører oppdatert Arch Linux (se denne artikkelen.) Sudo-tilgang. Kommandoer som kreves for å kjøres som root er prefikset av #, og én

Hvordan bruke HTTPS på Arch Linux Webserver

Hvordan bruke HTTPS på Arch Linux Webserver

Forutsetninger En Vultr-server som kjører oppdatert Arch Linux (se denne artikkelen.) En kjørende webserver, enten Apache eller Nginx Sudo-tilgangskommandoer kreves t

Installer Arch Linux med Btrfs Snapshotting

Installer Arch Linux med Btrfs Snapshotting

Forord Arch Linux er en generell distribusjon kjent for sin banebrytende teknologi og fleksible konfigurasjon. Med Btrfs-øyeblikksbilder kan vi ta

Bygge pakker på Arch Linux (inkludert AUR)

Bygge pakker på Arch Linux (inkludert AUR)

På Arch Linux er de offisielle depotene: kjerne, ekstra og fellesskap. Disse pakkene er allerede kompilert, og de er installert gjennom pacman. For th

Sett opp Spigot Server på Arch Linux

Sett opp Spigot Server på Arch Linux

Denne opplæringen forklarer hvordan du setter opp en Minecraft-server ved å bruke Spigot på Arch Linux. Denne opplæringen forutsetter at du er en vanlig bruker (ikke-root) og har

Slik installerer du Nginx 1.14 på Arch Linux

Slik installerer du Nginx 1.14 på Arch Linux

Forutsetninger En Vultr-server som kjører oppdatert Arch Linux (se denne artikkelen.) Sudo-tilgang. Kommandoer som kreves for å kjøres som root, har # foran. Th

Hvordan installere Apache 2.4 på Arch Linux

Hvordan installere Apache 2.4 på Arch Linux

Forutsetninger En Vultr-server som kjører oppdatert Arch Linux. Se denne veiledningen for mer informasjon. Sudo tilgang. Kommandoer som kreves for å kjøres som root ar

Slik installerer du Python 3.7 på en Arch Linux-webserver

Slik installerer du Python 3.7 på en Arch Linux-webserver

Forutsetninger En Vultr-server som kjører oppdatert Arch Linux (se denne artikkelen.) En kjørende webserver, enten Apache- eller Nginx Sudo-tilgang: Kommandoer krever

Hvordan installere Perl 5.28 på en Arch Linux Webserver

Hvordan installere Perl 5.28 på en Arch Linux Webserver

Forutsetninger En Vultr-server som kjører oppdatert Arch Linux (se denne artikkelen.) En kjørende webserver, enten Apache- eller Nginx Sudo-tilgang: Kommandoer krever

Hvordan installere PHP 7.3 på en Arch Linux Webserver

Hvordan installere PHP 7.3 på en Arch Linux Webserver

Forutsetninger En Vultr-server som kjører oppdatert Arch Linux (se denne artikkelen.) En kjørende webserver, enten Apache- eller Nginx Sudo-tilgang. Kommandoer krever

Sett opp Mumble Server på Arch Linux

Sett opp Mumble Server på Arch Linux

Denne opplæringen forklarer hvordan du setter opp en Mumble-server (Murmur) på Arch Linux. Alt som gjøres i denne opplæringen gjøres som root-bruker. Installasjon en

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

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

Denne opplæringen forklarer hvordan du setter opp en Counter-Strike: Global Offensive-server på Arch Linux. Denne opplæringen forutsetter at du logget på med standard bruk

Sett opp en Team Fortress 2-server på Arch Linux

Sett opp en Team Fortress 2-server på Arch Linux

Denne opplæringen forklarer hvordan du setter opp en Team Fortress 2-server på Arch Linux. Jeg antar at du er logget inn med en ikke-root brukerkonto som har sudo-tilgang

Hvordan installere MariaDB 10.3 eller MySQL 8.0 på Arch Linux

Hvordan installere MariaDB 10.3 eller MySQL 8.0 på Arch Linux

Forutsetninger En Vultr-server som kjører oppdatert Arch Linux (se denne artikkelen.) Sudo-tilgang: Kommandoer som kreves for å kjøres som root er prefikset av #, og en

Hvordan installere MongoDB 4.0 på Arch Linux

Hvordan installere MongoDB 4.0 på Arch Linux

Forutsetninger En Vultr-server som kjører oppdatert Arch Linux (se denne artikkelen) Sudo-tilgang: Kommandoer som kreves for å kjøres som root er prefikset av #, 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 akkurat i nåtiden I denne bloggen Les hvordan kunstig intelligens-applikasjoner har påvirket ulike sektorer.

DDOS-angrep: en kort oversikt

DDOS-angrep: en kort oversikt

Er du også et offer for DDOS-angrep og forvirret over forebyggingsmetodene? Les denne artikkelen for å løse spørsmålene dine.

Har du noen gang lurt på hvordan hackere tjener penger?

Har du noen gang lurt på hvordan hackere tjener penger?

Du har kanskje hørt at hackere tjener mye penger, men har du noen gang lurt på hvordan tjener de den slags penger? la oss diskutere.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Vil du se revolusjonerende oppfinnelser fra Google og hvordan disse oppfinnelsene forandret livet til alle mennesker i dag? Les deretter til bloggen for å se oppfinnelser fra Google.

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Konseptet med selvkjørende biler som skal ut på veiene ved hjelp av kunstig intelligens er en drøm vi har hatt en stund nå. Men til tross for flere løfter, er de ingen steder å se. Les denne bloggen for å lære mer...

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Ettersom vitenskapen utvikler seg raskt og tar over mye av innsatsen vår, øker også risikoen for å utsette oss for en uforklarlig singularitet. Les hva singularitet kan bety for oss.

Evolusjon av datalagring – infografikk

Evolusjon av datalagring – infografikk

Lagringsmetodene for dataene har vært i utvikling kan være siden fødselen av dataene. Denne bloggen dekker utviklingen av datalagring på grunnlag av en infografikk.

Funksjonaliteter til Big Data Reference Architecture Layers

Funksjonaliteter til Big Data Reference Architecture Layers

Les bloggen for å kjenne ulike lag i Big Data Architecture og deres funksjoner på den enkleste måten.

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

I denne digitaldrevne verden har smarthusenheter blitt en avgjørende del av livet. Her er noen fantastiske fordeler med smarthusenheter om hvordan de gjør livet vårt verdt å leve og enklere.

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

Nylig lanserte Apple macOS Catalina 10.15.4 en tilleggsoppdatering for å fikse problemer, men det ser ut til at oppdateringen forårsaker flere problemer som fører til muring av mac-maskiner. Les denne artikkelen for å lære mer