Szerkesztő:Aldum/Csomagkezelés

A Unix/Linux szerverek üzemeltetése wikiből
< Szerkesztő:Aldum
A lap korábbi változatát látod, amilyen KornAndras (vitalap | szerkesztései) 2012. december 18., 12:21-kor történt szerkesztése után volt.

Tartalomjegyzék

1 Alapfogalmak

1.1 Csomag (package)

Egy csomag programok, programkönyvtárak és az installáláshoz, konfigurációhoz szükséges metaadatok összessége.

1.2 Függőség (dependency)

Egy adott csomag függőségei olyan további csomagok, amikre szükség van a működéséhez. Függőség lehet:

  • explicit (mindenképpen szükséges)
  • opcionális (csak egyes funkciók használatához van rá szükség, így a felhasználó eldöntheti, hogy telepíti-e)
  • rejtett (ilyen akkor fordul elő, ha a csomagkezelő rosszul van beállítva, és bizonyos többé vagy kevésbé opcionális függőségekről nem tud, a hiány hatására az adott program hibásan, vagy egyáltalán nem működik)

1.3 Csomagkezelő rendszer (package manager)

Az operációs rendszeren programcsomagok telepítését, frissítését, konfigurációját megkönnyítő-automatizáló softwareeszköz. Tágabb értelemben ide tartozhatnak különféle segédprogramok, amik függőségek, csomagközi viszonyok felderítésére, vagy csomaghoz tartozó file-ok, esetleg adott programot tartalmazó csomag keresésére használhatók. Disztribúciónként jelentősen eltérhet, hogy mi tartozik az alap csomagkezelőhöz, és mi kerül külön csomagba.

Például meg akarjuk keresni, hogy melyik csomaghoz tartozik az xeyes[1] demo:

  • Red Hat/Fedora/CentOS esetén
yum whatprovides xeyes
  • Debian/Ubuntu/ezekre alapuló rendszereknél
apt-file search xeyes

beépített paranccsal

  • Arch Linuxban
pkgfile xeyes
  • Gentoonál
pfl xeyes

segédprogramokkal tehetjük meg.

Ezen felül lehetnek még harmadik személy által írt wrapperek, amik további funkcionalitást biztosítanak, de kézzel kell telepíteni. (pl yaourt)

1.4 Repository

Központi csomagtároló adatbázis. A csomagkezelő egy vagy több ilyenből tölti le a csomaglistákat, csomagokat és metaadatokat. Ilyet üzemeltethetnek a disztribúció fejlesztői, de független is lehet.

2 Csomagformátumok

2.1 Bináris

Ez az általánosan elterjedt formátum, a csomag az adott architektúrára lefordított változatot tartalmazza.

2.1.1 deb

A Debian eredeti formátuma. Két (esetleg tömörített) tar file-t tartalmaz: az egyikben a csomaghoz tartozó fájlok, a másikban a csomagkezelőnek szóló információk (pre- és postinstall scriptek stb.) vannak.

Ezt a csomagformátumot használja a Debian, az Ubuntu és minden olyan disztribúció, amely ezek valamelyikére épül.

2.1.2 rpm

A Linux Standard Base [2] által előírt formátum. Valószínűleg azért esett erre a választás, mert az LSB-t létrehozó cégek disztribúciói jórészt eleve ezt a csomagformátumot használták. Jelenleg egyebek mellett a következő disztribúciók natív csomagformátuma: Red Hat, Fedora, CentOS, Oracle Linux, Yellow Dog; OpenSUSE; Mandriva; MeeGo. Debianon az rpm csomagok az alien programmal .deb-bé alakíthatók és telepíthetők, de általában jobb eredményt kapunk, ha eleve .deb-nek készült csomagokat telepítünk.

2.1.3 pkg.tar.xz

Arch Linux, forkjai, és néhány kisebb (Chakra, DeLi, Manjaro) -később átvett- formátuma.

2.2 Forráskód (source-based)

Szigorúan véve a forráskód nem csomag; itt csak a teljesség kedvéért említem meg.

Ugyanakkor bizonyos disztribúcióknál a csomagkezelő segítségével forrásból (vagy forrásból is) telepíthetjük a csomagokat úgy, hogy a mi rendszerünkön forduljanak le, ezáltal a nálunk telepített library-verziókhoz legyenek linkelve, a mi CPU-nkra optimalizálva stb. (ezzel nem ritkán ezredmásodperceket takarítva meg a futásidőből).

Forrásalapú disztribúciók: Gentoo, Gentoo-variánsok és -forkok (pl. Calculate), Sorcerer, Source Mage, Linux From Scratch (bár itt az egész rendszert nulláról, forrásból építjük fel, és hagyományos értelemben vett csomagkezelője nincsen), BSD-k.

2.2.1 ebuild

A Gentoo csomagkezelője, a Portage által kezelt valami: hagyományos értelemben véve nem csomag, csak egy szöveges file, bash script, ami tartalmazza a forráskód és szükséges patchek címét, illetve konfigurációs információkat.

2.2.2 ABS

