Pacman csomagkezelő
A Pacman csomagkezelő az Arch Linux C programnyelven írt, parancssoros (CLI) csomag- és frissítéskezelő rendszere. Segítségével a felhasználónak lehetősége van csomagok telepítésére a hivatalos Arch Linux tárolókból, valamint a felhasználó által helyben, forráskódból lefordított és elkészített csomagok telepítésére, továbbá a rendszer frissítésére. Az Arch Linux rendszeren túl, szintén alap csomagkezelőként működik az Arch-alapú rendszereken is (pl. Manjaro Linux, Arco Linux).

Szerver-kliens felépítésének köszönhetően képes a rendszer csomagkészletét a hivatalos tárolókkal szinkronizálni, így a csomagadatbázisa mindig naprakészen tartható. A csomagok formátuma alapértelmezetten.pkg.tar.zst, de a makepkg eszközzel készített saját csomagok más tömörítési eljárást is használhatnak. A tárolókból történő telepítésük esetén azok függőségeit is megkeresi és a csomaggal együtt telepíti.

Használatához root jogosultság (su) vagy emelt szintű felhasználói jogosultság (sudo) szükséges!

Funkciói, lehetőségei 

 a letöltés és az adatbázis elérés gyorsítása
 szinkronizálás és frissítés
 csomagok keresése és csomaginformációk megjelenítése
 csomagok telepítése
 telepített csomagok eltávolítása

 takarítás

A letöltés és az adatbázis elérés gyorsítása 
Lehetőségünk van arra, hogy sebesség szerint sorba állítsuk a csomagtárolókat, illetve, hogy az adatbázis elérésének sebességét optimalizáljuk, az alábbi parancsokkal:

 tárolók sebesség szerinti besorolása: 

    # pacman-mirrors -g

 az adatbázis elérési sebességének optimalizálása: 

   # pacman-optimize && sync

Szinkronizálás és frissítés 
Lehetőségünk van rá, hogy csak az adatbázist szinkronizáljuk a szerverrel, illetve, hogy a szinkronizálás után a rendszerfrissítést is végrehajtsuk.

Adatbázis szinkronizálás

 adatbázis szinkronizálás:

     # pacman -Sy

 adatbázis szinkronizálás kényszerítése:

     # pacman -Syy

A szinkronizálás kényszerítése naprakész adatbázis esetén is működik, ez akkor hasznos, ha a felhasználó a tárolókkal kapcsolatban változtatott valamit és a változtatásokat kívánja érvényesíteni.

Rendszerfrissítés

A rendszerfrissítés egyetlen paranccsal történik, de ezzel együtt lehetséges a szinkronizálás végrehajtása is.

 csak rendszerfrissítés:

     # pacman -Su

 szinkronizálás és frissítés:

    # pacman -Syu

 szinkronizálás kényszerítése és frissítés:

    # pacman -Syyu

Lehetséges a rendszerfrissítés végrehajtása a felhasználó által megjelölt csomagok kihagyásával is. Csomagok kihagyásához az /etc/pacman.conf fájlba kell a következő sort beírni (root jogosultság szükséges!):

   IgnorePkg=csomagnév

Ha egy csomagcsoport frissítéseit kívánjuk figyelmen kívül hagyni, akkor az alábbi sort kell a fájlba beírni:

  IgnorePkg=package_group

... ahol a package_group helyére a csomagcsoport neve írandó!

Pl.:   IgnorePkg=gnome

IgnorePkg=kde

