Uporaba Devtools na Arch Linux

Paket Devtools je bil prvotno narejen za zaupanja vredne uporabnike, da pravilno ustvarijo pakete za uradna skladišča. Lahko pa ga uporabljajo tudi navadni uporabniki za izdelavo paketov AUR ali celo spremenjenih uradnih paketov.

Glejte ta priročnik za razumevanje in uporabo AUR na splošno, vključno s pridobivanjem PKGBUILD. Ta dokument prikazuje samo korake, specifične za Devtools, če je to metoda, ki ste jo izbrali za prevajanje paketa.

Devtools vzdržuje ločeno čisto namestitev Arch, ki se nahaja v /var/lib/archbuild/<TARGET>/root, ki vsebuje samo skupine paketov basein base-devel. Če ta čista namestitev ne obstaja, jo samodejno ustvari. Če obstaja, samodejno posodobi vse pakete v njem. Ko se Devtools uporablja za gradnjo paketa, se začne s kopijo te čiste namestitve, namesti zahtevane pakete samo v kopijo, vanj kopira izvorno kodo, izvede prevajanje in pakiranje v njem ter samo prekopira nastali paket, v enaki obliki kot v uradnih repozitorijih.

Devtools imajo prednosti pred makepkgneposrednim izvajanjem. Ena od prednosti je, da base-develin drugi paketi, potrebni za prevajanje, vendar ne za zagon, paketa, ki ga izdelujete, nikoli ne konča v vašem glavnem sistemu. To je manj paketov, ki jih je treba občasno nadgrajevati, in glede tega imate pomisleke. Čeprav je v prvi vrsti prednost za vzdrževalce paketov Arch, ta postopek zlahka razkrije, če je a PKGBUILDnapačen, na primer, če je na seznamu spregledana odvisnost, ki jo je vzdrževalec že namestil v njihov glavni sistem. Uporabite lahko tudi stroj, ki je hitrejši pri izdelavi paketov, in nastali paket kopirate na počasnejši stroj, ki ga bo pognal, ne da bi pri tem onesnažil namestitev gradbenega stroja.

Glavna pomanjkljivost je, da je čisti koren vedno tam in zavzame približno 800 MB, običajno pa je tam ena kopija, ki zavzame več prostora. Upoštevajte, da če /var/lib/archbuild/uporabljate Btrfs, se kopija čistega korena začne kot posnetek Btrfs, tako da te datoteke ne zavzamejo dvojnega prostora. Čisti koren se vedno hrani tam, da se izogne ​​ponovni namestitvi vsakič, ko se naredi paket.

Prevajanje z uporabo Devtools

Namesti Devtools:

# pacman -S devtools

Za izdelavo paketa Devtools vključuje archbuild, vendar tega ne zaženete neposredno. Vključuje tudi simbolne povezave {extra, gnome-unstable, kde-unstable, staging, testing}-x86_64-build. Simbolna povezava, ki se uporablja za zagon, jo bo pregledal archbuild, da bi ugotovil, kateri cilj želite uporabiti. Lahko ga zaženete za uporabo teh nestabilnih/uprizoritvenih/testnih skladišč, ki imajo morda novejše različice, kot so bile izdane v uradnih repozitorijih. Če želite uporabiti uradna skladišča za pakete, ki niso AUR, v imeniku z PKGBUILD, na primer imenik, ki ga je ustvaril git clone, zaženite naslednje:

$ extra-x86_64-build

Opomba: Preostanek tega priročnika se bo preprosto nanašal na extra-x86_64-build.

Ko se konča, bodo rezultati naslednji:

  • /var/lib/archbuild/extra-x86_64/root- Čisti chroot , ki je posodobljena namestitev samo s skupinami paketov basein base-devel.
  • /var/lib/archbuild/extra-x86_64/<USERNAME>- Ta bo vseboval build chroot . To je kopija čistega chroot-a z vsemi odvisnostmi, ki so potrebne za gradnjo ali zagon paketa, ki se gradi, ter njegovo izvorno kodo, rezultati prevajanja in paket.
  • Imenik, v katerem ste, bo vseboval datoteke dnevnika paketa in gradnje ter vso preneseno izvorno kodo.

