Portage (szoftver)
A Portage egy csomagkezelő rendszer, melyet eredetileg a Gentoo számára fejlesztettek ki, de ma már számos Gentoo alapú rendszer használja. A Gentoora gyakorta meta disztribúcióra hivatkoznak a Portage rendszer extrém flexibilitása miatt, ami operációs rendszer függetlenné teszi a Gentoot.[2][3][4]
Történelmi áttekintés
[szerkesztés]A Portage rendszert a Berkeley Software Distribution által kifejlesztett FreeBSD port rendszer inspirálta, melyet a rendszer karbantartásához és frissítéséhez fejlesztettek ki. Az általános Linux csomagkezelők általi megközelítéssel ellentétben a port nem használ bináris csomagokat, hanem egy forrásból mindent a helyi gépen fordít le.[5]
Daniel Robbins a Gentoo Linux megalkotója a kezdetekben egy 450 MHz-es órajelre tuningolt Celeron 300-ason futtatta a Linuxait, de vett egy újabb gépet, amin nem működött megfelelően a rendszer. Később realizálódott benne, hogy másoknak is ugyanilyen gondjai vannak, amit nem tud megoldani és - szégyenszemre, mint Linux fejlesztő - FreeBSD-re váltott, majd néhány hónap múlva a BSD-s tapasztalatokkal felvértezve újult erővel vágott bele a Gentoo fejlesztésébe.[5][6]
Noha a 2.2-es Linux kernel kiadása csalódás volt számára, a javított 2.4-es szériával úgy érezte új világ nyílt meg előtte, szóval a Gentoo Linux feléledt hamvaiból. E kudarcnak és a BSD-nek hála ekkor vágott bele a portage koncepcióba, ami a Gentoo disztribúciók nélkülözhetetlen alapkellékévé vált.[5]
Jellemzők
[szerkesztés]A Portage rendszer alapja a metafájlokból és ebuildekből álló Portage fa, mely konfigurációs, forrás letöltési, fordítási és telepítési információt tartalmaznak.
Ez az a megközelítés, amit a Gentoo esetében is használtak, amely nagyfokú rugalmasságot enged meg a telepítés során éppúgy, mint a szoftverek karbantartása területén. Erről a flexibilitásról a fordítási időben használható un. USE flagek gondoskodnak, melyek lehetővé teszik a függőségek kezelését, biztonságos telepítést (sandbox-on keresztül), a rendszer profilok használatát, vagy éppen a teleptett fájlok felülírását, vagy megőrzését. A Portage rendszert Python nyelven programozták.[7]
A Portage fát a teljesség igénye nélkül két fő részre bonthatjuk 1) profilokra, melyek az architektúra és felhasználási terület szerinti alapbeállításokat tartalmazza ill. 2) az ebuild könyvtárfára, mely egy kategória és azon belül egy csomagnév könyvtárra bontható.
Jelen pillanatban közel 20 000 csomag található a hivatalos Portage rendszerben, de léteznek nem hivatalos kiterjesztések is (Gentoo Portage Overlays), sőt a rendszer azt is megengedi, hogy saját magunk is létrehozzunk egyet a Layman repo menedzselő eszköz jóvoltából.[8]
ebuildek
[szerkesztés]Az ebuild egy bash szkript, melyet szoftverek fordításának és telepítésének automatizálására terveztek.
Az ebuildek szkript természetük miatt könnyen szerkeszthetőek és elképesztő rugalmasságot nyújtanak, amivel lehetővé válik bináris csomagok telepítése éppúgy, mint források tetszőleges paraméterekkel történő fordítása amellett, hogy a függőségek kezelése megoldott.
Egy példa az ebuild fájlra:
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI="6"
ETYPE="sources"
K_WANT_GENPATCHES="base extras experimental"
K_GENPATCHES_VER="40"
inherit kernel-2
detect_version
detect_arch
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86"
HOMEPAGE="https://dev.gentoo.org/~mpagano/genpatches"
IUSE="experimental"
DESCRIPTION="Full sources including the Gentoo patchset for the ${KV_MAJOR}.${KV_MINOR} kernel tree"
SRC_URI="${KERNEL_URI} ${GENPATCHES_URI} ${ARCH_URI}"
pkg_postinst() {
kernel-2_pkg_postinst
einfo "For more info on this patchset, and how to report problems, see:"
einfo "${HOMEPAGE}"
}
pkg_postrm() {
kernel-2_pkg_postrm
}
Portage parancsok
[szerkesztés]A portage egy komplett szinkronizációs fordító és telepítő csomagrendszer összessége, így a teljes kihasználásához több parancs ismerete szükséges.
- emerge: általános telepítő és kereső program (a legtöbb esetben csak ennek a használata szükséges)
- a rendszer frissítése és tisztítása után érdemes futtatni a @preserved-rebuild gyűjtemény újratelepítését, mely segít a rendszer konzisztenciájának megőrzésében
- a kernel fordítása után a @module-rebuild, az X fordítása után az @x11-module-rebuild gyűjtemény telepítése célszerű
- revdep-rebuild: a rebuild gyűjteményeken felül ellenőrzi és javítja a rendszer integritását
- equery: részletes csomagelemző, kereső program (ritkán használt, komplett csomagrendszerek pl. kde maszkolásánál, vagy fájlok keresésénél hasznos)
- elclean: a portage tisztító alkalmazása (hasznos, ha kevés helyünk van)
- genlop: a portage log-fájljainak elemzésére szolgál (a telepítési időtartamok megbecslésére kiválóan alkalmas)
emerge
[szerkesztés]A Portage rendszer legfontosabb parancsa az emerge
. Ezzel lehet a tükörszerverről szinkronizálni az aktuális Portage könyvtárat, telepíteni, csomagok között keresni és még sok minden mást. A legfontosabb parancsokat - ami nélkül a portage rendszer karban tartása elképzelhetetlen - a következő táblázat szemlélteti:
szükséges jogosultság | parancs | leírás |
---|---|---|
rendszergazdai | emerge --sync | telepítési adatbázis (portage fa) szinkronizálása |
felhasználói | emerge -pv csomag|lista|@gyűjtemény | a "csomag", "lista", vagy "@gyűjtemény" részletes telepítési leírása • fontosabb gyűjtemények: system, world, preserved-rebuild, module-rebuild |
felhasználói | emerge -s|-S ... | a "kifejezés" keresése (-s) a csomag nevében (-S) a leírásban |
rendszergazdai | emerge -av ... | a telepítési lista kiírása, majd kérésre telepítés |
rendszergazdai | emerge ... | azonnali telepítés |
rendszergazdai | emerge -C|-c ... | eltávolítás, eltávolítás a függőségek vizsgálatával |
rendszergazdai | emerge -uDN --with-bdeps=y @world | teljes rendszer frissítése a függőségek és a változott "use" paraméterek figyelembe vételével |
felhasználói | emerge --info ... | nagyon részletes leírás a telepítendő, vagy telepített dolgokról • hiba keresése esetén nagyon hasznos |
rendszergazdai | emerge -f ... | a telepítendők letöltése, a fordítás későbbre hagyása megjegyzés hasznos lehet, ha a netes kapcsolat ideiglenes |
rendszergazdai | emerge -b|-B ... | csak a bináris csomagok készítése (-B), és telepítése is (-b) • hasznos, ha a csomagokat több gépre telepítenénk, vagy backupot gyártanánk |
rendszergazdai | emerge -k|-K | bináris csomagok (-k) és csakis bináris csomagok (-K) telepítése • több rendszer esetén hasznos; -pvk esetén az is látszik, hogy mely csomagok lesznek fordítva |
revdep-rebuild
[szerkesztés]A függőségek ellenőrzésére és a rendszer integritásának javítására szolgáló parancs működését a következő táblázat mutatja:
szükséges jogosultság | parancs | leírás |
---|---|---|
felhasználói | revdep-rebuild -pv | a teljes rendszer integritását ellenőrzi és megjeleníti • türelem, eltart egy darabig az elemzés |
rendszergazdai | revdep-rebuild | javítja a teljes rendszer integritását |
rendszergazdai | revdep-rebuild ... | a kiválasztott csomag integritását javítja |
rendszergazdai | revdep-rebuild -i | figyelmen kívül hagyja az előző elemzést • enélkül a paraméter nélkül folytatná a félbehagyott fázissal |
rendszergazdai | revdep-rebuild -K libX*.so.* | újraépíti azokat a csomagokat, melyek valamilyen libX könyvtártól függenek |
equery
[szerkesztés]A részletes keresésre és reguláris kifejezések általi telepítésre ad lehetőséget ez a parancs. A következő táblázat néhány ötletet tartalmaz kedvcsinálónak.
szükséges jogosultság | parancs | leírás |
---|---|---|
felhasználói | equery b libz.so | megkeresi, hogy a "libz" könyvtár melyik csomaghoz tartozik |
felhasználói | equery k dev-python/s* | 's' betűvel kezdődő csomagokat keres a "dev-python" kategóriában |
felhasználói | equery g portage-9999 | listázza a "portage" csomag snapshot függőségi fáját |
felhasználói | equery h kde | listázza azokat a csomagokat, melyek "kde" use flaget használnak |
rendszergazdai | emerge $(equery -q belongs -nf '^/usr/bin/g?vim.*') | kombinált parancs, mely újratelepíti/frissíti a regexp kifejezésnek megfelelő csomagokat |
eclean
[szerkesztés]A források, vagy a bináris csomagok törlését segíti elő.
szükséges jogosultság | parancs | leírás |
---|---|---|
rendszergazdai | eclean -i distfiles | törli a letöltött forrásokat, melyekhez megerősítést kér |
felhasználói | eclean -p packages | listázza a feleslegessé vált bináris csomagokat |
rendszergazdai | eclean-dist | megerősítés nélkül törli a letöltött forrásokat (rövidebb forma) |
rendszergazdai | eclean-pkg | törli azokat a bináris csomagokat, melyek feleslegesek (nem telepítettek) |
rendszergazdai | eclean-dist -t1m -s50M | az egy hónapnál régebbi, 50 MB-tól nagyobb források törlése |
genlop
[szerkesztés]A log-fájlok tartalmának elemzésére, abból számított kalkulációk készítésére alkalmas.
szükséges jogosultság | parancs | leírás |
---|---|---|
rendszergazdai (logok) | genlop -l | kilistázza röviden a telepített csomagokat és időpontokat |
rendszergazdai (logok) | genlop -t csomag | a korábbi logok alapján megbecsli, hogy mennyi idő kell a csomag telepítéséhez |
rendszergazdai (logok) | genlop -c | megbecsli, hogy az aktuális folyamat mennyi ideig tarthat még |
rendszergazdai (logok) | genlop -l | tail -n 10 | összetett parancs, mely az utolsó 10 telepített csomag összefoglalását listázza |
rendszergazdai (logok) | emerge -uDN --with-bdeps=y @world | genlop -p | kombinált parancs, mely megbecsüli, hogy mennyi ideig tarthat a teljes rendszer frissítése |
Képgaléria
[szerkesztés]-
A Gentoo "world" (összes csomag) frissítése
-
emerge—depclean működés közben
-
A rendszer konzisztenciájának ellenőrzése
Konfiguráció
[szerkesztés]A Portage konfigurációs fájljai a /etc/portage
könyvtárban találhatóak.[9] Az ebuild információk központilag (/etc/portage/make.conf
fájlban), vagy csomagonként (/etc/portage/package.*
fájlokban, vagy könyvtárakban) felülírhatóak.
USE flagek
[szerkesztés]A USE flagek lehetővé teszik a csomagfüggőségek kezelését. Mivel a függőségek kezelése fordítási időben történik, ezért a bináris rendszerekkel ellentétben lehetőség van nem kívánt függőségek elhagyására is, amivel sokkal testre szabottabb rendszer állítható elő.
A USE flagek használhatóak egyedi csomagokra parancssorban, /etc/portage/package.use
fájlban, vagy központilag a /etc/portage/make.conf
fájlban. A USE flag előjel nélküli használatával a függőség beépítésre kerül, amíg negatív előjellel eltávolításra, ezzel felülírva az ebuild fájl vonatkozó utasításait.
make.conf
[szerkesztés]A /etc/portage/make.conf
fájlban állíthatóak be az alapvető optimalizációs paraméterek, architektúra kiválasztása valamint a globálisan alkalmazott USE flagek, maszkolások.
Példa a make.conf fájlra:
CHOST="x86_64-pc-linux-gnu" # amd64 bites rendszer
CFLAGS="-march=sandybridge -O2 -pipe" # optimalizáció egy Sandy Bride-hez
CXXFLAGS="${CFLAGS}"
# a make 5 szálon fusson (ált. magok száma + 1)
MAKEOPTS="-j5"
# nyelvi beállítások
L10N="hu en de hu-HU en-GB en-US de-DE"
LANG="hu_HU.UTF-8"
# soha ne használjon gtkv2-t és mindig használjon qtv5-öt, ha lehet
USE="-gtk2 qt5"
# az ideiglenes fordítási könyvtár legyen a memóriában (ez nagy memóriát igényelhet)
PORTAGE_TMPDIR="/dev/shm/"
# néhány videókártya drájver
VIDEO_CARDS="intel i965 modesetting nvidia"
# a Google Chrome licence legyen automatikusan elfogadva
ACCEPT_LICENSE="google-chrome"
package.*
[szerkesztés]Ha a csomagokat egyesével akarjuk konfigurálni, akkor használjuk a /etc/portage/package.*
fájlokat, vagy, ha túl sok bennük az információ, akkor még a jobb áttekinthetőség kedvéért /etc/portage/package.*
könyvtárakat és abban elhelyezett bármilyen nevű fájlokat.
Ezen fájlok némelyikében használhatóak az architektúrák (x86, amd64 stb.) és mindegyikében a kategória és a csomagnevek ill. ezek pontos, vagy rész verziószámai.Ezen felül verzió megadása esetén a relációs jelekkel (=, <, >, >=, <=) meglehetősen rugalmasan használható a konfiguráció.
fájl, vagy könyvtárnév | leírás | példa | magyarázat |
---|---|---|---|
package.keywords | módosítja a beállított kulcsszót | media-libs/libgd ~x86 | nem stabil x86-os libgd engedélyezése |
csak stabil mplayer használata x86_64-en | media-video/mplayer -~amd64 | ||
package.license | licenc engedélyezése | google-chrome | elfogadja a Google Chrome licencét automatikusan |
package.mask | csomag maszkolása | >www-client/firefox-52.2.0 | az 52.2.0 verziónál újabb firefox telepítésének gátlása |
package.unmask | maszkolt csomag engedélyezése | =media-video/avidemux-2.6.20 | a 2.6.20-as avidemux engedélyezése |
media-video/avidemux | az összes maszkolt avidemux engedélyezése | ||
package.use | use flegek módosítása | app-office/libreoffice -gtk3 pdfimport | A 3-as Gtk tiltása és a pdf importálás engedélyezése |
=x11-libs/gtk+-2* doc | minden 2-es Gtk-hoz a dokumentáció engedélyezése |
Bővebb információ a lehetőségekről a Portage rendszer konfigurációs könyvtáráról szóló weblapon.
Grafikus frontendek és kiegészítők
[szerkesztés]A Portage egy önmagában jól használható parancssori rendszer, de léteznek hozzá grafikus frontendek és egyéb kiegészítő alkalmazások.
- Kuroo: KDELibs4/Qt4 alapú grafikus frontend
- Porthole: Gtk+ alapú grafikus frontend
- elogviewer: PyQt alapú elog megjelenítő
- gentoo-syntax: szintaxis kiemelő vim plugin a Gentoo és a Portage rendszer fájljaihoz
További információk
[szerkesztés]- Biztonságos C Flagek használata (angol nyelven)
- Processzor függő opciók a GCC dokumentációjában (angol nyelven)
- Gentoo USE flagek listája (angol nyelven)
- A hivatalos Gentoo csomaglista (angol nyelven)
- A nem Gentoo által fenntartott repók (angol nyelven)
- A Portage rendszer konfigurációs könyvtára (angol nyelven)
- Az ebuildek írásának dokumentációja (angol nyelven)
- Layman dokumentáció (angol nyelven)
Források
[szerkesztés]- ↑ sys-apps/portage – Gentoo Packages (angol nyelven). packages.gentoo.org. (Hozzáférés: 2017. augusztus 3.)
- ↑ About Gentoo (angol nyelven). (Hozzáférés: 2017. augusztus 3.)
- ↑ Daniel Robbins: Gentoo Linux Reloaded - O'Reilly Media (angol nyelven), 2002. október 10. [2017. október 14-i dátummal az eredetiből archiválva]. (Hozzáférés: 2017. október 14.)
- ↑ OSNews.com (angol nyelven). (Hozzáférés: 2017. augusztus 3.)
- ↑ a b c Gentoo Linux Documentation -- Making the distribution, Part 3 (angol nyelven), 2005. november 26. [2005. november 26-i dátummal az eredetiből archiválva]. (Hozzáférés: 2017. augusztus 4.)
- ↑ Gentoo Linux Documentation -- Making the distribution, Part 2 (angol nyelven), 2005. november 18. [2005. november 18-i dátummal az eredetiből archiválva]. (Hozzáférés: 2017. augusztus 2.)
- ↑ FAQ - Gentoo Wiki (angol nyelven). wiki.gentoo.org. (Hozzáférés: 2017. augusztus 3.)
- ↑ Gentoo Packages (angol nyelven). packages.gentoo.org. (Hozzáférés: 2017. augusztus 3.)
- ↑ /etc/portage - Gentoo Wiki (angol nyelven). wiki.gentoo.org. (Hozzáférés: 2017. augusztus 3.)