Devtools gebruiken op Arch Linux

Het pakket Devtools is oorspronkelijk gemaakt voor vertrouwde gebruikers om pakketten correct te maken voor de officiële repositories. Het kan echter ook door gewone gebruikers worden gebruikt om AUR-pakketten of zelfs gewijzigde officiële pakketten te bouwen.

Raadpleeg deze handleiding voor het begrijpen en gebruiken van de AUR in het algemeen, inclusief het verkrijgen van de PKGBUILD. Dit document toont alleen de stappen die specifiek zijn voor Devtools, als dit de methode is die u kiest om een ​​pakket te compileren.

Devtools onderhoudt een afzonderlijke schone Arch-installatie, die zich bevindt in /var/lib/archbuild/<TARGET>/root, die alleen pakketgroepen baseen bevat base-devel. Als deze schone installatie niet bestaat, wordt deze automatisch gemaakt. Als het wel bestaat, worden alle pakketten automatisch bijgewerkt. Wanneer Devtools wordt gebruikt om een ​​pakket te bouwen, begint het met een kopie van deze schone installatie, installeert alleen de vereiste pakketten in de kopie, kopieert de broncode erin, voert de compilatie en verpakking erin uit en kopieert alleen het resulterende pakket, in identieke vorm als in de officiële repositories.

Devtools heeft voordelen ten opzichte van makepkgdirect rennen . Een voordeel is dat base-develen andere pakketten die nodig zijn om het pakket dat u maakt te compileren, maar niet uit te voeren, nooit in uw hoofdsysteem terechtkomen. Dat zijn minder pakketten die periodiek moeten worden geüpgraded en zorgen over. Hoewel dit in de eerste plaats een voordeel is voor Arch-pakketondersteuners, wordt dit proces gemakkelijk blootgelegd wanneer een PKGBUILDonjuist is, bijvoorbeeld wanneer een afhankelijkheid wordt gemist omdat de onderhouder toevallig al in zijn hoofdsysteem is geïnstalleerd. U kunt ook een machine gebruiken die sneller is in het bouwen van pakketten, en het resulterende pakket kopiëren naar een langzamere machine die het zal uitvoeren, zonder de installatie van de bouwmachine te vervuilen.

Het grootste nadeel is dat de schone root er altijd is, ongeveer 800 MB in beslag neemt, en meestal neemt een enkele kopie daar meer ruimte in beslag. Let op, als /var/lib/archbuild/Btrfs wordt gebruikt, begint de kopie van de schone root een Btrfs-snapshot, dus die bestanden nemen niet de dubbele ruimte in beslag. De schone root wordt daar altijd bewaard om te voorkomen dat deze elke keer dat een pakket wordt gemaakt opnieuw wordt geïnstalleerd.

Compileren met Devtools

Installeer Devtools:

# pacman -S devtools

Om een ​​pakket te bouwen, bevat Devtools archbuild, maar u voert dit niet rechtstreeks uit. Het bevat ook symlinks van {extra, gnome-unstable, kde-unstable, staging, testing}-x86_64-build. De symlink wordt gebruikt om het uit te voeren en zal worden geïnspecteerd archbuildom te bepalen welk doel u wilt gebruiken. Het kan worden uitgevoerd om deze onstabiele / staging- / testrepository's te gebruiken, die mogelijk nieuwere versies hebben dan die zijn vrijgegeven aan de officiële repositories. Om de officiële repositories voor niet-AUR pakketten te gebruiken , voer in de directory met de PKGBUILD, bijvoorbeeld de directory van git clone, het volgende uit:

$ extra-x86_64-build

Opmerking: de rest van deze handleiding verwijst eenvoudig naar extra-x86_64-build.

Nadat het is uitgevoerd, zijn de volgende resultaten:

  • /var/lib/archbuild/extra-x86_64/root- Een schone chroot , wat een up-to-date installatie is met alleen pakketgroepen baseen base-devel.
  • /var/lib/archbuild/extra-x86_64/<USERNAME>- Dit zal een build chroot bevatten . Dit is een kopie van de schone chroot met alle afhankelijkheden die nodig zijn om het te bouwen pakket te bouwen of uit te voeren, evenals de broncode, compilatieresultaten en pakket.
  • De map waarin u zich bevindt, bevat het pakket en bouwt logbestanden, evenals alle gedownloade broncode.

