Arch build system (Magyar)
Az Arch build system (ABS. Magyarul: Arch létrehozási rendszer, Arch építési rendszer.) tulajdonképpen egy rendszer amely a szoftver forráskódjának a lefordítását és a lefordított szoftver csomagolását végzi. Amíg a pacman az Arch operációs rendszer speciális segédprogramja, amely a binárisra lefordított szoftvercsomagok kezelésére szolgál, addig az Arch build system segédprogramkészlet arra szolgál, hogy forráskódból a számítógépre feltelepíthető .pkg.tar.zst szoftvercsomagokat hozza létre.
Az Arch build system összehasonlítható a *BSD ports rendszerével, amely automatizálja a szoftver forráskódból történő lefordításának folyamatát. A rendszer egy portot használ a megadott szoftver letöltésére, kicsomagolására, javítására, lefordítására és feltelepítésére. Egy port csupán egy kis könyvtár a felhasználó számítógépén, a feltelepítendő szoftver nevét viselve, amely néhány fájlt tartalmaz az utasításokkal a szoftver forráskódból történő lefordításához és feltelepítéséhez. Ez a szoftver számítógépre történő feltelepítését egyszerűvé teszi azáltal, hogy csak be kell gépelni a make vagy make install clean parancsot a port könyvtárában.
Az Arch build system hasonló koncepción alapul. Tartalmaz egy gyűjteményt a git-tárolókból minden, az Arch Linuxban elérhető szoftvercsomag számára. Minden tároló tartalmaz egy PKGBUILD fájlt (és néha más fájlokat is), de nem tartalmazza a szoftver forráskódját vagy binárisát. Amikor Ön a makepkg parancsot futtatja egy könyvtárban, akkor a szoftver forráskódjai letöltődnek, a szoftver forráskódból lefordítódik, majd a build könyvtáron belül csomagolódik. Ezt követően használható a pacman annak érdekében, hogy a szoftvercsomag fel legyen telepítve a számítógépre.
Az Arch Build System segédprogramjai és a szoftvercsomagok létrehozásának a folyamata
Az Arch build system számos olyan összetevőt és segédprogramot tartalmaz, amelyek a szoftvercsomagok forráskódból történő létrehozásának folyamatában kerülnek felhasználásra:
- Repository
- A tároló (kódtároló, programkódtároló, angolul repository) az a könyvtárszerkezet, amely tartalmazza az összes hivatalos szoftvercsomag létrehozásához szükséges fájlt, de nem tartalmazza magukat a szoftvercsomagokat, illetve nem tartalmazza a szoftverek forráskódfájljait. A tároló a gitlab.archlinux.org webhelyen lévő Git tárolók formájában érhető el. További információért tekintse meg a #Repository struktúrája című szakaszt.
- PKGBUILD
- Egy Bash szkriptfájl, amely tartalmazza a forráskód URL-címét, tartalmazza a forráskód gépi kódra történő lefordításának utasításait, és tartalmazza a szoftvercsomagolási utasításokat.
- makepkg
- Egy parancssorban futtatható program, amely beolvassa a
PKGBUILDszkriptfájlokat, automatikusan letölti és lefordítja a forráskódokat, majd létrehoz egy .pkg.tar* fájlt amakepkg.confbeállításfájlban megtalálhatóPKGEXTtömb szerint. Ön a makepkg segítségével saját egyéni szoftvercsomagokat is elkészíthet az Arch User Repository (AUR) vagy harmadik fél forráskódjaiból. További információért tekintse meg a Szoftvercsomagok létrehozása című oldalt.
- pacman
- A pacman teljesen különálló program, de szükségszerűen — akár a makepkg által, akár manuális úton — meghívásra kerül a létrehozott szoftvercsomagok feltelepítése érdekében, eltávolítása érdekében, valamint a szoftvercsomag-függőségek letöltése érdekében.
- devtools pkgctl
- A devtools(7) az Arch Linux disztribúció hivatalos szoftvercsomag-tárolójába beletartozó szoftvercsomagok létrehozására és karbantartására szolgáló több segédprogram. A pkgctl(1) egy magas szintű segédprogram, amely segítséget nyújt az Arch Linux szoftvercsomagok forráskódtárolóikból történő létrehozásához, és a bináris tárolókba történő kiadásához.
- AUR
- Az Arch User Repository elkülönül a hivatalos
PKGBUILDfájltárolótól, de az AUR-ból származó szoftvercsomagok ugyanazon segédprogramok használatával hozhatók létre. Több tízezer felhasználó által beküldöttPKGBUILDszkriptfájlt tartalmaz olyan szoftverekhez, amelyek nem érhetők el hivatalos Arch szoftvercsomagok formájában. Ha Önnek a hivatalos Arch fán kívül kell egy szoftvercsomagot létrehoznia, akkor jó eséllyel megtalálható az AUR tárolóban.
PKGBUILD szkriptfájlok feltételezik, hogy a szoftvercsomagok tiszta chroot környezetben kerülnek létrehozásra. A szoftverek szennyezett létrehozó rendszeren történő létrehozása sikertelen lehet, vagy váratlan működést okozhat futásidőben, mivel ha a létrehozó rendszer (build rendszer) dinamikusan érzékeli a szoftvercsomag-függőségeket, akkor az eredmény attól függ, hogy milyen szoftvercsomagok érhetők el a létrehozó rendszeren.Repository struktúrája
Minden szoftvercsomagnak saját forráskód tárolója van az Arch Linux GitLab példányán található archlinux/packaging/packages névtérben. Minden tároló tartalmazza a PKGBUILD szkriptfájlt és a hivatalos létrehozásokhoz használt fájlokat. Emellett néhány olyan fájl is megtalálható itt, amelyeket a fejlesztők használnak a létrehozási folyamathoz.
Például az acl könyvtárstruktúrája így néz ki:
acl ├── keys │ └── pgp │ ├── 259B3792B3D6D319212CC4DCD5BF9FEB0313653A.asc │ ├── 600CD204FBCEA418BD2CA74F154343260542DF34.asc │ └── B902B5271325F892AC251AD441633B9FE837F581.asc ├── PKGBUILD └── .SRCINFO
A szoftvercsomag forráskódja nincs jelen a könyvtárban. Ehelyett a PKGBUILD szkriptfájl tartalmaz egy URL-címet, amely letölti a forráskódot a szoftvercsomag létrehozásakor.
Amikor egy hivatalos szoftvercsomag elkészül, kiadásra kerül valamelyik hivatalos szoftvercsomag-tárolóban: core, extra, multilib, vagy először valamelyik tesztelési szoftvercsomag-tárolóban. Ezek a szoftvercsomag-tárolók bináris tárolók, és nem a GitLabon vannak hosztolva, hanem tükörszervereken vannak elérhetővé téve a felhasználóknak.
Felhasználási esetek
Az Arch build rendszer bizonyos, a forráskódból történő fordítással kapcsolatos feladatokat automatizál. Felhasználási esetei a következők:
- Bármely olyan eset, amikor szoftvercsomagot kell forráskódból fordítania vagy újrafordítania.
- Hivatalos bináris szoftvercsomagok készítése Arch Linux számára fejlesztők és csomagolóik számára.
- Új szoftvercsomagok készítése és telepítése olyan szoftverekből, amelyekhez még nincs elérhető szoftvercsomag. (Tekintse meg a Szoftvercsomagok létrehozása című oldalt.)
- Meglévő szoftvercsomagok testreszabása az Ön igényei szerint. (Például: Opciók engedélyezése vagy letiltása, javítások alkalmazása.)
- A teljes rendszer újbóli felépítése a saját kódfordítói jelölőzászlókkal, "FreeBSD-stílusban".
- Saját egyedi kernel tiszta fordítása és telepítése. (Tekintse meg a Kernel forráskódjának lefordítása binárisan futtatható kódra című leírást.)
- Kernelmodulfájlok működésének biztosítása egy egyedi kernellel.
- Arch szoftvercsomag újabb, régebbi, béta vagy fejlesztői verziójának könnyű fordítása és telepítése a PKGBUILD verziószámának szerkesztésével.
Használat
PKGBUILD forráskód beszerzése
Amennyiben Ön egy szoftvercsomagot forráskódból szeretne összeállítani, akkor a szükséges PKGBUILD szkriptfájlt megszerezheti a pkgctl segédprogrammal, vagy közvetlenül a Git parancs használatával.
A pkgctl segédprogram használata
Előfeltételként telepítse a devtools szoftvercsomagot. A pkgctl egy olyan segédprogram, amely megkönnyíti az Arch Linux szoftvercsomagok forráskódjának előkészítését.
Ha Ön a pkgctl segítségével a pkgname nevű szoftvercsomag legfrissebb létrehozási fájljait tartalmazó Git tárolót szeretné klónozni, akkor adja ki a következő parancsot:
$ pkgctl repo clone pkgbase
pkgctl repo clone --protocol=https pkgbase.Vegye figyelembe, hogy itt a létrehozási forráskódfájlok alatt a PKGBUILD szkriptfájlokat, valamint esetleg néhány egyéb szükséges fájlt, például kulcsfájlokat értjük. Ez azt jelenti, hogy az Arch Linux szoftvercsomag létrehozási rendszeréhez szükséges alapvető fájlokról van szó. Nem utal a csomag által készített forráskódfájlokra, például C vagy Python fájlokra, amelyeket a csomag szerzői írtak.
Ez nemcsak a jelenlegi létrehozási forráskódfájlokat adja meg Önnek, hanem azok korábbi verzióit is. Továbbá az összes többi git parancsot is használhatja egy korábbi csomagverzió ellenőrzésére vagy egyedi változtatások nyomon követésére.
Ha egy szoftvercsomag konkrét verzióját szeretné beszerezni, akkor használhatja a következőhöz hasonló parancsot:
$ pkgctl repo clone --switch="2:1.19.5-1" go
A további információkért és az elérhető egyéb parancsokért olvassa el a pkgctl-repo-clone(1) man súgót.
Git közvetlen használata
Használja a következő git parancsot egy szoftvercsomag leklónozása érdekében:
$ git clone https://gitlab.archlinux.org/archlinux/packaging/packages/pkgname.git
Például az Apache webszerver létrehozási fájljainak a lemásolása érdekében a következőt kell tenni:
$ git clone https://gitlab.archlinux.org/archlinux/packaging/packages/apache.git
Szoftvercsomag létrehozása
Állítsa be a makepkg parancsot a letöltött PKGBUILD szkriptfájlokból történő szoftvercsomagok összeállításához, ahogyan az a makepkg#Beállítás című részben le van írva.
Ezután másolja át a módosítani kívánt PKGBUILD szkriptfájlt tartalmazó könyvtárat egy új helyre. Végezze el ott a kívánt módosításokat, és ugyanott használja a makepkg parancsot a makepkg#Használat című leírás szerint az új szoftvercsomag létrehozásához és feltelepítéséhez.
Tippek és trükkök
Módosított szoftvercsomagok megőrzése
Az operációs rendszer pacman szoftvercsomag-kezelővel történő frissítése során a módosított szoftvercsomagot felül fogja írni a hivatalos szoftvercsomag-tárolókból származó azonos nevű szoftvercsomag. Az alábbi utasításokban az olvasható, hogy miként lehet ezt a viselkedést elkerülni.
Illessze be a csoporttömböt a PKGBUILD szkriptfájlba, és adja hozzá a szoftvercsomagot egy modified nevű csoporthoz.
PKGBUILD
groups=('modified')
Adja hozzá ezt a csoportot a IgnoreGroup szekcióhoz a /etc/pacman.conf fájlban.
/etc/pacman.conf
IgnoreGroup = modified
Ha új szoftvercsomag-verziók érhetők el a hivatalos szoftvercsomag-tárolókban a rendszerfrissítés során, akkor a pacman kiír egy megjegyzést, hogy kihagyja ezt a frissítést, mivel az szerepel az IgnoreGroup szekcióban. Ekkor a módosított szoftvercsomagot újból létre kell hozni, hogy elkerülje a részleges frissítéseket.