Portage (szoftver)

csomagkezelő 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]

Portage

FejlesztőGentoo alapítvány
Legfrissebb stabil kiadás2.3.19-r1
(2018. 01. 21.[1])
Legfrissebb fejlesztői
kiadás
9999 (git snapshot)
Programozási nyelvPython
Operációs rendszerGentoo Linux és más Gentoo alapú disztribúciók
Kategória
LicencGNU General Public License v2
A Portage weboldala

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

 
Portage fa (részlet)

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

Konfiguráció szerkesztés

 
Példa a konfigurációs könyvtárstruktúrára

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

 
Porthole v0.6.1 Gtk+ frontend működés közben

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

Források szerkesztés

  1. sys-apps/portage – Gentoo Packages (angol nyelven). packages.gentoo.org. (Hozzáférés: 2017. augusztus 3.)
  2. About Gentoo (angol nyelven). (Hozzáférés: 2017. augusztus 3.)
  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.)
  4. OSNews.com (angol nyelven). (Hozzáférés: 2017. augusztus 3.)
  5. 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.)
  6. 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.)
  7. FAQ - Gentoo Wiki (angol nyelven). wiki.gentoo.org. (Hozzáférés: 2017. augusztus 3.)
  8. Gentoo Packages (angol nyelven). packages.gentoo.org. (Hozzáférés: 2017. augusztus 3.)
  9. /etc/portage - Gentoo Wiki (angol nyelven). wiki.gentoo.org. (Hozzáférés: 2017. augusztus 3.)