Utilizarea Devtools pe Arch Linux

Pachetul Devtools a fost inițial creat pentru utilizatori de încredere pentru a crea corect pachete pentru depozitele oficiale. Cu toate acestea, acesta poate fi folosit și de utilizatorii obișnuiți pentru a construi pachete AUR, sau chiar pachete oficiale modificate.

Consultați acest ghid pentru înțelegerea și utilizarea AUR în general, inclusiv obținerea PKGBUILD. Acest document arată pașii specifici Devtools, dacă este metoda pe care o alegeți să compilați un pachet.

Devtools menține o instalație separată de Arch curat, localizată în /var/lib/archbuild/<TARGET>/root, care conține doar grupuri de pachete baseși base-devel. Dacă această instalație curată nu există, o creează automat. Dacă există, acesta actualizează automat orice pachet în el. Când Devtools este utilizat pentru a construi un pachet, acesta începe cu o copie a acestei instalări curate, instalează pachetele necesare numai în copie, copiază codul sursă în el, realizează compilarea și ambalarea în el și copiază doar pachetul rezultat, în formă identică cu ceea ce se găsește în depozitele oficiale.

Există avantaje pentru Devtools în timpul rulării makepkgdirecte. Un avantaj este acela base-develși celelalte pachete necesare pentru a compila, dar nu a rula, pachetul pe care îl creezi niciodată în sistemul principal. Este vorba despre mai puține pachete care trebuie să se actualizeze periodic și să aibă probleme. Deși în primul rând un beneficiu pentru întreținerii pachetului Arch, acest proces expune cu ușurință atunci când PKGBUILDeste incorectă, cum ar fi în cazul în care o dependență este ratată de a fi listată pe care întreținătorul se instalează deja în sistemul lor principal. Puteți utiliza, de asemenea, o mașină mai rapidă la construirea pachetelor și copiați pachetul rezultat pe o mașină mai lentă care o va rula, fără a polua instalarea mașinii de construcție.

Dezavantajul principal este că rădăcina curată este întotdeauna acolo, ocupând aproximativ 800 MB și, de obicei, o singură copie este acolo ocupând mai mult spațiu. Rețineți că, dacă /var/lib/archbuild/folosește Btrfs, copia rădăcinei curate începe să fie o instantanee Btrfs, astfel încât aceste fișiere să nu dubleze spațiul. Rădăcina curată este întotdeauna acolo, pentru a evita reinstalarea ei de fiecare dată când se face un pachet.

Compilarea folosind Devtools

Instalați Devtools:

# pacman -S devtools

Pentru a construi un pachet, Devtools include archbuild, dar nu executați acest lucru direct. De asemenea, include simboluri de {extra, gnome-unstable, kde-unstable, staging, testing}-x86_64-build. Simbolul care este utilizat pentru a rula va fi inspectat de archbuild, pentru a determina ce țintă doriți să o folosească. Poate fi rulat pentru a utiliza aceste depozite instabile / de stadializare / testare, care pot avea versiuni mai noi decât au fost lansate în depozitele oficiale. Pentru a utiliza depozitele oficiale pentru pachete non-AUR, în directorul cu PKGBUILD, de exemplu, directorul realizat de git clone, executați următoarele:

$ extra-x86_64-build

Notă: Restul acestui ghid se va referi pur și simplu extra-x86_64-build.

După ce se termină de rulat, rezultatele vor fi următoarele:

  • /var/lib/archbuild/extra-x86_64/root- Un chroot curat , care este o instalare actualizată cu doar grupuri de pachete baseși base-devel.
  • /var/lib/archbuild/extra-x86_64/<USERNAME>- Acesta va conține un chroot build . Aceasta este o copie a chroot curat, cu orice dependență necesară pentru a construi sau rula pachetul în curs de construire, precum și codul sursă, rezultatele compilării și pachetul.
  • Directorul în care vă aflați va conține pachetul și construirea fișierelor de jurnal, precum și orice cod sursă descărcat.

