Portage

A Unix/Linux szerverek üzemeltetése wikiből
A lap korábbi változatát látod, amilyen KornAndras (vitalap | szerkesztései) 2009. április 2., 02:22-kor történt szerkesztése után volt.

(eltér) ←Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

Írta: Gálusz Zsuzsa, 2006. december.

Tartalomjegyzék

1 Elnevezések

Gentoo-ban a csomagok neve "ebuild". A Gentoo esetében a legtöbb ebuild forráskódból telepíti a csomagokat, bár vannak bináris ebuildek is. Ebuildekből és a köztük lévő függöségekből épül fel a Portage tree, amely a többi csomagkezelő rendszer csomagadatbázisának felel meg. A csomagkezelés fő eszköze a portage-ban az "emerge".


2 Az emerge használata

Új ebuild telepítése:

emerge csomagnév

vagy

emerge kategóra/csomagnév

pl.

emerge apache

Ebuild keresése:

emerge --search név

Vagy részletesebb kereséshez

emerge --searchdesc név


Ebuild eltávolítása:

emerge --unmerge név


Frissítés:

A portage-ban található ebuild-adatok frissen tartásához rendszeresen kell szinkronizálni:

emerge --sync

Ekkor az emerge rsync-en keresztül frissíti az elérhető ebuildeket.


Ezután lehetséges a frissített csomagok automatikus telepítése:

emerge --update world

(A "world" az összes telepített ebuildet jelképezi. Ugyanilyen a "system", amely csak a rendszer leglényegesebb ebuildjeit tartalmazza, pl. gcc)

Ez csak viszonylag felületesen ellenőrzi a frissítéseket, az esetleges függőségeket nem vizsgálja, illetve a megváltozott USE flageket (lsd. később) sem figyeli. Ezért eggyel jobb megközelítés:

emerge --update --deep --newuse world


Minden emerge telepítést/frissítést lehet kombinálni a --pretend vagy az --ask beállításokkal - ezek csak kilistázzák a telepítendő csomagokat (pretend), illetve rákérdeznek és csak azután telepítenek (ask).

Update után esetleg maradhatnak csomagok, amelyek csak függőségek voltak de már semmi nem használja őket. Ezeket lehet kitakarítani:

emerge --depclean
revdep-rebuild

A revdep-rebuild (a gentoolkit csomag része) mindenként szükséges a --depclean után arra az esetre, ha hibásan mégis szükséges ebuildtől szabadultunk volna meg (sajnos néha előfordul...).

3 A portage beállítása

A portage konfigurálása alapvetően környezeti változókon keresztül történik, de javasolt ezeket nem közvetlenül, hanem a rendszer konfigurációs file-jain keresztül beállítani. Ezek közül a legfontosabb a /etc/make.conf, ami pl. így nézhet ki:

CFLAGS="-O2 -mtune=athlon-xp -pipe"
CHOST="i386-pc-linux-gnu"
CXXFLAGS="-O2 -mtune=athlon-xp -pipe"
USE="-kde -mozilla apache2 ruby acpi apm X gtk 3dnow gnome cdr dvdr gpm gtk2 iconv idn java javascript encode aac lua mmx ncurses pcre pdf png readline sse ssl svg truetype usb zlib opengl unicode hal dbus"

GENTOO_MIRRORS="ftp://gentoo.inf.elte.hu/ "
PORTDIR_OVERLAY="/usr/local/portage"

SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
PORTAGE_NICENESS="15"
LINGUAS="en_GB en_US hu de"