Aan het einde ziet u mogelijk " Checking PKGBUILD" en " Checking <PKGNAME>-<PKGVER>-<PKGREL>-<ARCH>.pkg.tar.xz". Alle regels daarna worden uitgevoerd vanaf namcap, die automatisch zoekt naar problemen zoals verkeerd ingedeelde PKGBUILDbestanden, inclusief afhankelijkheden die het pakket niet lijkt te gebruiken, niet inbegrepen afhankelijkheden die het pakket lijkt te gebruiken, en meer. Valse positieven worden vaak gegenereerd door namcap, maar het is een geweldig hulpmiddel om dingen te onderzoeken. Als uw pakket correct werkt, is het geen goed idee om de beheerder te waarschuwen voor namcapuitvoer, tenzij u ernaar hebt gekeken en hebt geverifieerd dat er een wijziging moet worden aangebracht.

U kunt gebruiken pacmanom het pakket te installeren, dat alle afhankelijkheden installeert die nodig zijn om het pakket uit te voeren, zolang ze zich in officiële repositories of een lokale repository bevinden.

Gebruik een lokale repository zoals hier uitgelegd , of installeer het bestand direct:

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

Als u extra-x86_64-buildnu, of nu of later met dit of een ander pakket, opnieuw zou worden uitgevoerd, zal het indien nodig de schone chroot bijwerken, de build-chroot verwijderen en er een nieuwe kopie van de schone chroot van maken, en hetzelfde proces uitvoeren. Als in uw map nog steeds de broncode is gedownload van de laatste keer, zal deze deze gebruiken. Als het pakket een ontwikkelings-AUR-pakket is, zal het nieuwe wijzigingen aanbrengen in plaats van opnieuw te klonen.

Intern extra-x86_64-buildloopt makechrootpkg, dat intern roept makepkg. De opties voor extra-x86_64-buildzijn onder meer:

  • -c: Reinig de chroots door de volledige /var/lib/archbuild/extra-x86_64/directory te verwijderen en opnieuw te maken , inclusief de schone chroot en alle build-chroot-directories. Dit is zelden nodig, alleen als de schone chroot beschadigd raakt of als Devtools wordt geüpgraded op een manier die de compatibiliteit met eerdere versies schaadt.
  • -r <dir>: Gebruik een andere directory dan /var/lib/archbuild/extra-x86_64/de chroots.

Alle argumenten extra-x86_64-buildna --worden doorgegeven aan makechrootpkg, wanneer het intern wordt gebruikt. Meerdere argumenten worden altijd automatisch doorgegeven van extra-x86_64-buildnaar makechrootpkg. Deze automatische argumenten zijn -r <value given to extra-x86_64-build -r option if given, /var/lib/archbuild/extra-x86_64 otherwise> -c -n. Ze vertellen makechrootpkgdat ze de build-chroot moeten verwijderen en er een nieuwe kopie van moeten maken, en dat ze namcapop het pakket moeten worden uitgevoerd als het met succes is gebouwd. Een veelgebruikte optie die kan worden doorgegeven makechrootpkgis -l <copy name>. Dit is de directorynaam om de build-chroot te geven in plaats van <USERNAME>, wat handig is voor het onderhouden van meerdere kopieën of het compileren van meerdere pakketten tegelijkertijd.

Alle argumenten makechrootpkgna --worden doorgegeven aan makepkg, wanneer het intern wordt gebruikt om het pakket te bouwen. De eerste keer dat het makepkgwordt uitgevoerd makechrootpkg, wordt het uitgevoerd met zijn eigen onveranderlijke opties om, indien nodig, bronbestanden te downloaden en integriteitscontroles uit te voeren; er kan dus niets worden doorgestuurd tijdens deze run. Het wordt makepkgeen tweede keer uitgevoerd om het pakket te bouwen en geeft altijd automatisch makepkgargumenten door --syncdeps --noconfirm --log --holdver --skipintegdie makepkgbinnen de build-chroot automatisch de ontbrekende afhankelijkheden installeren die nodig zijn voor het bouwen en gebruiken van het pakket, niet om bevestiging te vragen tijdens pacman, log het build-proces in op tekst bestanden stdout, update de broncode niet in een versiebeheersysteem en voer geen verificatiecontroles van het bronbestand uit.