Csomagok keresése és csomaginformációk megjelenítése
Lehetőségünk van csomagokat keresni a csomagnév megadásával. A kapott találati lista a tárolókban megtalálható csomagokat listázza, a rendszerre már korábban telepített csomagoknál a neve után zárójelben a 'telepítve' (angolul 'installed) megjelölés látható.

 csomag(ok) keresése

# pacman -Ss csomagnév

Egyszerre több csomagra is rákereshetünk, a csomagok neveit egymás után, szóközzel elválasztva beírva:

# pacman -Ss csomagnév1 csomagnév2 csomagnév3

Lehetséges a rendszerre már telepített csomagok kilistázása is a

# pacman -Q

paranccsal.

Itt információkat kaphatunk a már telepített csomagról, illetve részletes információkat is megjeleníthetünk róla, valamint a hozzá tartozó fájlokat is kilistázhatjuk.

 információ a telepített csomagról:

# pacman -Qs csomagnév

 részletes adatok a csomagról:

# pacman -Si csomagnév

 változások összefoglalása:

# pacman -Qi csomagnév

 változások idejének megjelenítése és a backup fájlok megjelenítése:

# pacman -Qii csomagnév

A csomaghoz tartozó fáljokat a

# pacman -Qo /file_path

paranccsal tudjuk megjeleníteni.

A csomaghoz tartozó függőségeket a

pactree csomagnév

parancs listázza.

A rendszeren található elárvult csomagok megjelenítéséhez pedig az alábbi parancs szükséges:

# pacman -Qdt

A telepített csomagok listájának lekérdezése és lementése előtt  célszerű időnként biztonsági mentést csinálni a pacman által telepített csomagokról. Így egy rendszerösszeomlás esetén a pacman segítségével egyszerűen újratelepíthetjük ugyanazon csomagokat.

Először készítsünk egy biztonsági mentést a meglévő csomaglistánkról (célszerű egy külső eszközre ezt megtenni):

# pacman -Qqe > pkglist

Ezután az új rendszeren másoljuk fel ezt a pkglist állományt a gépre és lépjünk be abba a könyvtárba, ahova tettük, majd adjuk ki az alábbi parancsot a csomaglista visszatöltéséhez:

# pacman -S $(cat pkglist)

 Csomagok telepítése Csomagok telepítéseEgy vagy több csomag telepítése előtt szinkronizáljuk a helyi csomagadatbázist a tárolóval. 

# pacman -Sy

Lehetőségünk van az adatbázis frissítésére és a csomag telepítésére egyszerre is:

# pacman -Sy csomagnév

Csomag frissítése vagy telepítése (minden függőségével együtt) az alábbi paranccsal történik: 

# pacman -S csomagnév

Lehetséges egyszerre több csomag telepítése is. Ilyenkor a csomagok neveit egymás után, szóközzel elválasztva írjuk be.

# pacman -S csomagnév1 csomagnév2 csomagnév3

Ha olyan csomagot kívánunk telepíteni, ami más tárolóban található, mint ami az /etc/pacman.conf fájlban be van állítva, akkor a csomag neve előtt meg kell adnunk a tároló nevét, ahonnan telepíteni kívánunk, ellenkező esetben a konfigurációs fájlban beállított tárolóban szereplő csomag élvez elsőbbséget s az kerül telepítésre.

# pacman -S testing/csomagnévCsomagok telepítése csoportkéntLehetséges csomagok telepítése csoportként is (pl. a gnome vagy a kde), ilyenkor a csoportban szereplő összes csomag egyszerre telepíthető.

# pacman -S csomagnév

A parancs kiadása után a pacman megjeleníti a csoportban található összes telepíthető csomagot egy sorszámozott listaként, majd a lista végén kéri, hogy adjuk meg a csoportból telepítendő csomagok sorszámát. Alapértelmezetten az összes csomag ki van jelölve s ha szám beírása nélkül nyomunk Entert, akkor az összes csomag települ.

Enter a selection (default=all):

Lehetőségünk van arra, hogy csak adott csomagokat telepítsünk a listából vagy megadottakat kizárjunk a telepítésből.

Például csak az 1-től 8-ig szereplő csomagokat kívánjuk telepíteni és a 11-est:

Enter a selection (default=all): 1-8 11

Illetve az 5-től 9-ig szereplő csomagokat szeretnénk kizárni és a 2-est telepíteni:

Enter a selection (default=all): ^ 5-8 ^ 2

Az adott csoportba tartozó csomagokat külön is ki tudjuk listázni a

# pacman -Sg csomagnév 

paranccsal.Csomag letöltése telepítés nélkülLehetséges, hogy az adott csomagot csak letöltsük a tárolóból, de ne telepítsük. Ehhez adjuk ki az alábbi parancsot:

# pacman -Sw csomagnévHelyi vagy előzőleg letöltött csomag telepítéseA felhasználó által forráskódból lefordított és elkészített csomag (helyi csomag) telepítése az alábbi paranccsal történik:

# pacman -U /csomag elérési útja/csomag név.pkg.tar.zst

Például:

# pacman -U /home/user/Asztal/valami-5.1.8.pkg.tar.zst

Ekkor a csomagkezelő az Asztalon található valami-5.1.8.pkg.tar.zst csomagot fogja telepíteni.

Ha pedig az adott csomagot az interneten található helyről kívánjuk telepíteni, akkor elérési útnak az adott oldal webcíme is megadható.

# pacman -U http://valamicsomag/repo/valami-5.1.8.pkg.tar.zst

Ekkor az adott oldalról fogja az adott csomagot letölteni és telepíteni a csomagkezelő.

Lehetőségünk van az összes csomag újratelepítésére is a rendszeren az alábbi paranccsal:

# pacman -S $(pacman -Qq | grep -v "$(pacman -Qmq)")

 Telepített csomagok eltávolítása 
Eltávolíthatunk egy csomagot úgyis, ha a függőségeit megtartjuk:  

# pacman -R csomagnév

Illetve lehetséges a csomag eltávolítása úgyis, hogy a más csomagok által nem megkövetelt függőségeit is eltávolítjuk:

# pacman -Rs csomagnév

Ha az összes függőségével együtt kívánjuk eltávolítani az adott csomagot, az alábbi paranccsal tehetjük meg:

# pacman -Rsc csomagnévFigyelem! Ez a művelet rekurzívan működik és óvatosan alkalmazandó, mivel sok potenciálisan szükséges csomagot eltávolíthat, amikre más csomagoknak szüksége lehet!

Ha a csomaggal együtt csak annak helyi konfigurációs fájljait kívánjuk eltávolítani, akkor a parancs a következő:

# pacman -Rn csomagnév

Arra is lehetőségünk van, hogy a más csomagok által nem megkövetelt függőségeit és a helyi konfigurációs fájljait is eltávolítsuk az adott csomagnak (ez lényegében a teljes törlése az adott csomagnak).

# pacman -Rns csomagnév

Ha egy olyan csomagot akarunk eltávolítani, ami másik csomag számára szükséges (annak függősége), anélkül, hogy azt az adott csomagot eltávolítanánk, akkor az alábbi paranccsal tehetjük meg:

# pacman -Rdd csomagnévFigyelem! Ezt a megoldást lehetőleg kerüljük, mivel ezzel súlyos károkat okozhatunk a rendszerben, ami rendszerösszeomláshoz is vezethet!

 Takarítás 
Az eltávolított csomagokat, valamint az összes csomagot is törölhetjük az átmeneti tárolóból (cache).

 eltávolított csomagok törlése

# pacman -Sc

 az összes csomag törlése

# pacman -Scc

A más csomagok által nem használt csomagokat (egyik csomagnak sem függőségei) elárvult (orphaned) csomagoknak nevezzük s lehetőségünk van ezeknek az eltávolítására is a

# pacman -Rsn $(pacman -Qdtq)

paranccsal.

A pacman konfigurálása
A program beállításai az /etc/pacman.conf fájlban találhatóak, amelynek szerkesztéséhez root jogosultság szükséges. Itt tudjuk megadni az általunk használni kívánt tárolókat, azokat aktiválhatjuk vagy inaktiválhatjuk, illetve egyéb tárolókat is hozzáadhatunk a rendszerhez (ezen egyéb tárolók az AUR – Arch User Repository számára szükségesek). Az inaktiválni kívánt tároló bejegyzése elé # karaktert kell írni, így azt a rendszer nem veszi figyelembe.

Például:

[core]

Include = /etc/pacman.d/mirrorlist

Itt a core tároló be van kapcsolva, tehát a rendszer használja.

#[testing]

#Include = /etc/pacman.d/mirrorlist

Itt pedig a testing tároló ki van kapcsolva, tehát a rendszer nem használja.

Az AUR számára szükséges egyéb tárolókat a fájl végén lévő szekcióban tudjuk megadni.

Például:

[archlinuxfr]

SigLevel = Never

Server = http://repo.archlinux.fr/$arch

Minden hivatalos tároló az /etc/pacman.d/mirrorlist fájlban megadott szerverlistát használja, amely fájl tartalmaz egy '$repo' változót is. Célszerű ezt a listát is karbantartani!

Miután megváltoztattuk a tárolókat az /etc/pacman.conf fájlban és elmentettük a fájlt, utána mindenképpen szükséges a csomagadatbázisok szinkronizálása a

# pacman -Sy vagy a # pacman -Syy paranccsal!

 Grafikus előtétprogramok a pacman-hez 
Léteznek grafikus felületű előtétprogramok (GUI) a pacman-hez, amelyek jelentősen megkönnyítik a felhasználó munkáját. Felületükön minden művelet és beállítás könnyedén, egér használatával elvégezhető.

Ilyen programok:

 Octopi
 pamac-aur
 tkPacman

Megjegyzések
A cikk során megjelenített pacman parancsok root jogosultsággal kiadott parancsként lettek feltüntetve! Az emelt szintű felhasználói jogosultsággal''' való használat esetén a parancsok elé a sudo'' parancs megadása szükséges!

Jegyzetek

Források 
 A pacman hivatalos Arch Wiki oldala (angol nyelven) 
 A Manjaro Linux pacman Wiki oldala (Pacman Tippek) (magyar nyelven)

Számítástechnika
Linux
Szoftverek
Csomagkezelők