Na koncu boste morda opazili " Checking PKGBUILD" in " Checking <PKGNAME>-<PKGVER>-<PKGREL>-<ARCH>.pkg.tar.xz". Vse vrstice za temi so izhodne iz namcap, ki samodejno išče težave, kot so napačno oblikovane PKGBUILDdatoteke, vključene odvisnosti, za katere se zdi, da jih paket ne uporablja, odvisnosti, ki niso vključene, za katere se zdi, da jih paket uporablja, in drugo. Lažno pozitivne rezultate pogosto ustvari namcap, vendar je odlično orodje za dajanje stvari, ki jih je treba raziskati. Če vaš paket deluje pravilno, ni dobro, da vzdrževalca opozorite na namcapizpis, razen če ste ga pogledali in preverili, ali je potrebna sprememba.

Uporabite lahko pacmanza namestitev paketa, ki bo namestil vse odvisnosti, potrebne za zagon paketa, dokler so v uradnih repozitorijih ali lokalnem skladišču.

Uporabite lokalno skladišče, kot je razloženo tukaj , ali pa namestite datoteko neposredno:

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

Če bi zagnali extra-x86_64-buildznova, takoj ali kadar koli pozneje s tem ali drugim paketom, bo po potrebi posodobil čisti chroot, izbrisal build chroot in ga naredil za novo kopijo čistega chroot-a ter izvedel isti postopek. Če ima vaš imenik še vedno nazadnje preneseno izvorno kodo, jo bo uporabil. Če je paket razvojni paket AUR, bo namesto ponovnega kloniranja potegnil nove spremembe.

Interno extra-x86_64-buildteče makechrootpkg, ki interno kliče makepkg. Možnosti za extra-x86_64-buildvključujejo naslednje:

  • -c: Očistite chroot tako, da odstranite in ponovno /var/lib/archbuild/extra-x86_64/ustvarite celoten imenik, vključno z njegovim čistim chroot in vsemi build imeniki chroot. To je redko potrebno, le če se čisti chroot poškoduje ali če je orodje Devtools nadgrajeno na način, ki krši združljivost za nazaj.
  • -r <dir>: Uporabite drug imenik kot /var/lib/archbuild/extra-x86_64/za shranjevanje chroot.

Vsi argumenti za extra-x86_64-buildafter --so posredovani v makechrootpkg, ko ga interno uporablja. Več argumentov se vedno samodejno prenese iz extra-x86_64-buildna makechrootpkg. Ti samodejni argumenti so -r <value given to extra-x86_64-build -r option if given, /var/lib/archbuild/extra-x86_64 otherwise> -c -n. Povejo, makechrootpkgda odstranite build chroot in ga naredite za novo kopijo čistega chroot-a ter zaženete namcapv paketu, če se uspešno zgradi. Pogosto uporabljena možnost, na katero se lahko prenese, makechrootpkgje -l <copy name>. To je ime imenika, ki daje build chroot namesto <USERNAME>, kar je uporabno za vzdrževanje več kopij ali prevajanje več paketov hkrati.

Vsi argumenti za makechrootpkgafter --se posredujejo makepkg, ko ga interno uporablja za gradnjo paketa. Prvič, ko makepkgga zažene makechrootpkg, se izvaja z lastnimi nespremenljivimi možnostmi, za prenos izvornih datotek, če je potrebno, in izvajanje preverjanj integritete; tako pri tem teku ni mogoče posredovati ničesar. Zažene makepkgse drugič za gradnjo paketa in vedno samodejno posreduje makepkgargumente, --syncdeps --noconfirm --log --holdver --skipintegki pove, makepkgnaj znotraj build chroot samodejno namesti manjkajoče odvisnosti, potrebne za gradnjo in uporabo paketa, da ne zahteva potrditve med pacman, zapiše postopek gradnje v besedilo datoteke poleg stdout, ne posodabljajte izvorne kode, če ste v sistemu za nadzor različic in ne izvajajte preverjanj preverjanja izvorne datoteke.

