Fordítás Devtools segítségével
Devtools konfigurációs fájlok
Helyi adattár
Csomagolás gyorsabb
A Devtools csomag eredetileg a Megbízható felhasználók számára készült, hogy megfelelően hozzon létre csomagokat a hivatalos adattárak számára. Azonban a hétköznapi felhasználók is használhatják AUR csomagok, vagy akár módosított hivatalos csomagok készítésére.
Tekintse meg ezt az útmutatót az AUR általános megértéséhez és használatához, beleértve a beszerzését is PKGBUILD. Ez a dokumentum csak a Devtools-ra vonatkozó lépéseket mutatja be, ha ezt a módszert választja a csomag fordításához.
A Devtools külön tiszta Arch telepítést tart fenn, amely itt található /var/lib/archbuild/<TARGET>/root, és csak csomagcsoportokat baseés base-devel. Ha ez a tiszta telepítés nem létezik, akkor automatikusan létrehozza. Ha létezik, automatikusan frissíti a benne lévő csomagokat. Amikor a Devtools csomagot készít, akkor ennek a tiszta telepítésnek a másolatával kezdődik, csak a másolatba telepíti a szükséges csomagokat, bemásolja a forráskódot, elvégzi a fordítást és a csomagolást, és csak a kapott csomagot másolja ki, a hivatalos adattárakban találhatóakkal azonos formában.
A Devtoolsnak vannak előnyei a makepkgközvetlen futtatással szemben . Ennek egyik előnye, hogy base-devela lefordításához, de nem futtatásához szükséges egyéb csomagok soha nem záródnak le a fő rendszerben. Ez kevesebb csomagot, amelyet időnként frissíteni kell, és aggályai vannak. Bár elsősorban az Arch csomagok karbantartói számára jelent előnyt, ez a folyamat könnyen felfedi, ha a PKGBUILDhelytelen, például ha kimarad egy függőség a listából, amelyet a karbantartó történetesen már telepített a fő rendszerükre. Használhat olyan gépet is, amely gyorsabban építi fel a csomagokat, és a kapott csomagot egy lassabb gépre másolja, amely futtatja, anélkül, hogy szennyezné az építőgép telepítését.
A fő hátrány az, hogy a tiszta gyökér mindig ott van, körülbelül 800 MB-ot foglal el, és általában egyetlen példány több helyet foglal el. Ne feledje, ha /var/lib/archbuild/Btrfs-t használ, a tiszta gyökér másolata Btrfs-pillanatképként indul, így ezek a fájlok nem foglalnak el dupla helyet. A tiszta gyökér mindig ott van, hogy ne kelljen újratelepíteni minden alkalommal, amikor csomagot készítenek.
A Devtools telepítése:
# pacman -S devtools
Csomag készítéséhez a Devtools tartalmazza a -t archbuild, de ezt nem lehet közvetlenül futtatni. Tartalmazza a szimbólum hivatkozásait is {extra, gnome-unstable, kde-unstable, staging, testing}-x86_64-build. A futtatásához használt szimbolikus hivatkozást ellenőrzi archbuild, hogy meghatározza, melyik célt szeretné használni. Futtatható ezeknek az instabil/staging/tesztelő tárolóknak a használatára, amelyeknek lehetnek újabb verziói, mint amilyeneket a hivatalos adattárakba kiadtak. Ahhoz, hogy a hivatalos tárolókban nem AUR csomagokban, a könyvtárban a PKGBUILDpéldául a könyvtár által készített git clone, futtassa a következő:
$ extra-x86_64-build
Megjegyzés: Az útmutató többi része egyszerűen a következőre fog hivatkozni extra-x86_64-build.
A futás befejezése után a következő eredmények lesznek:
/var/lib/archbuild/extra-x86_64/root- Tiszta chroot , amely egy naprakész telepítés csak csomagcsoportokkal baseés base-devel.
/var/lib/archbuild/extra-x86_64/<USERNAME>- Ez tartalmazni fog egy build chrootot . Ez a tiszta chroot másolata a készülő csomag felépítéséhez vagy futtatásához szükséges függőségekkel, valamint a forráskóddal, a fordítási eredményekkel és a csomaggal.
- A könyvtár, amelyben tartózkodik, tartalmazza a csomag- és összeállítási naplófájlokat, valamint a letöltött forráskódot.
A végén előfordulhat, hogy " Checking PKGBUILD" és " Checking <PKGNAME>-<PKGVER>-<PKGREL>-<ARCH>.pkg.tar.xz". Az ezek utáni sorokat a program adja ki namcap, amely automatikusan megkeresi a problémákat, például a hibás formátumú PKGBUILDfájlokat, a függőségeket, beleértve azokat, amelyeket a csomag nem használ, a nem olyan függőségeket, amelyeket a csomag használ, és így tovább. Gyakran hamis pozitív eredményeket generál namcap, de ez egy nagyszerű eszköz a dolgok kivizsgálására. Ha a csomag megfelelően működik, nem jó ötlet a karbantartót figyelmeztetni a namcapkimenetre, hacsak nem vizsgálta meg, és nem ellenőrizte, hogy változtatásokat kell végrehajtani.
Használhatja pacmana csomag telepítéséhez, amely telepíti a csomag futtatásához szükséges függőségeket, amennyiben azok hivatalos lerakatokban vagy helyi tárolókban vannak.
Használjon helyi adattárat az itt leírtak szerint , vagy telepítse közvetlenül a fájlt:
# pacman -U <PKGNAME>-<PKGVER>-<PKGREL>-<ARCH>.pkg.tar.xz
Ha extra-x86_64-buildmost, vagy bármikor később ezzel vagy egy másik csomaggal újra futtatná, szükség esetén frissíti a tiszta chrootot, törli a build chrootot, és a tiszta chroot új másolatát készíti, és ugyanezt a folyamatot hajtja végre. Ha a könyvtárában még mindig van a legutóbb letöltött forráskód, akkor azt fogja használni. Ha a csomag egy fejlesztői AUR csomag, akkor új módosításokat fog végrehajtani, nem pedig újraklónozni.
Belsőleg extra-x86_64-buildfut makechrootpkg, ami belsőleg meghívja a makepkg. A lehetőségek extra-x86_64-builda következők:
-c: Tisztítsa meg a chrootokat a teljes /var/lib/archbuild/extra-x86_64/könyvtár eltávolításával és újbóli létrehozásával, beleértve a tiszta chrootot és az összes build chroot könyvtárat. Erre ritkán van szükség, csak akkor, ha a tiszta chroot megsérül, vagy ha a Devtools frissítése megtöri a visszafelé kompatibilitást.
-r <dir>: Használjon más könyvtárat, mint /var/lib/archbuild/extra-x86_64/a chrootok tárolására.
Az extra-x86_64-buildafter argumentumok --átadódnak a következőnek makechrootpkg, amikor belsőleg használja. Számos argumentum mindig automatikusan átadódik extra-x86_64-build-ról -ra makechrootpkg. Ezek az automatikus argumentumok -r <value given to extra-x86_64-build -r option if given, /var/lib/archbuild/extra-x86_64 otherwise> -c -n. Azt mondják, makechrootpkghogy távolítsuk el a build chrootot, és készítsük el a tiszta chroot friss másolatát, és futtassuk namcapa csomagot, ha sikeresen felépül. A leggyakrabban használt lehetőség, hogy lehet átadni makechrootpkgaz -l <copy name>. Ez az a könyvtárnév, amely a build chroot-ot adja a helyett <USERNAME>, amely több másolat karbantartásához vagy több csomag egyidejű fordításához hasznos.
Minden makechrootpkgafter argumentum --átkerül a következőhöz makepkg, amikor belsőleg használja a csomag felépítéséhez. Az első alkalommal makepkgfuttatja makechrootpkg, saját változtathatatlan opcióival, szükség esetén letölti a forrásfájlokat, és végrehajtja az integritás ellenőrzését; így ezen a futáson semmit nem lehet továbbítani. makepkgMásodszor is lefut a csomag felépítéséhez, és mindig automatikusan átadja az makepkgargumentumokat, --syncdeps --noconfirm --log --holdver --skipintegamelyek makepkga build chroot-on belül azt mondják, hogy automatikusan telepítse a hiányzó függőségeket, amelyek szükségesek a csomag felépítéséhez és használatához, ne kérjen megerősítést a alatt pacman, naplózza az építési folyamatot szövegbe fájlok mellett stdoutne frissítse a forráskódot, ha verziókezelő rendszerben van, és ne végezzen forrásfájl-ellenőrzést.
Ezeket a következő űrlap segítségével láncolhatja össze:
$ extra-x86_64-build <DEVTOOLS-OPTIONS> -- <MAKECHROOTPKG-OPTIONS> -- <MAKEPKG-OPTIONS>
Vegye figyelembe, hogy /var/lib/archbuildúgy kezelhető, mintha egy ideiglenes könyvtár lenne. Ha több Vultr merevlemezünk van, érdemes ide RAID0 (csíkos) fájlrendszert csatolni. Ha sok RAM-mal rendelkezik, csatlakoztathat egy RAM-mal támogatott fájlrendszert is, mint pl tmpfs. A csomag felépítése után a program kimásolja abba a könyvtárba, extra-x86_64-buildahonnan futott , és ha akarja, ezen a ponton törölheti a /var/lib/archbuild. A következő futás lassabb lenne, mert új, tiszta gyökérre van szükség. Alternatív megoldásként törölheti /var/lib/archbuild/<USERNAME>, hogy többletterületet szerezzen vissza a build chrootból, mielőtt a Devtools következő futtatása automatikusan törli. Tehát még akkor is, ha az ide csatlakoztatott RAID0 fájlrendszer meghibásodik, a legtöbb veszteség egy folyamatban lévő fordítás lenne.
A Devtools konfigurációs fájljaival kapcsolatban meg kell jegyezni néhány konkrétumot. Ezek található /usr/share/devtools/, mint például makepkg-x86_64.conf, és pacman-extra.conf:
- Az olyan
/etcfájlok esetében, mint a makepkg.confés pacman.conf, biztonságosan szerkesztheti őket a helyükön, és a csomag frissítése után nem írja felül a módosításokat. Inkább elmenti az új konfigurációs fájlokat (ha megváltoztak az előző verzióhoz képest), amelyek végződése .pacnew. A Devtools konfigurációs fájlok azonban olyanok, /usr/share/amelyekben nem a felhasználók szerkeszthetők, így a Devtools frissítésekor teljesen felülírja a fájlok módosításait anélkül, hogy figyelmeztetné Önt. Ennek a viselkedésnek a módosítását javasolták és elutasították, mert ez segít abban, hogy a csomagok ugyanazokkal a fordítási beállításokkal kerüljenek elküldésre a hivatalos adattárakba.
- A
MAKEFLAGS, PACKAGER, és {SRC,SRCPKG,PKG,LOG}DESTértékei /etc/makepkg.confhelyett a /usr/share/devtools/makepkg-x86_64.conf.
Helyi adattár
Ha olyan csomagokat pacmanépítesz , amelyek függőségei vannak az általad felépített más csomagoktól, akkor helyi tárolót kell használnod, hogy amikor a build chroot-on belül fut, az megtalálja a függőségeket.
A helyi adattár beállításához olvassa el az útmutató „Helyi adattár ” című részét.
Egyéni cél létrehozása:
# ln -s archbuild /usr/bin/custom-x86_64-build
# cp /usr/share/devtools/pacman-{extra,custom}.conf
Szerkessze /usr/share/devtools/pacman-custom.conf, és a végére adja hozzá a következőket:
[archLocalRepo]
SigLevel = Optional TrustAll
Server = file:///archLocalRepo
Szerkessze /etc/pacman.conf, és adja hozzá a következőket. Ez arra kényszeríti a könyvtárat, hogy a chrootban bind módon kerüljön beillesztésre:
CacheDir = /var/cache/pacman/pkg/ /archLocalRepo/
Most a használat helyett extra-x86_64-buildhasználja ezt:
$ custom-x86_64-build
Ha mindig az egyéni célt szeretné használni, akkor törölheti a /var/lib/archbuild/extra-x86_64-build/könyvtárat, ha létezik, mivel a chrootok mostantól a -ban lesznek /var/lib/archbuild/custom-x86_64-build/.
Csomagolás gyorsabb
Megjegyzés: A menetes csomagolás engedélyezése magában foglalja a /usr/share/devtoolskonfigurációs fájlok szerkesztését , ami hivatalosan nem támogatott, ezért ezt a módosítást minden alkalommal el kell végeznie a Devtools frissítésekor.
A Devtools a teljes csomagot archív formátumba egyesíti. Alapértelmezés szerint .tar.xzegyetlen szálat használ a xztömörítéshez.
Több CPU-s rendszereken engedélyezheti xztöbb szál használatát a szerkesztéssel /usr/share/devtools/makepkg-x86_64.conf, és módosíthatja a következő sort:
COMPRESSXZ=(xz -c -z -)
Ha annyi szálat szeretne engedélyezni, ahány virtuális magja van:
COMPRESSXZ=(xz -c -z - --threads=0)
Ha engedélyezni szeretné több virtuális mag használatát, de nem mindegyiket, hogy csökkentse a rendszer teljes teljesítményére gyakorolt hatást, adjon hozzá egy adott számot:
COMPRESSXZ=(xz -c -z - --threads=21)
A virtuális magok számánál több szál megadása csökkenti a teljesítményt.
Ha nem bánja, hogy a csomagfájl (esetleg sokkal) nagyobb, kapcsolja ki a tömörítést a szerkesztéssel /usr/share/devtools/makepkg-x86_64.conf, és módosítsa a következő sort:
PKGEXT='.pkg.tar.xz'
Módosítsa a következőre:
PKGEXT='.pkg.tar'