U kunt deze aan elkaar koppelen door het volgende formulier te gebruiken:

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

Merk op dat het /var/lib/archbuildkan worden behandeld alsof het een tijdelijke map is. Als je meerdere Vultr harde schijven hebt, is het de moeite waard om hier een RAID0 (stripe) bestandssysteem te mounten. Als je veel RAM hebt, kun je ook een RAM-ondersteund bestandssysteem mounten tmpfs. Nadat een pakket is gebouwd, wordt het gekopieerd naar de map waarvandaan u hebt gerend extra-x86_64-builden als u dat wilt, kunt u op dit moment verwijderen /var/lib/archbuild. De volgende run zou langzamer zijn, omdat er een nieuwe schone root nodig zou zijn. Als alternatief kunt u verwijderen /var/lib/archbuild/<USERNAME>om extra ruimte terug te winnen van de build-chroot voordat deze automatisch wordt verwijderd door de volgende run van Devtools. Dus zelfs als u hier een RAID0-bestandssysteem zou hebben gemount, mislukt het meeste dat u zou verliezen als er een compilatie zou worden gemaakt.

Devtools configuratiebestanden

Er zijn een paar bijzonderheden om op te merken met Devtools-configuratiebestanden. Ze bevinden zich in /usr/share/devtools/, zoals makepkg-x86_64.confen pacman-extra.conf:

  • Voor /etcbestanden zoals makepkg.confen pacman.confkunt u ze veilig op hun plaats bewerken en wanneer het pakket wordt geüpgraded, worden uw wijzigingen niet overschreven. Het zal eerder de nieuwe configuratiebestanden opslaan (als ze zijn gewijzigd ten opzichte van de vorige versie) die eindigen op .pacnew. Devtools-configuratiebestanden zijn /usr/share/echter niet bedoeld om door de gebruiker te worden bewerkt, dus wanneer Devtools wordt geüpgraded, worden uw wijzigingen in deze bestanden volledig overschreven zonder u te waarschuwen. Er is een wijziging in dit gedrag voorgesteld en afgewezen, omdat dit ervoor zorgt dat pakketten met dezelfde compilatie-instellingen naar de officiële opslagplaatsen worden gestuurd.
  • De waarde voor MAKEFLAGS,, PACKAGERen {SRC,SRCPKG,PKG,LOG}DESTzijn afkomstig van in /etc/makepkg.confplaats van /usr/share/devtools/makepkg-x86_64.conf.

Lokale opslagplaats

Als u pakketten bouwt die afhankelijkheden hebben van andere pakketten die u heeft gebouwd, moet u een lokale opslagplaats gebruiken, zodat wanneer het pacmanbinnen de build-chroot wordt uitgevoerd, het de afhankelijkheden vindt.

Raadpleeg de sectie "Lokale opslagplaats" in deze handleiding om een ​​lokale opslagplaats in te stellen .

Maak een aangepast doel:

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

Bewerk /usr/share/devtools/pacman-custom.confen voeg aan het einde het volgende toe:

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

Bewerk /etc/pacman.confen voeg het volgende toe. Dit dwingt de map te binden in de chroot:

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

extra-x86_64-buildGebruik dit nu in plaats van te gebruiken:

$ custom-x86_64-build

Als u altijd het aangepaste doel wilt gebruiken, kunt u de /var/lib/archbuild/extra-x86_64-build/directory verwijderen als deze bestaat, omdat de chroots er nu in zijn /var/lib/archbuild/custom-x86_64-build/.

Pakket sneller

Merk op dat het inschakelen van verpakking met schroefdraad het bewerken van de /usr/share/devtoolsconfiguratiebestanden inhoudt , wat niet officieel wordt ondersteund, dus u moet deze wijziging uitvoeren elke keer dat Devtools wordt geüpgraded.

Devtools combineert een volledig pakket tot een archiefformaat. Standaard maakt het .tar.xzgebruik van een enkele thread voor de xzcompressie.

Op systemen met meerdere CPU's kunt u toestaan xzdat u meerdere threads gebruikt door te bewerken /usr/share/devtools/makepkg-x86_64.confen de volgende regel te wijzigen:

COMPRESSXZ=(xz -c -z -)

Om zoveel threads toe te staan ​​als je virtuele cores hebt:

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