La sfârșit, este posibil să observați „ Checking PKGBUILD„ și „ Checking <PKGNAME>-<PKGVER>-<PKGREL>-<ARCH>.pkg.tar.xz„. Orice linii după acestea sunt emise namcap, care caută automat probleme precum PKGBUILDfișierele cu forme necorespunzătoare , dependențe incluse pe care pachetul nu pare să le folosească, dependențe care nu sunt incluse pe care pachetul pare să le folosească și multe altele. Pozitive false sunt adesea generate de namcap, dar este un instrument excelent pentru a oferi lucrurilor de investigat. Dacă pachetul dvs. funcționează corect, nu este o idee bună să avertizați întreținătorul cu privire la namcapieșire, cu excepția cazului în care ați examinat și ați verificat că trebuie făcută o modificare.

Puteți utiliza pacmanpentru a instala pachetul, care va instala orice dependență necesară pentru a rula pachetul atât timp cât se află în depozite oficiale sau într-un depozit local.

Fie folosiți un Repositoriu local așa cum este explicat aici , fie instalați fișierul direct:

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

Dacă extra-x86_64-buildar trebui să rulați din nou, chiar acum sau oricând mai târziu cu acest sau alt pachet, acesta va actualiza chrootul curat, dacă este necesar, va șterge chrootul de compilare și va face din acesta o copie nouă a chrootului curat și va efectua același proces. Dacă directorul dvs. încă a descărcat codul sursă de la ultima dată, îl va utiliza. Dacă pachetul este un pachet de dezvoltare AUR, va aduce noi schimbări, mai degrabă decât să cloneze din nou.

Intern, extra-x86_64-buildrulează makechrootpkg, care apelează intern makepkg. Opțiunile pentru extra-x86_64-buildinclud următoarele:

  • -c: Curățați chroots, eliminând și recreând întregul /var/lib/archbuild/extra-x86_64/director, inclusiv chrootul său curat și toate directoarele chroot. Acest lucru este rar necesar, numai dacă chrootul curat este corupt sau dacă Devtools este modernizat într-un mod care să încalce compatibilitatea înapoi.
  • -r <dir>: Utilizați un director diferit de cel /var/lib/archbuild/extra-x86_64/conținut chroots.

Orice argumente la extra-x86_64-builddupă --sunt transmise makechrootpkgatunci când îl folosește intern. Mai multe argumente sunt întotdeauna transmise automat de extra-x86_64-buildla makechrootpkg. Aceste argumente automate sunt -r <value given to extra-x86_64-build -r option if given, /var/lib/archbuild/extra-x86_64 otherwise> -c -n. Ei spun makechrootpkgsă elimine chroot-ul build și să-l facă o copie nouă a chroot-ului curat și să ruleze namcappe pachet dacă se construiește cu succes. O opțiune obișnuită care poate fi transmisă makechrootpkgeste -l <copy name>. Acesta este numele directorului pentru a da chrootul de construire, în loc de <USERNAME>, care este util pentru întreținerea mai multor copii sau compilarea mai multor pachete în același timp.

Orice argumente la makechrootpkgdupă --sunt transmise makepkg, atunci când îl folosește intern pentru a construi pachetul. Prima dată makepkgeste condus makechrootpkg, se face cu propriile opțiuni neschimbabile, pentru a descărca fișierele sursă, dacă este necesar, și pentru a efectua verificări de integritate; prin urmare, nimic nu poate fi redirecționat pe acest traseu. Se execută makepkga doua oară pentru a construi pachetul și trece întotdeauna în mod automat makepkgargumente ale --syncdeps --noconfirm --log --holdver --skipintegcărora makepkg, în cadrul chroot-ului de construire, să instaleze automat dependențele lipsă necesare pentru construirea și utilizarea pachetului, pentru a nu cere confirmare în timpul pacmanînregistrării procesului de construire la text. în plus stdout, fișierele nu actualizează codul sursă dacă există într-un sistem de control al versiunii și nu efectuați verificări ale verificării fișierelor sursă.

Puteți să le asociați împreună folosind următorul formular:

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