A fontosabb változók:

  • CFLAGS, CXXFLAGS, CHOST, MAKEOPTS: A fordító eszközöknek átadandó paraméterek. Így pl. minden portage-on keresztül telepített program biztosan az adott gépre lesz optimalizálva, kivéve persze a bináris csomagokat. A CFLAGS szól a C fordítónak, a CXXFLAGS a C++ fordítónak, a CHOST a configure-nak, a MAKEOPTS a make-nek. Minden itt beállított paraméter minden portage-on keresztül fordított programnak átadódik, szóval érdemes vele konzervatívan bánni.
  • USE: feature-flagek halmaza. Minden flag benne jelzi, hogy ha az éppen telepítésre kerülő csomagban opcionálisan benne van az adott feature, akkor az engedélyezve legyen vagy se. A fenti mintában pl. le van tiltva a mozilla, így pl. ha javát telepítünk, az nem fogja installálni a mozilla pluginjét; vagy pl. engedélyezve van az aac flag, így minden médialejátszó aac támogatással fog települni. A make.conf-ban megadott USE flagek a teljes rendszerre érvényesek, de lehetséges őket ebuildenként felülbírálni a /etc/portage/package.use file-ban.
  • GENTOO_MIRRORS: adja meg, hogy honnan töltse le az ebuildekhez tartozó forrásokat az emerge.
  • SYNC: azt adja meg, honnan szinkronizálja a portage tree-t. Ezt és a GENTOO_MIRRORS-t automatikusan be lehet állítani a mirrorselect programmal.
  • HTTP_PROXY, FTP_PROXY, RSYNC_PROXY: ha proxybeállításra van szükség, értelemszerűen
  • PORTAGE_BINHOST: ha bináris ebuildeket szeretnénk, azokat innen töltse le.
  • PORTAGE_NICENESS: mekkora nice mellett fusson az emerge és gyermekfolyamatai (hasznos, ha az ember mást is akar csinálni, miközben éppen egy 5-6 órás fordítás fut...) Az érték hozzáadódik ahhoz a nice-hoz, amivel az emerge indult.
  • LINGUAS: ha egy ebuild több nyelvet is támogat, akkor ezek közül melyikek kerüljenek bele a végtermékbe
  • CONFIG_PROTECT: az itt megadott helyen lévő file-ok nem íródnak automatikusan felül update során. Pl. az /etc/ alapértelmezésben ilyen védett hely. Azért jó, mert így nem íródnak felül az egyedi beállításaink, az emerge csak jelzi, hogy frissítés van. A portage része az etc-update, amelyet ilyen ütközés esetén végig lehet menni az ütköző file-okon és ízlés szerint összefésülni a változásokat.
  • CONFIG_PROTECT_MASK: egy védett könyvtáron belül "védteleníthetünk" vele file-okat.
  • PORTDIR_OVERLAY: lsd. később
  • ACCEPT_KEYWORDS: lsd. később
  • FEATURES: engedélyez bizonyos extrákat, pl. distcc, ccache, stb.
  • NOCOLOR: letiltja a szép színes tarka dekorációt az emerge kimenetén.

4 Kulcsszavak és maszkok

A Gentooban azt, hogy egy adott ebuild éppen "stable" vagy "testing", kulcsszavakkal jelölik. Pl. kulcsszó az, hogy "x86". Minden kulcsszó egy architektúra neve, és a kulcsszó jelenléte jelzi, hogy az adott ebuild az adott architektúrán a stabil branch-ben van. Azt, hogy egy ebuild még nem stable, a kulcsszó negálásával lehet jelölni, pl. "~x86".

Alapesetben a Gentoo csak a stabil kulcsszóval rendelkező ebuildeket engedi telepíteni. Ezt felül lehet bírálni az ACCEPT_KEYWORDS változóval, pl.: ACCEPT_KEYWORDS="~x86" Ekkor azonban minden csomagból a testing verziót teszi fel, ami nem túl jó ötlet. Ezért lehetséges per-ebuild alapon is engedélyezni kulcsszavakat a /etc/portage/package.keywords file-ban. Ez például így nézhet ki:

=dev-java/java-config-wrapper-0.12 ~x86
media-sound/mpd ~x86

Ez a java-config-wrapper egy pontosan adott verziójára és az MPD minden verziójára engedélyezi az ~x86 kulcsszóval telepítést. A testing kulcsszavaknál létezik egy még szigorúbb "még ne telepítsd" eltiltás is, ezek a maszkok. Ha egy ebuild maszkolva van, akkor azt még a ~kulcsszó engedélyezése után se tudjuk telepíteni. Ezek általában az ismerten problémás csomagok. Ha valamiért mégis kényszeríteni akarjuk egy maszkolt ebuild telepítését, akkor a nevét hozzá kell adnunk a /etc/portage/package.unmask file-hoz.

Lehetőség van saját magunk számára is maszkolni egyes ebuildeket, ha valamiért meg akarunk győződni róla, hogy még véletlenül se telepítsük fel. Ekkor az előzőekhez hasonlóan kell eljárni, csak ezúttal az /etc/portage/package.mask file-hoz kell nyúlnunk.


5 Overlay

Ha olyan ebuildeket akarunk telepíteni, amik nem a hivatalos Gentoo portage részei, akkor lehetőség van "overlay-eket" definiálni, amelyeken keresztül látszólag plusz ebuildeket adunk a rendszerhez.

Ehhez a PORTDIR_OVERLAY változóban meg kell adnunk a könyvtárat, ahol a nemhivatalos ebuildeket tároljuk. Ezután itt az eredeti portage könyvtárszerkezetét megtartva elhelyezhetjük az ebuildjeniket, amelyek innentől pont ugyanúgy lesznek elérhetőek, mint a hivatalos csomagok.

Személyes eszközök