Te lahko povežete skupaj z naslednjim obrazcem:

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

Upoštevajte, da /var/lib/archbuildga je mogoče obravnavati, kot da bi bil začasni imenik. Če imate več trdih diskov Vultr, je vredno tukaj namestiti datotečni sistem RAID0 (trak). Če imate veliko RAM-a, lahko namestite tudi datotečni sistem, podprt z RAM-om, kot je tmpfs. Ko je paket zgrajen, se prekopira v imenik, extra-x86_64-buildiz katerega ste zagnali, in če želite, lahko na tej točki izbrišete /var/lib/archbuild. Naslednji zagon bi bil počasnejši, ker bi moral narediti nov čisti koren. Druga možnost je, da izbrišete, /var/lib/archbuild/<USERNAME>da pridobite dodaten prostor iz chroot gradnje, preden ga samodejno izbriše naslednji zagon orodja Devtools. Torej, tudi če bi tukaj nameščen datotečni sistem RAID0 ne uspe, bi največ, kar bi izgubili, bila kompilacija v postopku.

Konfiguracijske datoteke Devtools

Pri konfiguracijskih datotekah Devtools je treba upoštevati nekaj posebnosti. Nahajajo se v /usr/share/devtools/, kot so makepkg-x86_64.confin pacman-extra.conf:

  • Za /etcdatoteke, kot sta makepkg.confin pacman.conf, jih lahko varno urejate na mestu, in ko je paket nadgrajen, ne bo prepisal vaših sprememb. Namesto tega bo shranil nove konfiguracijske datoteke (če so se spremenile od prejšnje različice), ki se končajo z .pacnew. Vendar pa so konfiguracijske datoteke Devtools, v /usr/share/katerih niso namenjene urejanju uporabnikov, zato bo ob nadgradnji Devtools popolnoma prepisal vaše spremembe teh datotek, ne da bi vas o tem opozoril. Sprememba tega vedenja je bila predlagana in zavrnjena, ker to pomaga zagotoviti, da so paketi poslani v uradna skladišča z enakimi nastavitvami prevajanja.
  • Vrednost za MAKEFLAGS, PACKAGERin {SRC,SRCPKG,PKG,LOG}DESTsta vzeta iz /etc/makepkg.confnamesto /usr/share/devtools/makepkg-x86_64.conf.

Lokalni repozitorij

Če gradite pakete, ki so odvisni od drugih paketov, ki ste jih zgradili, morate uporabiti lokalni repozitorij, tako da, ko se pacmanzažene znotraj chroot gradnje, najde odvisnosti.

Če želite nastaviti lokalno skladišče, glejte razdelek »Lokalni repozitorij« tega priročnika .

Ustvari cilj po meri:

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

Uredite /usr/share/devtools/pacman-custom.confin na koncu dodajte naslednje:

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

Uredite /etc/pacman.confin dodajte naslednje. To prisili, da je imenik vezano nameščen v chroot:

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

Zdaj namesto uporabe extra-x86_64-builduporabite to:

$ custom-x86_64-build

Če želite vedno uporabljati cilj po meri, lahko izbrišete /var/lib/archbuild/extra-x86_64-build/imenik, če obstaja, saj bodo chroot zdaj v /var/lib/archbuild/custom-x86_64-build/.

Paket Hitreje

Upoštevajte, da omogočanje nitnega pakiranja vključuje urejanje /usr/share/devtoolskonfiguracijskih datotek, kar ni uradno podprto, zato boste morali to spremembo izvesti ob vsaki nadgradnji orodja Devtools.

Devtools združuje celoten paket v arhivski format. Privzeto .tar.xzza xzstiskanje uporabi eno nit .

V sistemih z več CPE lahko dovolite xzuporabo več niti z urejanjem /usr/share/devtools/makepkg-x86_64.confin spremenite naslednjo vrstico:

COMPRESSXZ=(xz -c -z -)

Če želite dovoliti toliko niti, kolikor imate navideznih jeder:

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