Rețineți că /var/lib/archbuildpoate fi tratat ca și cum ar fi un director temporar. Dacă aveți mai multe hard disk-uri Vultr, merită să montați aici un sistem de fișiere RAID0 (stripe). Dacă aveți multă memorie RAM, puteți monta, de asemenea, un sistem de fișiere cu suport RAM tmpfs. După ce un pachet este construit, acesta este copiat în directorul din care ați alergat extra-x86_64-buildși, dacă doriți, puteți șterge la acest moment /var/lib/archbuild. Următoarea rulare ar fi mai lentă, deoarece ar trebui să creeze o nouă rădăcină curată. În mod alternativ, puteți șterge /var/lib/archbuild/<USERNAME>pentru a solicita spațiu suplimentar din chrootul de construire înainte de a fi șters automat de următoarea rulare de Devtools. Deci, chiar dacă aveți un sistem de fișiere RAID0 montat aici nu reușesc, cel mai mult veți pierde ar fi o compilare în proces.

Fișiere de configurare Devtools

Există câteva specificații de notat cu fișierele de configurare Devtools. Acestea sunt localizate în /usr/share/devtools/, cum ar fi makepkg-x86_64.confși pacman-extra.conf:

  • Pentru /etcfișiere precum makepkg.confși pacman.conf, le puteți edita în siguranță în loc, iar atunci când pachetul este actualizat, acesta nu va suprascrie modificările. Mai degrabă, va salva fișierele noi de configurare (dacă s-au schimbat de la versiunea anterioară) care se termină cu .pacnew. Cu toate acestea, fișierele de configurare Devtools sunt în /usr/share/care nu este intenționat să fie editat de utilizator, așa că, atunci când Devtools este actualizat, va suprascrie complet modificările la aceste fișiere fără să vă avertizeze. O modificare a acestui comportament a fost propusă și respinsă, deoarece acest lucru ajută la asigurarea trimiterii pachetelor către depozitele oficiale, toate cu aceleași setări de compilare.
  • Valoarea pentru MAKEFLAGS, PACKAGERși {SRC,SRCPKG,PKG,LOG}DESTsunt preluate din /etc/makepkg.confmai degrabă decât /usr/share/devtools/makepkg-x86_64.conf.

Depozitul local

Dacă construiți pachete care au dependențe de alte pachete pe care le-ați construit, trebuie să utilizați un depozit local, astfel încât, atunci când pacmanrulează în cadrul chroot-ului de compilare, să găsească dependențele.

Pentru a configura un depozit local, consultați secțiunea „Repositoriu local” din acest ghid .

Creați o țintă personalizată:

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

Editați /usr/share/devtools/pacman-custom.confși adăugați următoarele la sfârșit:

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

Editați /etc/pacman.confși adăugați următoarele. Acest lucru obligă directorul să fie legat montat în chroot:

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

Acum, în loc să extra-x86_64-buildfolosești acest lucru:

$ custom-x86_64-build

Dacă doriți întotdeauna să utilizați ținta personalizată, puteți șterge /var/lib/archbuild/extra-x86_64-build/directorul, dacă există, deoarece chroots vor fi acum în /var/lib/archbuild/custom-x86_64-build/.

Pachet mai rapid

/usr/share/devtoolsNotarea activării ambalajelor cu filetă presupune editarea fișierelor de configurare, care nu sunt acceptate oficial, așa că va trebui să efectuați această modificare de fiecare dată când Devtools este actualizat.

Devtools combină un pachet întreg într-un format de arhivă. În mod implicit, .tar.xzutilizează un singur fir pentru xzcompresie.

Pe sisteme cu procesor multiplu, puteți permite xzsă utilizați mai multe fire editând /usr/share/devtools/makepkg-x86_64.confși să modificați următoarea linie:

COMPRESSXZ=(xz -c -z -)

Pentru a permite cât mai multe fire aveți nuclee virtuale:

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

Pentru a permite utilizarea mai multor nuclee virtuale, dar nu toate, pentru a reduce impactul la performanța generală a sistemului, adăugați un număr specific:

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

