PKGBUILD(5) | Manualul Pacman | PKGBUILD(5) |
NUME
PKGBUILD - fișier de descriere a construcției pachetului
SINOPSIS
PKGBUILD
DESCRIERE
Această pagină de manual descrie regulile generale despre PKGBUILD. Odată ce un PKGBUILD este scris, pachetul real este construit utilizând makepkg și instalat cu pacman.
Notă
Un exemplu de PKGBUILD, util pentru referință, este localizat în /usr/share/pacman împreună cu alte fișiere de exemplu, cum ar fi un script de instalare. Puteți copiați fișierul PKGBUILD.proto furnizat într-un nou director de creare a pachetului și să faceți personalizări în funcție de nevoile dvs.
OPȚIUNI ȘI DIRECTIVE
Următoarea este o listă de opțiuni și directive standard disponibile pentru a fi utilizate într-un PKGBUILD. Toate acestea sunt înțelese și interpretate de makepkg, iar cele mai multe dintre ele vor fi transferate direct în pachetul construit. Câmpurile obligatorii pentru un PKGBUILD minim funcțional sunt pkgname, pkgver, pkgrel și arch.
Dacă trebuie să creați variabile personalizate pentru a le utiliza în procesul de construire, se recomandă este recomandat să prefixați numele acestora cu un caracter _ (liniuță de subliniere). Acest lucru va preveni orice posibile ciocniri de nume cu variabilele interne makepkg. De exemplu, pentru a stoca versiunea nucleului de bază într-o variabilă, utilizați ceva similar cu $_basekernver.
pkgname (listă)
pkgver
Variabila pkgver poate fi actualizată automat prin furnizarea unei funcții pkgver() în PKGBUILD care produce noua versiune a pachetului. Aceasta este rulată după descărcarea și extragerea surselor și după rularea funcției prepare() (dacă este prezentă), astfel încât să poată utiliza aceste fișiere pentru a determina noua valoare a pkgver. Aceasta este foarte utilă atunci când este utilizată cu surse din sisteme de control al versiunilor (a se vedea mai jos).
pkgrel
epoch
pkgdesc
url
license (câmp)
install
changelog
source (listă)
Surse suplimentare specifice arhitecturii pot fi adăugate prin adăugarea unui caracter de subliniere și a numelui arhitecturii, de exemplu, source_x86_64=(). Trebuie să existe o matrice de integritate corespunzătoare cu sume de control, de exemplu cksums_x86_64=().
De asemenea, este posibil să se schimbe numele fișierului descărcat, ceea ce este util în cazul adreselor URL ciudate și pentru gestionarea mai multor fișiere sursă cu același nume. Sintaxa este: source=('filename::url').
makepkg suportă, de asemenea, construirea versiunilor de dezvoltare ale pachetelor folosind surse descărcate din sisteme de control al versiunilor (VCS). Pentru mai multe informații, consultați secțiunea «Utilizarea surselor VCS», de mai jos.
Fișierele din lista de surse cu extensiile .sig, .sign sau .asc sunt recunoscute de makepkg ca semnături PGP și vor fi utilizate automat pentru a verifica integritatea fișierului sursă corespunzător.
validpgpkeys (listă)
Sunt acceptate numai amprentele digitale complete. Acestea trebuie să fie scrise cu majuscule și nu trebuie să conțină caractere de spațiu alb.
noextract (listă)
cksums (câmp)
md5sums, sha1sums, sha224sums, sha256sums, sha384sums, sha512sums, b2sums (câmp)
groups (listă)
arch (listă)
backup (listă)
depends (listă)
Dacă numele dependenței pare a fi o bibliotecă (se termină cu .so), makepkg va încerca să găsească un binar care depinde de bibliotecă în pachetul construit și va adăuga versiunea necesară pentru binar. Adăugarea versiunii de către dvs. înșivă, dezactivează detectarea automată.
Pot fi adăugate dependențe suplimentare specifice arhitecturii prin adăugarea unui semn de subliniere și a numelui arhitecturii, de exemplu, depends_x86_64=().
makedepends (listă)
Se pot adăuga dependențe de construire (makedepends) suplimentare specifice arhitecturii prin adăugarea unei liniuțe de subliniere și a numelui arhitecturii, de exemplu, makedepends_x86_64=().
checkdepends (listă)
Se pot adăuga dependențe de verificare „checkdepends” suplimentare specifice arhitecturii prin adăugarea unui semn de subliniere și a numelui arhitecturii, de exemplu, checkdepends_x86_64=().
optdepends (câmp)
optdepends=('python: for library bindings')
Alte dependențe opționale „optdepends” specifice arhitecturii pot fi adăugate prin adăugarea unui semn de subliniere și a numelui arhitecturii, de exemplu, optdepends_x86_64=().
conflicts (câmp)
Alte conflicte „conflicts” specifice arhitecturii pot fi adăugate prin adăugarea unei liniuțe de subliniere și a numelui arhitecturii, de exemplu, conflicts_x86_64=().
provides (câmp)
De asemenea, sunt posibile dispoziții în versiune, în formatul nume=versiune. De exemplu, dcron poate furniza cron=2.0 pentru a satisface dependența cron>=2.0 a altor pachete. Dispozițiile care implică operatorii > și < nu sunt valabile, deoarece pot fi furnizate numai versiuni specifice ale unui pachet.
Dacă numele dispoziției pare a fi o bibliotecă (se termină cu .so), makepkg va încerca să găsească biblioteca în pachetul construit și va adăuga versiunea corectă. Adăugând versiunea dvs. înșivă, dezactivați detectarea automată.
Se pot adăuga furnizări „provides” suplimentare specifice arhitecturii prin adăugarea unei liniuțe de subliniere și a numelui arhitecturii, de exemplu, provides_x86_64=().
replaces (listă)
Sysupgrade este în prezent singura operație pacman care utilizează acest câmp. O sincronizare sau o actualizare normală nu va utiliza valoarea acestuia.
Se pot adăuga înlocuiri „replaces” suplimentare specifice arhitecturii prin adăugarea unei liniuțe de subliniere și a numelui arhitecturii, de exemplu, replaces_x86_64=().
options (serie de opțiuni)
strip
docs
libtool
staticlibs
emptydirs
zipman
ccache
distcc
buildflags
makeflags
debug
lto
FUNCȚII DE ÎMPACHETARE
În plus față de directivele de mai sus, PKGBUILD-urile necesită un set de funcții care oferă instrucțiuni pentru construirea și instalarea pachetului. PKGBUILD trebuie să conțină cel puțin o funcție package() care instalează toate fișierele pachetului în directorul de împachetare, funcțiile opționale prepare(), build() și check() fiind utilizate pentru a crea aceste fișiere din sursă.
Aceasta este direct furnizată și executată de makepkg, astfel încât tot ceea ce Bash sau sistemul are disponibil este disponibil pentru utilizare aici. Asigurați-vă că orice comenzi exotice utilizate sunt acoperite de lista „makedepends”.
Dacă creați variabile proprii în oricare dintre aceste funcții, se recomandă utilizarea cuvântului-cheie local Bash pentru a defini variabila în interiorul funcției.
Funcția package()
Funcția verify()
Funcția prepare()
Funcția build()
Funcția check()
Toate variabilele de mai sus, cum ar fi $pkgname și $pkgver, sunt disponibile pentru utilizare în funcțiile de împachetare. În plus, makepkg definește următoarele variabile:
srcdir
pkgdir
startdir
SCINDAREA PACHETULUI
makepkg permite construirea mai multor pachete dintr-un singur PKGBUILD. Acest lucru se realizează prin atribuirea unei liste de nume de pachete directivei pkgname. Fiecare pachet scindat utilizează o funcție de împachetare corespunzătoare cu numele package_foo(), unde foo este numele pachetului scindat.
Toate opțiunile și directivele pentru pachetele scindate au implicit valorile globale indicate în PKGBUILD. Cu toate acestea, următoarele pot fi suprascrise în cadrul funcției de ambalare a fiecărui pachet scindat: pkgdesc, arch, url, license, groups, depends, optdepends, provides, conflicts, replaces, backup, options, install și changelog.
Rețineți că makepkg nu ia în considerare dependențele pachetelor scindate atunci când verifică dacă dependențele sunt instalate înainte de construirea pachetului și cu „--syncdeps”. Toate pachetele necesare pentru realizarea pachetului trebuie să fie specificate în listele globale depends și makedepends.
O directivă globală opțională este disponibilă la construirea unui pachet scindat:
pkgbase
SCRIPT DE INSTALARE/ACTUALIZARE/ELIMINARE
Pacman are capacitatea de a stoca și executa un script specific pachetului atunci când instalează, elimină sau actualizează un pachet. Acest lucru permite unui pachet să se configureze singur după instalare și să efectueze o acțiune opusă la eliminare.
Momentul exact în care scriptul este rulat variază în funcție de fiecare operație și ar trebui să fie auto-explicativ. Rețineți că, în timpul unei operații de actualizare, nu va fi apelată niciuna dintre funcțiile de instalare sau eliminare.
Scripturilor le sunt transmise unul sau două „șiruri de versiuni complete”, unde un șir de versiune completă este fie pkgver-pkgrel, fie epoch:pkgver-pkgrel, dacă „epoch” este diferită de zero.
pre_install
post_install
pre_upgrade
post_upgrade
pre_remove
post_remove
Pentru a utiliza această caracteristică, creați un fișier precum pkgname.install și puneți-l în același director cu scriptul PKGBUILD. Apoi utilizați directiva «install»:
install=nume-pachet.install
Scriptul de instalare nu trebuie să fie specificat în lista de surse. Un fișier de instalare șablon este disponibil în /usr/share/pacman ca proto.install pentru referință cu toate funcțiile disponibile definite.
UTILIZAREA SURSELOR VCS
Construirea unei versiuni de dezvoltare a unui pachet folosind surse dintr-un sistem de control al versiunilor (VCS) este activată prin specificarea sursei de forma:
source=('director::url#fragment?interogare')
În prezent, makepkg acceptă sistemele de control al versiunilor Bazaar, Git, Subversion, Fossil și Mercurial. Pentru alte sisteme de control al versiunilor, clonarea manuală a depozitelor din amonte trebuie efectuată în funcția prepare().
Unele surse VCS, cum ar fi Git, acceptă fixarea „checkout-ului” printr-o sumă de control a conținutului său, utilizând funcționalități de export deterministe, cum ar fi „git archive”.
Adresa URL a sursei este împărțită în patru componente:
director
url
fragment
bzr
fossil
git
hg
svn
query
EXEMPLU
Ceea ce urmează, este un exemplu de PKGBUILD pentru pachetul patch. Pentru mai multe exemple, consultați fișierele de construire ale pachetelor din distribuția dumneavoastră.
# Maintainer: Joe User <joe.user@example.com> pkgname=patch pkgver=2.7.1 pkgrel=1 pkgdesc="A utility to apply patch files to original sources" arch=('i686' 'x86_64') url="https://www.gnu.org/software/patch/patch.html" license=('GPL') groups=('base-devel') depends=('glibc') makedepends=('ed') optdepends=('ed: for "patch -e" functionality') source=("ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz"{,.sig}) sha256sums=('9124ba46db0abd873d0995c2ca880e81252676bb6c03e0a37dfc5f608a9b0ceb' 'SKIP') build() { cd "$srcdir/$pkgname-$pkgver" ./configure --prefix=/usr make } package() { cd "$srcdir/$pkgname-$pkgver" make DESTDIR="$pkgdir/" install }
CONSULTAȚI ȘI
makepkg(8), pacman(8), makepkg.conf(5)
Consultați situl web pacman la https://archlinux.org/pacman/ pentru informații actuale despre «pacman» și instrumentele sale conexe.
ERORI
Hibe? Probabil că glumiți; nu există nicio hibă în acest software&. Dar dacă se întâmplă să fie ceva greșit, depuneți o cerere de rezolvare a problemei cu cât mai multe detalii posibile la: https://gitlab.archlinux.org/pacman/pacman/-/issues.
AUTORI
Responsabilii actuali:
Contribuitori importanți din trecut:
Pentru contribuitori suplimentari, folosiți «git shortlog -s» în depozitul .git pacman.
TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.
27 noiembrie 2024 | Pacman 7.0.0 |