Arch Build System. Noha az Arch alapvetően bináris disztribúció, tartozik hozzá egy ún. User Repository, amiben a csomagokat forráskóddal és egy az ebuildhez hasonló PKGBUILD[3] leíróval tárolják. Ezek egy makepkg nevú eszközzel alakíthatóak olyan csomaggá, amit aztán a rendes csomagkezelő tud telepíteni.

2.2.3 BSD Ports

3 Csomagkezelő feladatai, funkciói

3.1 Ellenőrzés

  • Checksumok ellenőrzése, biztosítandó az adatok hibátlanságát
  • Csomagok digitális aláírásának ellenőrzése. Erre azért van szükség, hogy ne települjön kétes forrásból származó, esetleg hátsó kaput tartalmazó csomag.

3.2 Telepítés

3.2.1 Függőségek kezelése

A csomagok sokrétű és bonyolult függőségi viszonya az elsődleges ok, amiért szükség van csomagkezelőre. Ez különösen fontos dinamikusan linkelt könyvtárak esetén, amikből a különböző programoknak esetleg különböző verzióra lehet szüksége. Ha ezek nincsenek megfelelően kezelve, az a "dependency hell" nevű, meglehetősen kellemetlen problémához vezet. (Ami ugyan elsősorban Windows rendszerekből lehet ismerős DLL Hell néven, de létezik az RPM Hell kifejezés is [4])

3.3 Frissítés

Ez általában két lépésben történik. Először a csomagkezelő frissíti a saját listáját, majd ellenőrzi, hogy a rendszerben a telepített csomagok verzióját.

3.4 Törlés

Itt is felmerülhet a függőségek kérdése. Ha valamit csak azért települt fel, mert egy másik csomagnak szüksége volt rá, és később ezt eltávolítjuk, "árva" csomagok keletkeznek a rendszerben. Ezek feltakarítása is a csomagkezelő feladata, bár ezt általában nem teszi meg automatikusan.

3.5 Csomagkeresés

A legtöbb esetben létezik erre egy kényelmesebb webes felület, vagy a csomagkezelőhöz tartozó grafikus felület, de a csomagkezelőnek képesnek kell lennie arra is, hogy a csomaglistákban, leírásokban keressen, listázza az elérhető verziókat.

4 Konkrét csomagkezelők

4.1 Debian-variánsok

A Debian alapértelmezett csomagkezelője a dpkg. Erre épül egy összetettebb, nagyobb tudású, és nem utolsó sorban kényelmesebb CLI eszköz, az APT. Ezeken felül még vannak az APT-t is elsősorban grafikus felülettel bővítő programok. Az aptitude ncurses[5] könyvtár segítségével terminálon (bár parancssorosan is működik, teljesen kiváltva az APT-t), míg a synaptic, és az aptitude újabb verzióiban megjelent aptitude-gtk pedig X felett működik.

4.2 RPM

RPM

4.2.1 YUM

Az APThez hasonló magasabb szintű csomagoló az RPMhez.

4.2.2 Zypper

Bár az OpenSUSE szintén RPM csomagokkal működik, saját csomagkezelővel rendelkezik, ez a Zypp.

4.2.2.1 Telepítés
zypper install <csomag>

vagy

zypper in <csomag>

Ez alkalmas repositoryból és helyi csomagból telepítésre is.

4.2.2.2 Eltávolítás
zypper remove <csomag>

vagy

zypper rm <csomag>

Érdekesség, hogy az install kapcsolóval is lehet csomagot eltávolításra kijelölni, ha a neve elé teszünk egy '-' vagy '~' karaktert. Itt fontos, hogy ne az első legyen, amit törlésre szánunk. Ugyanígy tudunk telepíteni is remove-val, ha a '+' karakterrel jelöljük a csomagot.

4.2.2.3 Csomag keresése

egyszerű keresés:

zypper search <csomag>

keresés leírásokban is:

zypper search --search-descriptions 

vagy

zypper search -d

A keresésben használható * és ? wildcard is.

4.2.2.4 Frissítés
zypper update

vagy

zypper up
4.2.2.5 Patternek

A pattern csomagok csoportja, amik valamilyen módon összefüggenek, sokszor van szükség az együttes telepítésükre/törlésükre. Tulajdonképpen egy csomagtípus, a Portage metacsomagjaihoz hasonló, melyek függőségként húzzák be az alapvetően nem feltétlenül összefüggő elemeket.

4.2.2.6 Repositoryk

Míg a legtöbb csomagkezelő esetén a configfile módosításával állíthatjuk be a kívánt repositorykat, a zyppernek ehhez is szolgáltat parancssoros eszközt

Hozzáadás

zypper addrepo <repo URI> <alias>

Felveszi a megadott repositoryt, és hozzárendel egy aliast.

Törlés

zypper removerepo <URI|név|alias>

Jelenlegiek listája

zypper repos <repo>

Frissítés

zypper refresh <repo>

Ha nem adunk meg semmit, az összeset frissíti.

4.3 Pacman

4.4 Portage

5 Források



Személyes eszközök