Specificând mai multe fire decât numărul de nuclee virtuale pe care le aveți va scădea performanța.

Dacă nu vă deranjează că fișierul pachetului este (potențial mult mai mare), dezactivați compresia prin editare /usr/share/devtools/makepkg-x86_64.confși modificați următoarea linie:

PKGEXT='.pkg.tar.xz'

Schimbați-o astfel încât să arate astfel:

PKGEXT='.pkg.tar'


Leave a Comment

Cum se instalează Nginx 1.14 pe Arch Linux

Cum se instalează Nginx 1.14 pe Arch Linux

Cerințe preliminare Un server Vultr care funcționează actualizat Arch Linux (vezi acest articol.) Acces Sudo. Comenzile care trebuie rulate ca root sunt prefixate de #. Th

Cum se instalează Apache 2.4 pe Arch Linux

Cum se instalează Apache 2.4 pe Arch Linux

Cerințe preliminare Un server Vultr care funcționează actualizat Arch Linux. Consultați acest ghid pentru mai multe informații. Acces Sudo. Comenzile necesare pentru a fi rulate ca root

Instalare Server Mumble pe Arch Linux

Instalare Server Mumble pe Arch Linux

Acest tutorial explică modul de configurare a unui server Mumble (Murmur) pe Arch Linux. Tot ce este făcut în acest tutorial este realizat ca utilizator root. Instalarea an

Instalați Arch Linux cu Btrfs Snapshotting

Instalați Arch Linux cu Btrfs Snapshotting

Preface Arch Linux este o distribuție de uz general, binecunoscută pentru tehnologia de ultimă oră și configurația flexibilă. Cu instantanee Btrfs, putem lua

Instalarea unui server Counter-Strike: Global Offensive (CSGO) pe Arch Linux

Instalarea unui server Counter-Strike: Global Offensive (CSGO) pe Arch Linux

Acest tutorial explică modul de configurare a unui server Counter-Strike: Global Offensive pe Arch Linux. Acest tutorial presupune că v-ați autentificat cu o utilizare standard

Instalarea Arch Linux pe un server Vultr

Instalarea Arch Linux pe un server Vultr

Vultr vă oferă funcționalitatea minunată de a vă permite să folosiți propria imagine personalizată, pe lângă șabloanele lor excelente, care vă permite să rulați

Instalarea serverului Spigot pe Arch Linux

Instalarea serverului Spigot pe Arch Linux

Acest tutorial explică cum să configurați un server Minecraft folosind Spigot pe Arch Linux. Acest tutorial presupune că sunteți un utilizator normal (nu root) și hav

Cum se instalează PostgreSQL 11.1 pe Arch Linux

Cum se instalează PostgreSQL 11.1 pe Arch Linux

Cerințe preliminare Un server Vultr care funcționează actualizat Arch Linux (vezi acest articol.) Acces Sudo. Comenzile care trebuie rulate ca root sunt prefixate de # și unu

Cum se instalează MongoDB 4.0 pe Arch Linux

Cum se instalează MongoDB 4.0 pe Arch Linux

Cerințe preliminare Un server Vultr care funcționează actualizat Arch Linux (vezi acest articol) Acces Sudo: Comenzile care trebuie rulate ca root sunt prefixate de #, și una

Instalarea 2019 Arch Linux pe un server Vultr

Instalarea 2019 Arch Linux pe un server Vultr

Introducere Arch Linux are o distribuție mai mică, dar totuși puternică, în urma distribuțiilor mai populare. Filozofia sa este cu totul diferită, cu avantaje

Cum se instalează PHP 7.3 pe un server Web Arch Linux

Cum se instalează PHP 7.3 pe un server Web Arch Linux

Cerințe preliminare Un server Vultr care funcționează actualizat Arch Linux (consultați acest articol) Comenzile necesită

Cum se utilizează HTTPS pe Arch Linux Webserver

Cum se utilizează HTTPS pe Arch Linux Webserver

Cerințe preliminare Un server Vultr care funcționează actualizat Arch Linux (consultați acest articol)

Construirea de pachete pe Arch Linux (inclusiv AUR)