Če želite omogočiti uporabo več virtualnih jeder, vendar ne vseh, da bi zmanjšali vpliv na splošno zmogljivost sistema, dodajte določeno število:

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

Če navedete več niti od števila navideznih jeder, ki jih imate, se bo zmogljivost zmanjšala.

Če vas ne moti, da je datoteka paketa (potencialno veliko) večja, onemogočite stiskanje z urejanjem /usr/share/devtools/makepkg-x86_64.confin spremenite naslednjo vrstico:

PKGEXT='.pkg.tar.xz'

Spremenite ga, da bo videti takole:

PKGEXT='.pkg.tar'

Arch,Linux Guides,System Admin

Pusti komentar

Vzpon strojev: aplikacije AI v resničnem svetu

Vzpon strojev: aplikacije AI v resničnem svetu

Umetna inteligenca ni v prihodnosti, tukaj je prav v sedanjosti. V tem blogu preberite, kako so aplikacije umetne inteligence vplivale na različne sektorje.

DDOS napadi: kratek pregled

DDOS napadi: kratek pregled

Ste tudi vi žrtev DDOS napadov in ste zmedeni glede načinov preprečevanja? Preberite ta članek, če želite rešiti svoja vprašanja.

Ste se kdaj vprašali, kako hekerji zaslužijo denar?

Ste se kdaj vprašali, kako hekerji zaslužijo denar?

Morda ste že slišali, da hekerji zaslužijo veliko denarja, a ste se kdaj vprašali, kako zaslužijo takšen denar? razpravljajmo.

Revolucionarni Googlovi izumi, ki vam bodo olajšali življenje.

Revolucionarni Googlovi izumi, ki vam bodo olajšali življenje.

Ali želite videti revolucionarne izume Googla in kako so ti izumi danes spremenili življenje vsakega človeka? Nato preberite v blogu in si oglejte Googlove izume.

Friday Essential: Kaj se je zgodilo z avtomobili, ki jih poganja umetna inteligenca?

Friday Essential: Kaj se je zgodilo z avtomobili, ki jih poganja umetna inteligenca?

Koncept samovozečih avtomobilov, ki zapeljejo na ceste s pomočjo umetne inteligence, so sanje, ki jih imamo že nekaj časa. A kljub številnim obljubam jih ni nikjer. Preberite ta blog, če želite izvedeti več…

Tehnološka singularnost: oddaljena prihodnost človeške civilizacije?

Tehnološka singularnost: oddaljena prihodnost človeške civilizacije?

Ker se znanost hitro razvija in prevzame veliko naših prizadevanj, se povečuje tudi tveganje, da se podvržemo nerazložljivi singularnosti. Preberite, kaj bi za nas lahko pomenila singularnost.

Funkcionalnosti slojev referenčne arhitekture velikih podatkov

Funkcionalnosti slojev referenčne arhitekture velikih podatkov

Preberite blog, če želite na najpreprostejši način spoznati različne plasti v arhitekturi velikih podatkov in njihove funkcionalnosti.

Razvoj shranjevanja podatkov – Infografika

Razvoj shranjevanja podatkov – Infografika

Metode shranjevanja podatkov so se lahko razvijale od rojstva podatkov. Ta blog pokriva razvoj shranjevanja podatkov na podlagi infografike.

6 neverjetnih prednosti pametnih naprav za dom v našem življenju

6 neverjetnih prednosti pametnih naprav za dom v našem življenju

V tem digitalno vodenem svetu so pametne naprave za dom postale ključni del življenja. Tukaj je nekaj neverjetnih prednosti pametnih naprav za dom o tem, kako naredijo naše življenje vredno življenja in poenostavijo.

Posodobitev dodatka macOS Catalina 10.15.4 povzroča več težav kot jih rešuje

Posodobitev dodatka macOS Catalina 10.15.4 povzroča več težav kot jih rešuje

Pred kratkim je Apple izdal macOS Catalina 10.15.4 dopolnilno posodobitev za odpravo težav, vendar se zdi, da posodobitev povzroča več težav, ki vodijo do opečenja računalnikov Mac. Preberite ta članek, če želite izvedeti več