Om het gebruik van meerdere virtuele cores toe te staan, maar niet allemaal, om de impact op de algehele systeemprestaties te verminderen, voegt u een specifiek nummer toe:

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

Als u meer threads specificeert dan het aantal virtuele cores dat u heeft, nemen de prestaties af.

Als je het niet erg vindt dat het pakketbestand (mogelijk veel) groter is, schakel dan compressie uit door te bewerken /usr/share/devtools/makepkg-x86_64.confen verander de volgende regel:

PKGEXT='.pkg.tar.xz'

Wijzig het zodat het er als volgt uitziet:

PKGEXT='.pkg.tar'


Leave a Comment

Hoe MongoDB 4.0 op Arch Linux te installeren

Hoe MongoDB 4.0 op Arch Linux te installeren

Vereisten Een Vultr-server die up-to-date is Arch Linux (zie dit artikel) Sudotoegang: opdrachten die als root moeten worden uitgevoerd, worden voorafgegaan door # en één

Stel een Team Fortress 2-server in op Arch Linux

Stel een Team Fortress 2-server in op Arch Linux

Deze tutorial legt uit hoe je een Team Fortress 2-server instelt op Arch Linux. Ik neem aan dat je bent ingelogd met een niet-root gebruikersaccount dat sudo-toegang heeft

PHP 7.3 installeren op een Arch Linux webserver

PHP 7.3 installeren op een Arch Linux webserver

Vereisten Een Vultr-server die up-to-date is Arch Linux (zie dit artikel.) Een actieve webserver, ofwel Apache- of Nginx Sudo-toegang. Commandos vereisen

Hoe Nginx 1.14 op Arch Linux te installeren

Hoe Nginx 1.14 op Arch Linux te installeren

Vereisten Een Vultr-server die up-to-date is met Arch Linux (zie dit artikel.) Sudotoegang. Commandos die als root moeten worden uitgevoerd, worden voorafgegaan door #. Th

MariaDB 10.3 of MySQL 8.0 installeren op Arch Linux

MariaDB 10.3 of MySQL 8.0 installeren op Arch Linux

Vereisten Een Vultr-server die up-to-date is Arch Linux (zie dit artikel.) Sudotoegang: opdrachten die als root moeten worden uitgevoerd, worden voorafgegaan door # en één

Configureer Mumble Server op Arch Linux

Configureer Mumble Server op Arch Linux

Deze tutorial legt uit hoe je een Mumble-server (Murmur) instelt op Arch Linux. Alles wat in deze tutorial wordt gedaan, wordt gedaan als de rootgebruiker. Installatie een

Hoe Python 3.7 op een Arch Linux-webserver te installeren

Hoe Python 3.7 op een Arch Linux-webserver te installeren

Vereisten Een Vultr-server die up-to-date is Arch Linux (zie dit artikel.) Een actieve webserver, toegang tot Apache of Nginx Sudo: opdrachten zijn vereist

Configureer Spigot Server op Arch Linux

Configureer Spigot Server op Arch Linux

Deze tutorial legt uit hoe je een Minecraft-server instelt met Spigot op Arch Linux. Deze tutorial gaat ervan uit dat je een normale gebruiker bent (niet-root) en hav hebt

Stel een Counter-Strike: Global Offensive (CSGO) -server in op Arch Linux

Stel een Counter-Strike: Global Offensive (CSGO) -server in op Arch Linux

Deze tutorial legt uit hoe je een Counter-Strike: Global Offensive-server instelt op Arch Linux. Deze tutorial gaat ervan uit dat je bent ingelogd met een standaard gebruik

Arch Linux installeren op een Vultr-server

Arch Linux installeren op een Vultr-server

Vultr biedt u de geweldige functionaliteit om u in staat te stellen uw eigen aangepaste afbeelding te gebruiken naast hun uitstekende sjablonen, waarmee u kunt uitvoeren

Makepkg gebruiken op Arch Linux

Makepkg gebruiken op Arch Linux

Als u makepkg rechtstreeks gebruikt, vervuilt het uw systeem enigszins. De base-devel pakketgroep moet geïnstalleerd zijn. Op deze manier zijn standaard afhankelijkheden alleen nodig

Installeer Arch Linux met Btrfs Snapshotting

Installeer Arch Linux met Btrfs Snapshotting

