Profil (Portage)
emerge — configuration — ebuild repository — dispatch-conf
world file — USE flags — ebuilds — profiles
upgrades — using testing packages — binary packages
tools — gentoolkit — eselect
Portage FAQ — cheat sheet — FAQ
all articles
A Portage profil határozza meg a USE jelölőzászlók alapértelmezett állapotát, a /etc/portage/make.conf fájlban található legtöbb változóhoz beállítja az alapértelmezett értékeket, egy alaprendszerhez tartozó szoftvercsomag-készletet definiál, és kiválasztja az elérhető szoftvercsomag verziókat.
A profilok központi szerepet játszanak a Gentoo operációs rendszerben, mivel meghatározzák az operációs rendszer alapvető beállításait. Új profilok akkor válnak elérhetővé, amikor alapvető változások történnek a Gentoo operációs rendszer működésében. A profilkiadások között évek is eltelhetnek. Az előző (17.1-es) profil például majdnem 6 éves volt.
A profilt az operációs rendszer telepítése során kell kiválasztani, az operációs rendszer tervezett használatának megfelelően.
A profilok általában könnyen átkapcsolhatók, amikor arra szükség van, bár egyes profilváltoztatásokhoz több lépés szükséges, mint pusztán a profilátváltás. Kérjük Önt, hogy kizárólag a profil verzióit (különböző nevek rendben vannak) változtassa meg a megfelelő hírelemek elolvasása és követése után. Nem lehet átállni más ABI-val rendelkező profilokra (pl. tiszta LLVM vagy musl) újratelepítés nélkül.
A profilok az ebuild szoftvercsomag-tároló alapjain vannak definiálva. A fő szoftvercsomag-tárolóból származó profilokat a Gentoo fejlesztők tartják karban, de a felhasználók önmaguk is meghatározhatják a sajátjaikat.
Az eselect nevű szoftvereszköz profile
modulja lehetővé teszi a felhasználók számára a profilok átkapcsolását.
Tekintse meg a Kézikönyv című dokumentumot, amely információkat tartalmaz a profilok kiválasztásával kapcsolatban.
Mi a profil?
A /var/db/repos/gentoo/profiles a profile alkönyvtárak beállításfájljait tárolja. A szimbolikus link, /etc/portage/make.profile, leírja az aktuális profil futó architektúráját, az alapértelmezett USE flags, valamint a @system csomag ebuildjeit.
A Package Manager Specification meghatározza, hogy miként állítják be vagy törlik a profilok a USE jelölőzászlókat (globálisan vagy csomagonként), hogyan állítják be vagy törlik a USE jelölőzászlókat feltétel nélkül (globálisan az architektúra stabil ágához vagy csomagonként), valamint, hogy miként maszkolják a szoftvercsomagokat vagy a meghatározott verziókat.
Az elavult profilok egy deprecated fájlt helyeznek el a könyvtárukban, amely megnevezi az új frissítendő profilt, és automatikusan figyelmezteti a rendszergazdákat a Portage segítségével.
Az amd64 architektúra alapértelmezett profilja a /var/db/repos/gentoo/profiles/default/linux/amd64/23.0, tehát a 23.0 profil. A szülőkönyvtárakban található fájlok szintén a profil részét képezik (ezért azok megosztottak különböző alprofilok között). Ez az oka annak, hogy a profilokat kaszkádos rendszerűnek nevezik. Az eselect profile beállíthatja a profilt.
Számos oka lehet annak, hogy új profil jön létre: Például az alapvető szoftvercsomagok új verzióinak a kiadása miatt (mint a sys-apps/baselayout, sys-devel/gcc, vagy sys-libs/glibc), amelyek inkompatibilisek az előző verziókkal, az alapértelmezett USE jelölőzászlók vagy a virtuális hozzárendelések megváltozása, esetleg a rendszerszintű beállítások megváltozása miatt.
A profilok a következőképpen vannak meghatározva:
- stable - Stabil kiadás.
- dev - Fejlesztés alatt áll.
- exp - Kísérleti jellegű.
Stabil (stable) profilok
Ezek teljes mértékben letesztelt profilok, és a felhasználók felé a lehető legegyszerűbb használatot kell biztosítaniuk, mivel várhatóan többnyire egyszerűen csak működnek. A Gentoo CI ellenőrzi, hogy a stabil jelölésű profilok megfelelő szoftverfüggőségi gráffal rendelkeznek-e.
Egy példa a stabil profilokra:
- default/linux/amd64/23.0
- default/linux/amd64/23.0/systemd
- default/linux/amd64/23.0/desktop
Minden stabil profil a végén a (stable) jelöléssel van ellátva.
Fejlesztés alatt álló (dev) profilok
Amíg a szoftverfejlesztők egy profilt 'stable' állapotúnak nem jelölnek, addig az a profil fejlesztés alatt áll. Azok a profilok, amelyek jelenleg fejlesztés alatt állnak, (dev) jelöléssel vannak ellátva. A Gentoo CI ellenőrzi ezeket a profilokat a szoftverfüggőségi gráf problémáira, de csak figyelmeztetést ad ki, nem pedig hibát.
Azok a felhasználók, akik ezeket a dev profilokat használnák, csak abban az esetben tegyék, ha van egy konkrét szükségletük, amelyet csak ezen dev profilok használatával lehet megoldani.
Minden fejlesztői profil a végén egyértelműen (dev) jelöléssel van ellátva.
Kísérleti (exp) profilok
Ahogy a neve is sugallja, a kísérleti profil egy kísérlet. Lehet, hogy új "állandó" profil lesz belőle, de az is előfordulhat, hogy nem így fog történni. Emellett sok egzotikus architektúrájú profil kísérleti jelöléssel van ellátva.
A kísérleti profiloknak működniük kell, mivel egy bizonyos szintű tesztelésen már átestek. Azonban a működtetésükhöz szükséges javítások általában tesztelési kulcsszóval ellátott szoftvercsomagokban találhatók, ezért az ilyen profilokat használóknak globálisan ~ARCH-ot kell futtatniuk, vagy legalább fel kell készülniük arra, hogy a /etc/portage/package.accept_keywords segítségével a legújabb verziókat húzzák be, és hibabejegyzést töltsenek ki a szoftvercsomag stabil állapotának kérelmezésére, ha azt biztonságosnak találják.
Röviden összefoglalva, Ön ezeknek a profiloknak a használata során problémákba ütközhet, így számítson véletlenszerű hibákra.
Egy kísérleti profil példája:
- default/linux/amd64/23.0/musl/llvm
- default/linux/amd64/23.0/musl/hardened
Minden kísérleti profil a végén meg van jelölve egyértelműen egy (exp) jelöléssel.
Az alapértelmezetten engedélyezett USE jelölőzászlók ellenőrzéséhez futtassa a következő parancsot:
user $
USE_ORDER="defaults:pkginternal:repo" emerge --info|grep USE
USE="X a52 aac acl acpi activities alsa amd64 bluetooth branding bzip2 cairo cdda cdr cet crypt cups dbus declarative dri dts dvd dvdr elogind encode exif flac gdbm gif gpm gtk gui iconv icu ipv6 jpeg kde kf6compat kwallet lcms libnotify libtirpc mad mng mp3 mp4 mpeg multilib ncurses networkmanager nls ogg opengl openmp pam pango pcre pdf pipewire plasma png policykit ppds pulseaudio qml qt5 qt6 readline screencast sdl seccomp semantic-desktop sound spell ssl startup-notification svg test-rust tiff truetype udev udisks unicode upower usb vorbis vulkan wayland widgets wxwidgets x264 xattr xcb xft xml xv xvid zlib" ABI_X86="64" ADA_TARGET="gcc_12" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_anon authn_dbm authn_file authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir env expires ext_filter file_cache filter headers include info log_config logio mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext sse sse2" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isyncitrax navcom oceanserver oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 tsip tripmate tnt ublox" GUILE_SINGLE_TARGET="3-0" GUILE_TARGETS="3-0" INPUT_DEVICES="libinput" KERNEL="linux" LCD_DEVICES="bayrad cfontz glk hd44780 lb216 lcdm001 mtxorb text" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php8-2" POSTGRES_TARGETS="postgres16" PYTHON_SINGLE_TARGET="python3_12" PYTHON_TARGETS="python3_12" RUBY_TARGETS="ruby32" VIDEO_CARDS="amdgpu dummy fbdev intel nouveau radeon radeonsi vesa" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipp2p iface geoip fuzzy condition tarpit sysrq proto logmark ipmark dhcpmac delude chaos account"
Profilok közötti váltás
Profilok váltásairól
Bár sok alapvető profilváltoztatás egyszerű, mégis bizonyos profilok közötti váltás többlépcsős folyamat lehet. Ha a felhasználók nem követik helyesen az eljárásokat, akkor problémák merülhetnek fel. Ezért a felhasználóknak biztosítaniuk kell, hogy elolvassák, megértsék és kövessék a megfelelő dokumentációt.
Nem lehetséges olyan profilokra váltani, amelyek eltérő ABI-t használnak (például pure LLVM vagy musl) újratelepítés nélkül.
Előfordulhat, hogy az operációs rendszer használatának megváltozása, egy új profil megjelenése, vagy annak felismerése, hogy egy másik profil jobban megfelel, szükségessé teszi a profilok közötti váltást.
Néhány profilváltoztatás egyszerű, de mások nem triviálisak:
- A Hardened vagy a SELinux profilokra történő váltás, illetve azokból való váltás például konkrét lépéseket igényel, ahogyan azt a releváns dokumentáció leírja.
- Az OpenRC vagy systemd profilokra történő váltás, illetve azokból való váltás egy másik eset, amikor fontos a megfelelő dokumentáció követése.
Ha egy profil újabb verzióra történő átváltása szükséges, akkor például egy új profil megjelenése után (egy "profilfrissítés"), tekintse meg a következő szakaszt a profilok frissítésére vonatkozó információért.
Győződjön meg arról, hogy a Gentoo ebuild szoftvercsomag-kezelő szinkronizálva lett, és az operációs rendszer frissítve van, mielőtt bármilyen profilváltoztatást végezne el.
Mint mindig, az operációs rendszereket rendszeresen menteni kell, különösen az operációs rendszer megváltoztatásai előtt.
Általános profilváltási eljárás
Igazítsa az alábbi utasításokat a konkrét profilváltoztatáshoz – ne kövesse vakon ezeket a lépéseket: Ezek a profilváltoztatás általános vázlatát adják. Nem tekinthető minden profilváltoztatásra vonatkozó végleges módszernek. Figyeljen minden parancs kimenetére, és kövesse az esetlegesen szükséges további lépéseket. Győzödjön meg arról, hogy valóban elolvassa az előző szakaszt és ennek a cikknek az elején található bekezdéseket. Olvassa el a megfelelő hírelemeket, valamint minden más releváns dokumentációt, mielőtt profilokat váltana.
Bár minden profilváltoztatásnak lehetnek sajátosságai, az általános eljárás a következőkben van leírva. Először frissítse a Gentoo operációs rendszert (győződjön meg arról, hogy a depclean lépés nem próbálja meg eltávolítani a szükséges szoftvercsomagokat):
root #
emaint --auto sync
root #
emerge --ask --verbose --update --deep --newuse @world
root #
emerge --ask --depclean
Sorolja fel az elérhető profilokat, majd válassza ki a megfelelő profilt, amelyre váltani kíván.
root #
Profilok kilistázása az eselect segítségével
Available profile symlink targets: [1] default/linux/amd64/23.0 * [2] default/linux/amd64/23.0/desktop [3] default/linux/amd64/23.0/desktop/gnome [4] default/linux/amd64/23.0/desktop/kde
Állítsa be az kívánt új profilt:
root #
eselect profile set 2
Eszközlánc (toolchain) megváltoztatása
Amit tenni kell: LLVM eszközlánc frissítése.
Ha az új profil jelentős változásokat tartalmaz (például frissítés a 17.1 verziójú profilról a 23.0 verziójú profilra) vagy új eszközláncot igényel (például normál profilról erősített profilra való váltás és fordítva), akkor fontolja meg az egész eszközlánc frissítését és a meglévő bináris szoftvercsomagok eltávolítását:
root #
rm -r /var/cache/binpkgs/*
Ezután javítsa, távolítsa el vagy kommentezze ki a /etc/portage/binrepos.conf/ fájlok sorait bármilyen módon.
Frissítse a binutils szoftvercsomagot:
root #
emerge --ask --verbose --oneshot binutils
Ellenőrizze, hogy az új binutils szoftvercsomag használva van-e:
root #
binutils-config -l
Ha a megfelelő binutils szoftvercsomag nincs beállítva, akkor állítsa be, és frissítse a környezetet:
root #
binutils-config #Ennek a szövegnek a helyére írja be a sorszámot az előző listából#
root #
env-update && source /etc/profile
Frissítse a GCC forráskódfordító szoftvert:
root #
emerge --ask --verbose --oneshot sys-devel/gcc
Ellenőrizze, hogy az új gcc használatban van-e:
root #
gcc-config -l
Ha jelenleg nincs megfelelő gcc forráskódfordító, akkor állítsa azt be, majd frissítse a környezetet:
root #
gcc-config #Ennek a szövegnek a helyére írja be a sorszámot az előző listából#
root #
env-update && source /etc/profile
Frissítse a libc-t (glibc vagy musl):
root #
emerge --ask --verbose --oneshot sys-libs/glibc
root #
emerge --ask --verbose --oneshot sys-libs/musl
Frissítse újra a környezetet, hogy biztos legyen:
root #
env-update && source /etc/profile
Telepítse újra a libtool szoftvercsomagot:
root #
emerge --ask --oneshot libtool
A biztonság kedvéért törölje újra a bináris szoftvercsomag-gyorsítótár tartalmát a ${PKGDIR} helyen:
root #
rm -r /var/cache/binpkgs/*
Végül frissítse az operációs rendszert
Ha szükséges volt az eszközlánc (toolchain) frissítése, akkor adja hozzá a --emptytree opciót az emerge parancshoz, hogy az összes szoftvercsomagot újraépítse az új eszközlánc segítségével:
root #
emerge --ask --verbose --update --deep --newuse --emptytree @world
Ha nem volt szükséges az eszközlánc (toolchain) frissítése, akkor egyszerűen alkalmazza a változtatásokat az operációs rendszeren:
root #
emerge --ask --verbose --update --deep --newuse @world
Távolítsa el a szükségtelen szoftvercsomagokat, ügyeljen arra, hogy először ellenőrizze a kimenetet, hogy ne szerepeljenek fontos szoftvercsomagok az eltávolítandók között:
root #
emerge --ask --depclean
Új profilra való áttérés (profile updating vagy profile upgrading)
A profilfrissítéseket nem szabad félvállról venni. Ügyeljen arra, hogy elolvasta és követi a megfelelő utasításokat.
A felhasználót a profilfrissítés elérhetőségéről a hírek közzétételével tájékoztatják, amely a Gentoo ebuild szoftvercsomag-tároló szinkronizálása után jelenik meg. Ez részletes utasításokat tartalmaz, amelyeket megfelelően követni kell. A profilfrissítés nem triviális művelet, és mint mindig, a rendszereket rendszeresen menteni kell - különösen a rendszer változtatásai előtt.
Tekintse meg a Gentoo frissítése című cikket a profilfrissítésekkel kapcsolatos információkért.
Profilok szoftverfejlesztők és haladó felhasználók számára
Profilstruktúra
A profilok az ebuild szoftvercsomag-tároló profiles alkönyvtárában található könyvtárakban vannak meghatározva, amely tartalmazza a kötelező repo_name fájlt is, amely meghatározza az ebuild szoftvercsomag-tárolónak a nevét. Ezek a fájlok lehetnek jelen egy profil meghatározására szolgáló könyvtárban:
- eapi, amely meghatározza a EAPI használatát az adott könyvtár kezeléséhez.
- packages, amely meghatározza azokat a szoftvercsomagokat, amelyek a system készlet vagy a profile készlet tagjai.
- package.mask, amely meghatározza a elmaszkolt szoftvercsomagokat. A rendszergazda a profil által maszkolt szoftvercsomagot feloldhatja a /etc/portage/package.unmask használatával.
- make.defaults fájlban a make.conf-szerű változó hozzárendelések találhatók, beleértve a USE jelölőzászló globális alapértelmezett állapotát (beállítva vagy nincs beállítva) és a profilváltozókat, amelyeknek speciális jelentése van (mint például ARCH, USE_EXPAND, CONFIG_PROTECT, IUSE_IMPLICIT, stb.). Az /etc/portage/make.conf és az /etc/portage/package.use fájlok rendszergazdai beállításai felülírják a make.defaults fájlban lévő profilbeállításokat.
- package.use fájl, amely szoftvercsomagonként határozza meg a USE jelölőzászlók alapértelmezett állapotát. Az /etc/portage/make.conf és az /etc/portage/package.use rendszergazdai beállításai felülírják a package.use fájlban lévő profilbeállításokat.
- use.force és use.mask, amelyek feltétel nélkül beállítják vagy kikapcsolják a USE jelölőzászlókat, felülírva az /etc/portage/make.conf és az /etc/portage/package.use fájlok rendszergazdai beállításait. Ha egy jelölőzászló egyszerre maszkolva van és kényszerítve van, akkor a maszkolás élvez elsőbbséget.
- package.use.force és package.use.mask fájlok, amelyek feltétel nélkül beállítják vagy kikapcsolják a USE jelölőzászlókat szoftvercsomagonként, felülírva az /etc/portage/make.conf és az /etc/portage/package.use rendszergazdai beállításait, valamint a use.force és use.mask fájlban lévő profilbeállításokat.
- use.stable.force, use.stable.mask fájlok, package.use.stable.force és package.use.stable.mask, amelyek ugyanúgy működnek, mint a use.force, use.mask, package.use.force és package.use.mask, de felülírják azokat az aktuális architektúra stabil ágában található szoftvercsomagok esetében.
A profilban található use.* és package.use.* fájlok USE jelölőzászló beállításai felülírhatók a rendszergazdák által az /etc/portage/profile könyvtárban ugyanilyen névvel létrehozott fájlokkal. A profilkönyvtár szerkezetére vonatkozó teljes körű információért kérjük Önt, hogy tekintse meg a Package Manager Specification dokumentációt. Összefoglaló található továbbá a Devmanual oldalán és a man portage man súgójában.
Profilok kombinálása
A profilbeállítások egymásra épülhetnek vagy halmozhatók azáltal, hogy a profilt meghatározó könyvtárban szerepeljen egy parent nevű fájl. Ez lehetővé teszi, hogy a profil örökölje más profilok beállításait, amelyeket részben felül lehet bírálni. Például alapértelmezetten beállított USE jelölőzászló alapértelmezett kikapcsolásával, amelyet egy szülőprofil állít be, és fordítva, kényszerítés megszüntetésével vagy kényszerített állapotának megfordításával, szülőprofilban elmaszkolt szoftvercsomagok feloldásával, további szoftvercsomagok hozzáadásával vagy eltávolításával a system szoftvercsomagokhoz stb. A parent fájlnak profil-útvonalnevek listáját kell tartalmaznia, a fájlt tartalmazó könyvtárhoz viszonyítva. Kiterjesztésként, ha a metadata/layout.conf fájlban a profile-format kulcshoz hozzáadjuk a portage-2 elemet, akkor a Portage lehetővé teszi egy telepített ebuild szoftvercsomag-tároló nevének (ahogyan az a /etc/portage/repos.conf fájlban meg van adva) és utána kettőspontnak (':') hozzáfűzését egy profilútvonalhoz, amely ezután a megnevezett ebuild szoftvercsomag-tároló profiles al-könyvtárához viszonyítva értelmeződik.
Mivel a szülőprofilok is tartalmazhatnak egy parent fájlt, ennek eredményeként egy öröklési fa jön létre. A szoftvercsomag-kezelő specifikációja meghatározza, hogy a profil könyvtárának minden egyes fájljában (pl. packages, make.defaults, package.use.force és package.use.mask stb.) található beállítások hogyan kombinálódnak. Különösen meghatározza a szülőprofilok sorrendjét, hogy megállapítsa a végső beállításokat: Az öröklési fa mélységi bejárással, balról jobbra kerül bejárásra, és ugyanazon profil több előfordulását ismételten feldolgozzák. A balról jobbra sorrendet a parent fájlok sorainak sorrendje határozza meg.
A specifikáció egységesen 'profile'-nak nevezi az ebuild szoftvercsomag-tároló profiles al-könyvtárában található összes megfelelő struktúrájú könyvtárat. Az 'valid for use' (használatra érvényes) kijelölt részhalmazt a profiles/profiles.desc fájlban kell felsorolni, amely egy szöveges fájl, amelynek sorain három mezőt kell tartalmazniuk, amelyeket szóköz és TAB karakterek választanak el egymástól:
- Az első mező egy architektúra, amely olyan formátumban érvényes, mint a ARCH értéke (és az ebuild-ekben a KEYWORDS beállítására), például amd64, arm, ppc64 stb. Ezek a fő szoftvercsomag-tároló profiles/arch.list fájljában vannak felsorolva.
- A második mező egy profilútvonal neve, a profiles könyvtárhoz viszonyítva.
- A harmadik és utolsó mező egy 'stabilitási mutató' (stability indicator). Például a Gentoo ebuild szoftvercsomag-tároló a stable, dev és exp (kísérleti) értékeket használja ehhez a mezőhöz.
A eselect profile list parancs csak azokat a profilokat jeleníti meg, amelyek szerepelnek a profiles.desc fájlokban, az összes /etc/portage/repos.conf fájlban beállított szoftvercsomag-tárolóban, olyan architektúramezővel, amely megfelel a számítógép architektúrájának. Ezeket a legtöbb összefüggésben egyszerűen 'profiloknak' nevezik további pontosítás nélkül. Azok a profilok, amelyek nincsenek megnevezve a profiles.desc fájlban, megjelenhetnek más profilok parent fájljaiban, és 'al-profiloknak' (subprofiles) vagy 'profilépítő blokkoknak' (profile building blocks) tekinthetők.
Az alábbi példa bemutatja a szülőprofilokat és az öröklési fát a Gentoo ebuild szoftvercsomag-tárolóból származó default/linux/amd64/23.0/desktop/gnome/systemd profil esetében. A profilútvonalak a profiles al-könyvtárhoz viszonyítva kerülnek megjelenítésre, így a fájlrendszer elrendezése kikövetkeztethető. A felülről lefelé történő sorrend tiszteletben tartja a vonatkozó parent fájlokban található sorok sorrendjét.
default/linux/amd64/23.0/desktop/gnome/systemd 17 | L +--> default/linux/amd64/23.0/desktop/gnome 15 | | L | +--> default/linux/amd64/23.0/desktop 12 | | | L | | +--> default/linux/amd64/23.0 10 | | | | L | | | +--> default/linux/amd64 3 | | | | | L | | | | +--> base 1 | | | | | R | | | | +--> default/linux 2 | | | | | | | +--> arch/amd64/lib32 7 | | | | | | | | | +--> arch/amd64 6 | | | | | L | | | | +--> arch/base 4 | | | | | R | | | | +--> features/multilib 5 | | | | R | | | +--> releases/23.0 9 | | | | | | | +--> releases 8 | | | R | | +--> targets/desktop 11 | | R | +--> targets/desktop/gnome 14 | | | +--> targets/desktop 13 | R +--> targets/systemd 16
Az L és R jelölők a megfelelő faábrázolásban a legszélső bal (Left) és jobb (Right) ágakat jelzik, a számok pedig azt a sorrendet képviselik, amelyben a profilok figyelembe vannak véve a végső beállítások kiszámításához. A nagyobb számú profilok felülírják a kisebb számú profilok beállításait. Az alábbi táblázat gyors áttekintést nyújt az egyes közbeeső profilok figyelemre méltó beállításairól, valamint az ezek megvalósításához kapcsolódó fájlokról:
Profil | Figyelemre méltó beállítások | Kapcsolódó fájlok |
---|---|---|
base | Meghatározza a legtöbb USE_EXPAND és profilváltozót. Definiálja a 'base' system alap szoftvercsomagokat. Beállítja a KERNEL, ELIBC és USERLAND értékét linux , glibc és GNU értékekre.
|
make.defaults, packages, use.force |
default/linux | Hozzáadja a Linux számára nélkülözhetetlennek tartott szoftvercsomagokat a system alap szoftvercsomagokhoz. Beállítja a USE jelölőzászlókat, meghatározza a LDFLAGS alapértelmezett értékét. Feloldja a Linux-specifikus USE jelölőzászlók elmaszkolását (elrejtését). | make.defaults, packages, use.mask, package.use.mask |
default/linux/amd64 | Hozzáadja a base és default/linux profilokat az öröklési fához. | parent |
arch/base | Meghatározza az ARCH USE_EXPAND változót. Elmaszkolja (elfedi) azokat a USE jelölőzászlókat, amelyeket csak néhány architektúra támogat. | make.defaults, use.mask, package.use.mask |
arch/amd64 | Ez az ARCH értékét amd64 architektúrára állítja. Megfelelően beállítja a CHOST, ABI, MULTILIB_ABIS és DEFAULT_ABI értékeit. Meghatározza az ACCEPT_KEYWORDS, CFLAGS, CXXFLAGS, FFLAGS és FCFLAGS alapértelmezett értékeit. Definiálja a CPU_FLAGS_X86 USE_EXPAND változót, és feloldja az amd64 számára támogatott USE jelölőzászlók maszkolását.
|
make.defaults, use.mask, package.use.mask |
features/multilib | Feloldja és feltétlenül beállítja a multilib USE jelölőzászlót.
|
all |
arch/amd64/lib32 | Beállítja a LIBDIR_x86 értékét lib32 -re, és a SYMLINK_LIB értékét yes -re, hogy a {usr,}/lib egy szimbolikus hivatkozás legyen a {usr,}/lib64-re.
|
make.defaults |
default/linux/amd64/23.0 | Hozzáadja a arch/amd64/lib32 és releases/23.0 profilokat az öröklési fához. | parent |
releases | Beállítja a USE jelölőzászlókat. | make.defaults |
releases/23.0 | package.mask, package.use.force | |
default/linux/amd64/23.0/desktop | Hozzáadja a targets/desktop profilt az öröklési fához. | parent |
targets/desktop | Beállítja az USE jelölőzászlókat. | make.defaults, package.use, package.use.force |
default/linux/amd64/23.0/desktop/gnome | Hozzáadja a targets/desktop/gnome profilt az öröklési fához. | parent |
targets/desktop/gnome | Ez beállítja a USE jelölőzászlókat. Kiemelendő, hogy globális módon állítja be a gnome jelölőzászlót.
|
make.defaults, package.use |
default/linux/amd64/23.0/desktop/gnome/systemd | Hozzáadja a targets/systemd profilt az öröklési fához. | parent |
targets/systemd | Globálisan beállítja a systemd és udev USE jelölőzászlókat, elmaszkolja (elfedi) a sys-fs/udev és a eudev szoftvercsomagokat.
|
make.defaults, package.mask, package.use.force |
Az egyes profilfájlok beállításainak kombinálódásáról pontos információért kérjük, hogy tekintse meg a Szoftvercsomag-kezelő specifikáció leírását.
Egyéni profilok létrehozása
A felhasználók létrehozhatnak speciális, egyedi profilokat, amelyek nem érhetőek el a Gentoo ebuild szoftvercsomag-tárolóból, és ezeket elhelyezhetik egy ebuild szoftvercsomag-tárolóban. A Gentoo ebuild szoftvercsomag-tároló profiljaira hivatkozhatnak a parent fájlban a 'gentoo:' előtag használatával, hogy elkerüljék az összes profildefiníció újbóli létrehozását, feltéve, hogy az ebuild szoftvercsomag-tároló metadata/layout.conf fájljában a profile-formats nevű kulcs tartalmazza a portage-2 értéket, ahogyan az az alábbiakban látható.
Az alábbiakban példák láthatók egy helyben létrehozott egyedi profilra egy 'local' nevű ebuild szoftvercsomag-tárolóban. Feltételezzük, hogy az ebuild szoftvercsomag-tároló a /var/db/repos/local helyen található (azaz az alapértelmezett hely a eselect repository számára), olvasható a világ számára, és egy nem a root felhasználó tulajdonában van. Feltételezzük továbbá, hogy tartalmaz egy dev-libs/test-package szoftvercsomagot, amely könyvtárakat telepít:
/etc/portage/repos.conf/local.conf
[local]
# Az 'eselect szoftvercsomag-tároló' alapértelmezett helye.
location = /var/db/repos/local
/var/db/repos/local/profiles/repo_name
local
/var/db/repos/local/metadata/layout.conf
# Inkább másodlagos (slave) szoftvercsomag tároló. Nem önálló.
masters = gentoo
profile-formats = portage-2 # Ez a sor fontos lesz. Ügyeljen arra, hogy szerepeljen ; EZ A SOR NEM JELENIK MEG, HA az átfedést (overlay-t) a következővel hozza létre: `eselect repository create local`. Tehát ha szükséges, akkor hozzáadhatja saját maga.
user $
ls -ld /var/db/repos/local
drwxr-xr-x 4 user user 4096 Dec 15 11:50 /var/db/repos/local
Mivel a profilöröklési fa első-mélység, balról jobbra módszerrel halad, ezért a parent fájlokban felsorolt profilútvonalak sorrendje drámai hatással lehet a végeredményül kapott beállításokra, mivel a balról jobbra történő sorrendet ez határozza meg. Ha a emerge a saját profilra történő átváltás után feloldási problémákat okoz, akkor próbálja megváltoztatni a sorok sorrendjét. Előfordulhat, hogy egyes kombinációk nem működnek megfelelően. Győződjön meg róla, hogy elolvasta és megértette az algoritmust, amelyet a Package Manager Specification meghatároz!
Első példa: Több profil kombinálása a Gentoo ebuild szoftvercsomag-tárolóból
Egy hardened-desktop nevű profil kerül létrehozásra, amely a fő Gentoo ebuild szoftvercsomag-tárolóban található default/linux/amd64/23.0/hardened és a targets/desktop beállításait örökli.
Először hozza létre a hardened-desktop könyvtárat az ebuild szoftvercsomag-tároló profiles alkönyvtárában:
user $
cd /var/db/repos/local/profiles
user $
mkdir hardened-desktop && echo 8 >hardened-desktop/eapi
Ezután hozza létre a parent fájlt:
A rendelkezésre álló kombinálható profilokat a könyvtárfa megtekintésével láthatja a következő helyen: `/var/db/repos/gentoo/profiles/`. Ugyanígy kombinálhat más profilokat más szoftvercsomag-tárolókból is!
/var/db/repos/local/profiles/hardened-desktop/parent
gentoo:default/linux/amd64/23.0/hardened
gentoo:targets/desktop
Végül illessze be az újonnan létrehozott profilt az ebuild szoftvercsomag-tároló profiles.desc fájljába, például egy dev
'stability indicator'-al (stabilitási indikátorral) :
user $
echo $(portageq envvar ARCH) hardened-desktop dev >> /var/db/repos/local/profiles/profiles.desc
Ellenőrizze, hogy a eselect profile list parancs kiadása megjeleníti-e az új profilt:
user $
eselect profile list
Available profile symlink targets: ... [99] local:hardened-desktop (dev)
Második példa: Egyéni USE jelölőzászlók hozzáadása profil szerint
user $
equery uses test-package
[ Legend : U - final flag setting for installation] [ : I - package is installed with flag ] [ Colors : set, unset * Found these USE flags for dev-libs/test-package-1 U I - - abi_x86_32 : 32-bit (x86) libraries - - extras : Builds the libprofile-test-extra library
Egy custom nevű profil kerül létrehozásra, amely a Gentoo ebuild szoftvercsomag-tárolóban található default/linux/amd64/23.0 beállításait örökli, valamint két helyi profilt: 32bit, amely beállítja az abi_x86_32
USE jelölőzászlót, és alapértelmezés szerint kikapcsolja az extras
USE jelölőzászlót a szoftvercsomagra vonatkozóan, továbbá with-extras, amely pontosan ennek az ellenkezőjét teszi, hogy bemutassa a végső beállítások meghatározását.
Először hozza létre a 32bit és with-extras könyvtárakat az ebuild szoftvercsomag-tároló profiles alkönyvtárában:
user $
cd /var/db/repos/local/profiles
user $
mkdir 32bit with-extras && echo 8 >with-extras/eapi && && echo 8 >32bit/eapi
Ezután hozzon létre egy package.use fájlt a dev-libs/test-package
USE jelölőzászlóinak megváltoztatásához:
/var/db/repos/local/profiles/32bit/package.use
dev-libs/test-package abi_x86_32 -extras
/var/db/repos/local/profiles/with-extras/package.use
dev-libs/test-package -abi_x86_32 extras
Ezután hozza létre a custom könyvtárat:
user $
mkdir custom && echo 8 >custom/eapi
And add the parent file:
/var/db/repos/local/profiles/profile-name/parent
gentoo:default/linux/amd64/23.0
../with-extras
../32bit
Végül illessze be az újonnan létrehozott profilt az ebuild szoftvercsomag-tároló profiles.desc fájljába, például egy dev
'stability indicator'-al (stabilitási indikátorral) :
user $
echo `portageq envvar ARCH` $profile_name dev >>profiles.desc
Ellenőrizze, hogy a eselect profile list parancs megjeleníti-e az új profilt:
user $
eselect profile list
Available profile symlink targets: ... [46] local:custom (dev)
Most már ténylegesen át lehet váltani az új profilra a eselect profile set parancs használatával:
root #
eselect profile set 46
Ellenőrizze az eredményt:
user $
eselect profile show
Current /etc/portage/make.profile symlink: local:custom
user $
ls -l /etc/portage/make.profile
lrwxrwxrwx 1 root root 40 Dec 15 12:00 /etc/portage/make.profile -> ../../var/db/repos/local/profiles/custom
Ez megmutatja, hogy a eselect profile set frissítette a /etc/portage/make.profile szimbolikus linket. Általános esetben szükséges lehet egy teljes world újraépítést végrehajtani annak érdekében, hogy az új beállítások érvényesüljenek az összes szoftvercsomagra, de előtte érdemes ellenőrizni, hogy a kívánt változások valóban hatályba lépnek-e a --ask
használatával:
root #
emerge --ask --update --newuse --deep --complete-graph @world
Azonban ebben a példában, mivel tudjuk, hogy a profilbeállítások csak a dev-libs/test-package szoftvercsomagra vonatkoznak, és feltételezve, hogy az előzőleg választott profil a default/linux/amd64/23.0 volt, csak ennek a szoftvercsomagnak az újratelepítése történik meg.
user $
equery uses test-package
[ Legend : U - final flag setting for installation] [ : I - package is installed with flag ] [ Colors : set, unset * Found these USE flags for dev-libs/test-package-1: U I + - abi_x86_32 : 32-bit (x86) libraries - - extras : Builds the libprofile-test-extra library
Ez megmutatja, hogy mivel a 32bit profil utolsóként szerepel a custom/parent fájlban, annak beállításai felülírják a with-extras profil beállításait, és a szoftvercsomag könyvtárainak 32 bites verziója kerül a forráskódból felépítésre.
test-package-1/Makefile
Szoftvercsomagok makefile kódrészlete%.so: %.c
@echo Building $@ for architecture $$ARCH and ABI $$ABI "(CHOST=$$CHOST)"
$(CC) -shared -fPIC -Wl,-soname=$@.1 $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
/var/db/repos/local/dev-libs/test-package/test-package-1.ebuild
Ebuild snippetEAPI=8
inherit toolchain-funcs multilib-build multilib-minimal
# ...
IUSE="extras" # abi_x86_32 comes from an eclass
# ...
multilib_src_compile() {
tc-export CC
emake extras=$(usex extras)
}
root #
ACCEPT_KEYWORDS="~amd64" emerge --oneshot test-package
Calculating dependencies ... done! >>> Verifying ebuild manifests >>> Emerging (1 of 1) dev-libs/test-package-1::local * test-package-1.tar.gz BLAKE2B SHA512 size ;-) ... [ ok ] >>> Unpacking source... >>> Unpacking test-package-1.tar.gz to /var/tmp/portage/dev-libs/test-package-1/work >>> Source unpacked in /var/tmp/portage/dev-libs/test-package-1/work >>> Preparing source in /var/tmp/portage/dev-libs/test-package-1/work/test-package-1 ... * Will copy sources from /var/tmp/portage/dev-libs/test-package-1/work/test-package-1 * abi_x86_32.x86: copying to /var/tmp/portage/dev-libs/test-package-1/work/test-package-1-abi_x86_32.x86 * abi_x86_64.amd64: copying to /var/tmp/portage/dev-libs/test-package-1/work/test-package-1-abi_x86_64.amd64 >>> Source prepared. >>> Configuring source in /var/tmp/portage/dev-libs/test-package-1/work/test-package-1 ... * abi_x86_32.x86: running multilib-minimal_abi_src_configure * abi_x86_64.amd64: running multilib-minimal_abi_src_configure >>> Source configured. >>> Compiling source in /var/tmp/portage/dev-libs/test-package-1/work/test-package-1 ... * abi_x86_32.x86: running multilib-minimal_abi_src_compile make extras=no
Building libprofile-test.so for architecture amd64 and ABI x86 (CHOST=i686-pc-linux-gnu)
x86_64-pc-linux-gnu-gcc -m32 -shared -fPIC -Wl,-soname=libprofile-test.so.1 -O2 -pipe -Wl,-O1 -Wl,--as-needed -o libprofile-test.so libprofile-test.c * abi_x86_64.amd64: running multilib-minimal_abi_src_compile make extras=no
Building libprofile-test.so for architecture amd64 and ABI amd64 (CHOST=x86_64-pc-linux-gnu)
x86_64-pc-linux-gnu-gcc -shared -fPIC -Wl,-soname=libprofile-test.so.1 -O2 -pipe -Wl,-O1 -Wl,--as-needed -o libprofile-test.so libprofile-test.c >>> Source compiled. >>> Test phase [not enabled]: dev-libs/test-package-1 >>> Install test-package-1 into /var/tmp/portage/dev-libs/test-package-1/image/ category dev-libs * abi_x86_32.x86: running multilib-minimal_abi_src_install make DESTDIR=/var/tmp/portage/dev-libs/test-package-1/image/ libdir=/usr/lib32 extras=no install
Installing: libprofile-test.so
* abi_x86_64.amd64: running multilib-minimal_abi_src_install make DESTDIR=/var/tmp/portage/dev-libs/test-package-1/image/ libdir=/usr/lib64 extras=no install
Installing: libprofile-test.so
>>> Completed installing test-package-1 into /var/tmp/portage/dev-libs/test-package-1/image/ * Final size of build directory: 68 KiB * Final size of installed tree: 32 KiB strip: x86_64-pc-linux-gnu-strip --strip-unneeded -R .comment -R .GCC.command.line -R .note.gnu.gold-version usr/lib32/libprofile-test.so.1 usr/lib64/libprofile-test.so.1 >>> Installing (1 of 1) dev-libs/test-package-1::local >>> Auto-cleaning packages... >>> No outdated packages were found on your system. * GNU info directory index is up-to-date.
A szoftvercsomag makefile tartalmából származó üzenetek (kiemelve az információs üzeneteket) azt mutatják, hogy a default/linux/amd64/23.0 profil által beállított ARCH, CHOST_x86, CFLAGS_x86 (amely hozzáadja a GCC -m32
opcióját a 32 bites build-ekhez) és LDFLAGS változók öröklődnek és elérhetők az ebuild környezetében.
Most látni fogjuk, hogy mi történik, ha a sorok sorrendje megváltozik a custom/parent-ben.
user $
cat <<EOF >$profile_name/parent
> gentoo:default/linux/amd64/23.0 > ../32bit > ../with-extras > EOF
user $
equery uses test-package
[ Legend : U - final flag setting for installation] [ : I - package is installed with flag ] [ Colors : set, unset * Found these USE flags for dev-libs/test-package-1: U I - + abi_x86_32 : 32-bit (x86) libraries + - extras : Builds the libprofile-test-extra library
Ez azt mutatja, hogy mivel most az utolsó helyre kerül a fájlba a custom/parent, a with-extras profil beállításai felülírják a 32bit profil beállításait, és újratelepítéskor a csomagkönyvtárak 32 bites verziója eltávolításra kerül, valamint a libprofile-test-extra könyvtár felépül:
root #
ACCEPT_KEYWORDS="~amd64" emerge --oneshot test-package
Calculating dependencies ... done! >>> Verifying ebuild manifests >>> Emerging (1 of 1) dev-libs/test-package-1::local * test-package-1.tar.gz BLAKE2B SHA512 size ;-) ... [ ok ] >>> Unpacking source... >>> Unpacking test-package-1.tar.gz to /var/tmp/portage/dev-libs/test-package-1/work >>> Source unpacked in /var/tmp/portage/dev-libs/test-package-1/work >>> Preparing source in /var/tmp/portage/dev-libs/test-package-1/work/test-package-1 ... * Will copy sources from /var/tmp/portage/dev-libs/test-package-1/work/test-package-1 * abi_x86_64.amd64: copying to /var/tmp/portage/dev-libs/test-package-1/work/test-package-1-abi_x86_64.amd64 >>> Source prepared. >>> Configuring source in /var/tmp/portage/dev-libs/test-package-1/work/test-package-1 ... * abi_x86_64.amd64: running multilib-minimal_abi_src_configure >>> Source configured. >>> Compiling source in /var/tmp/portage/dev-libs/test-package-1/work/test-package-1 ... * abi_x86_64.amd64: running multilib-minimal_abi_src_compile make extras=yes
Building libprofile-test.so for architecture amd64 and ABI amd64 (CHOST=x86_64-pc-linux-gnu)
x86_64-pc-linux-gnu-gcc -shared -fPIC -Wl,-soname=libprofile-test.so.1 -O2 -pipe -Wl,-O1 -Wl,--as-needed -o libprofile-test.so libprofile-test.c
Building libprofile-test-extra.so for architecture amd64 and ABI amd64 (CHOST=x86_64-pc-linux-gnu)
x86_64-pc-linux-gnu-gcc -shared -fPIC -Wl,-soname=libprofile-test-extra.so.1 -O2 -pipe -Wl,-O1 -Wl,--as-needed -o libprofile-test-extra.so libprofile-test-extra.c >>> Source compiled. >>> Test phase [not enabled]: dev-libs/test-package-1 >>> Install test-package-1 into /var/tmp/portage/dev-libs/test-package-1/image/ category dev-libs * abi_x86_64.amd64: running multilib-minimal_abi_src_install make DESTDIR=/var/tmp/portage/dev-libs/test-package-1/image/ libdir=/usr/lib64 extras=yes install
Installing: libprofile-test.so libprofile-test-extra.so
>>> Completed installing test-package-1 into /var/tmp/portage/dev-libs/test-package-1/image/ * Final size of build directory: 52 KiB * Final size of installed tree: 28 KiB strip: x86_64-pc-linux-gnu-strip --strip-unneeded -R .comment -R .GCC.command.line -R .note.gnu.gold-version usr/lib64/libprofile-test.so.1 usr/lib64/libprofile-test-extra.so.1 >>> Installing (1 of 1) dev-libs/test-package-1::local >>> Auto-cleaning packages... >>> No outdated packages were found on your system. * GNU info directory index is up-to-date.
További olvasnivaló a témában
- /var/db/repos/gentoo/profiles — a directory that contains global profiles that are controlled by developers of the Gentoo ebuild repository (gentoo.git)
- Multilib layout for amd64 architecture.
- How to change to SELinux
- Upgrading Gentoo
Külső források
- Gentoo news: Profile upgrade to version 23.0 available
- profiles: Finally deprecate amd64 17.0 profiles
- Bug 506276 — (no-symlink-lib) - kill SYMLINK_LIB=
yes
support.