Construirea de pachete pe Arch Linux (inclusiv AUR)

Pe Arch Linux, depozitele oficiale sunt: ​​core, extra și comunitare. Aceste pachete sunt deja compilate și sunt instalate prin intermediul Pacman. Pentru th

Cum se instalează Python 3.7 pe un Arch Linux Webserver

Cum se instalează Python 3.7 pe un Arch Linux Webserver

Cerințe preliminare Un server Vultr care funcționează actualizat Arch Linux (consultați acest articol.) Un server web care rulează, fie accesul Apache, fie Nginx Sudo: Comenzile necesită

Folosind Makepkg pe Arch Linux

Folosind Makepkg pe Arch Linux

Dacă utilizați direct makepkg, acesta poluează oarecum sistemul dumneavoastră. Trebuie să fie instalat grupul de pachete de bază de dezvoltare. În acest mod, în mod implicit, sunt necesare dependențele onl

Configurați un server Team Fortress 2 pe Arch Linux

Configurați un server Team Fortress 2 pe Arch Linux

Acest tutorial explică modul de configurare a unui server Team Fortress 2 pe Arch Linux. Presupun că sunteți conectat cu un cont de utilizator non-root care are acces sudo

Cum se instalează MariaDB 10.3 sau MySQL 8.0 pe Arch Linux

Cum se instalează MariaDB 10.3 sau MySQL 8.0 pe Arch Linux

Cerințe preliminare Un server Vultr care funcționează actualizat Arch Linux (a se vedea acest articol.) Acces Sudo: Comenzile necesare pentru a fi rulate ca root sunt prefixate de # și una

Cum se instalează Perl 5.28 pe un Arch Linux Webserver

Cum se instalează Perl 5.28 pe un Arch Linux Webserver

Cerințe preliminare Un server Vultr care funcționează actualizat Arch Linux (consultați acest articol.) Un server web care rulează, fie accesul Apache, fie Nginx Sudo: Comenzile necesită

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

6 lucruri extrem de nebunești despre Nintendo Switch

6 lucruri extrem de nebunești despre Nintendo Switch

Mulți dintre voi cunoașteți Switch care va fi lansat în martie 2017 și noile sale funcții. Pentru cei care nu știu, am pregătit o listă de funcții care fac din „Switch” un „gadget obligatoriu”.

Promisiuni tehnologice care sunt încă nelivrate

Promisiuni tehnologice care sunt încă nelivrate

Aștepți ca giganții tehnologiei să-și îndeplinească promisiunile? vezi ce a ramas nelivrat.

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Citiți blogul pentru a cunoaște diferitele straturi din Arhitectura Big Data și funcționalitățile acestora în cel mai simplu mod.

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Citiți asta pentru a afla cum devine populară inteligența artificială în rândul companiilor la scară mică și cum crește probabilitățile de a le face să crească și de a le oferi concurenților avantaje.

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA a devenit destul de dificil de rezolvat pentru utilizatori în ultimii ani. Va fi capabil să rămână eficient în detectarea spam-ului și a botului în viitor?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Pe măsură ce Știința Evoluează într-un ritm rapid, preluând multe dintre eforturile noastre, crește și riscurile de a ne supune unei Singularități inexplicabile. Citiți, ce ar putea însemna singularitatea pentru noi.

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Ce este telemedicina, îngrijirea medicală la distanță și impactul acesteia asupra generației viitoare? Este un loc bun sau nu în situația de pandemie? Citiți blogul pentru a găsi o vedere!

Te-ai întrebat vreodată cum câștigă hackerii bani?

Te-ai întrebat vreodată cum câștigă hackerii bani?

Poate ați auzit că hackerii câștigă mulți bani, dar v-ați întrebat vreodată cum câștigă acești bani? sa discutam.

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Recent, Apple a lansat macOS Catalina 10.15.4 o actualizare suplimentară pentru a remedia problemele, dar se pare că actualizarea provoacă mai multe probleme care duc la blocarea mașinilor Mac. Citiți acest articol pentru a afla mai multe