Voorwoord Arch Linux is een distributie voor algemeen gebruik die bekend staat om zijn geavanceerde technologie en flexibele configuratie. Met Btrfs-snapshots kunnen we maken

Hoe Perl 5.28 op een Arch Linux Webserver te installeren

Hoe Perl 5.28 op een Arch Linux Webserver te installeren

Vereisten Een Vultr-server die up-to-date is Arch Linux (zie dit artikel.) Een actieve webserver, toegang tot Apache of Nginx Sudo: opdrachten zijn vereist

HTTPS gebruiken op Arch Linux Webserver

HTTPS gebruiken op Arch Linux Webserver

Vereisten Een Vultr-server die up-to-date is Arch Linux (zie dit artikel.) Een actieve webserver, toegang tot Apache of Nginx Sudo Vereiste opdrachten t

Hoe Apache 2.4 op Arch Linux te installeren

Hoe Apache 2.4 op Arch Linux te installeren

Vereisten Een Vultr-server met actuele Arch Linux. Zie deze gids voor meer informatie. Sudo toegang. Commandos die moeten worden uitgevoerd als root ar

2019 Arch Linux installeren op een Vultr-server

2019 Arch Linux installeren op een Vultr-server

Introductie Arch Linux heeft een kleinere, maar nog steeds sterke, volgende dan meer populaire distributies. De filosofie is heel anders, met voordelen

Hoe PostgreSQL 11.1 op Arch Linux te installeren

Hoe PostgreSQL 11.1 op Arch Linux te installeren

Vereisten Een Vultr-server die up-to-date is met Arch Linux (zie dit artikel.) Sudotoegang. Commandos die als root moeten worden uitgevoerd, worden voorafgegaan door # en een

Pakketten bouwen op Arch Linux (inclusief de AUR)

Pakketten bouwen op Arch Linux (inclusief de AUR)

Op Arch Linux zijn de officiële repositories: core, extra en community. Deze pakketten zijn al samengesteld en worden geïnstalleerd via pacman. Voor th

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Ransomware-aanvallen nemen toe, maar kan AI helpen het nieuwste computervirus het hoofd te bieden? Is AI het antwoord? Lees hier weten is AI boezem of vloek

ReactOS: is dit de toekomst van Windows?

ReactOS: is dit de toekomst van Windows?

ReactOS, een open source en gratis besturingssysteem is hier met de nieuwste versie. Kan het voldoen aan de behoeften van moderne Windows-gebruikers en Microsoft uitschakelen? Laten we meer te weten komen over deze oude stijl, maar een nieuwere OS-ervaring.

Blijf verbonden via WhatsApp Desktop-app 24 * 7

Blijf verbonden via WhatsApp Desktop-app 24 * 7

WhatsApp heeft eindelijk de Desktop-app voor Mac- en Windows-gebruikers gelanceerd. Nu heb je eenvoudig toegang tot WhatsApp vanuit Windows of Mac. Beschikbaar voor Windows 8+ en Mac OS 10.9+

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Lees dit om te weten hoe kunstmatige intelligentie populair wordt onder de kleinschalige bedrijven en hoe het de kansen vergroot om ze te laten groeien en hun concurrenten voorsprong te geven.

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

Onlangs heeft Apple macOS Catalina 10.15.4 uitgebracht, een aanvullende update om problemen op te lossen, maar het lijkt erop dat de update meer problemen veroorzaakt die ertoe leiden dat mac-machines worden gemetseld. Lees dit artikel voor meer informatie

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

Wat is een logboekbestandssysteem en hoe werkt het?

Wat is een logboekbestandssysteem en hoe werkt het?

Onze computer slaat alle gegevens op een georganiseerde manier op, het zogenaamde Journaling-bestandssysteem. Het is een efficiënte methode waarmee de computer bestanden kan zoeken en weergeven zodra u op zoeken drukt.https://wethegeek.com/?p=94116&preview=true

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Naarmate de wetenschap zich snel ontwikkelt en veel van onze inspanningen overneemt, nemen ook de risico's toe om onszelf te onderwerpen aan een onverklaarbare singulariteit. Lees, wat singulariteit voor ons kan betekenen.

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

AI in de zorg heeft de afgelopen decennia grote sprongen gemaakt. De toekomst van AI in de gezondheidszorg groeit dus nog steeds met de dag.