APT csomagkezelési alapismeretek

Az APT (Advanced Package Tool) egy parancssoros csomagkezelő eszköz, amelyet Debian-alapú Linux rendszereken használnak. Ez a csomagkezelési megoldás olyan népszerű disztribúciókban számít alapértelmezett megoldásnak, mint a Linux Mint, az Ubuntu, az MX Linux vagy a Pop!OS. Az APT jelentősen megkönnyíti a szoftverek telepítését, frissítését és eltávolítását, és gondoskodik a függőségek kezeléséről is, vagyis a csomag telepítésekor a szükséges összetevőket is automatikusan felteszi. Az APT alapjai rövid idő alatt elsajátíthatók,ebben az oktatóanyagban megmutatjuk az alapvető használatát. Ez az oktatóanyag a youtube videóanyagunk leirata, ha szeretnéd az oktatóanyagot youtubeon is megtekinteni, itt teheted meg.

APT csomagkezelési alapismeretek

Info
Az APT a telepítéshez, eltávolításhoz és frissítéshez általában rendszergazdai jogosultságot kér, ezért ezeknél a műveleteknél a parancsok előtt jellemzően sudo-t használunk.

Csomagok frissítése

A frissítés menete általában két lépésből áll :Az apt update a letölti a legfrisebb csomagtároló információkat a disztribució szervereiről. Ez még nem telepít semmit, csak aktualizálja a helyi csomagadatbázist.

Az apt upgrade pedig a már meglévő csomagokból telepíti a legújabb verziókat, de csak olyan frissítéseket hajt végre, amelyek nem igényelnek csomageltávolítást, és jellemzően nem vezetnek nagyobb függőségi átrendezéshez.

A klasszikus frissítés így néz ki:

$ sudo apt update

$ sudo apt upgrade

Ha egy frissítés csak csomagcserékkel vagy csomagok eltávolításával oldható meg, az apt upgrade nem fogja ezt automatikusan meglépni, ezért előfordulhat, hogy egyes csomagokat visszatart a frissítésből. Ilyen esetekre való az apt full-upgrade, amely megengedi a szükséges csomagcseréket: feltelepíti az új függőségeket, és ha elkerülhetetlen, el is távolít csomagokat azért, hogy a frissítés végigfuthasson.

Nagyobb frissítéseknél ezt érdemes használni:

$ sudo apt update

$ sudo apt full-upgrade

Ha a frissítés előtt szeretnéd látni, hogy mely csomagokból érhető el friss verzió, írd be az apt list —upgradable parancsot.

$ apt list --upgradable

Csomagforrások

Az APT alapból a disztribúcióhoz beállított tárolókból dolgozik, vagyis ezekből a forrásokból telepít, és ezekből érkeznek a frissítések is. Emiatt nem mindegy, milyen tárolók vannak engedélyezve: a csomagok elérhetősége, a verziók frissessége, sőt sokszor a rendszer kiszámíthatósága is ezen múlik.

Terminálról a tárolók beállításait jellemzően a /etc/apt/sources.list fájlban találod, illetve egyes disztribucióknál külön fájlokban a /etc/apt/sources.list.d/ könyvtár alatt. A gyakorlatban ez azt jelenti, hogy amikor egy tárolót hozzáadsz vagy eltávolítasz, valójában ezeket a listákat módosítod.

Grafikus felületen ezeket a beállításokat az Ubuntu esetében többnyire a „Software & Updates” ablakban találod, ahol a fő tárolók és frissítési csatornák kapcsolói mellett az „Other Software” fülön a külső forrásokat is kezelheted. Linux Mintben ugyanez a kezelőfelület „Szoftverforrások” néven érhető el, mely rendszerint a Frissítéskezelőből is megnyitható. Itt változtathatod a frissítéshez használt tükörszervert, felvehetsz vagy törölhetsz PPA-kat és egyéb külső tárolókat, valamint megadhatsz hitelesítési kulcsokat is.

Info
Kezdőként a legfontosabb szabály az, hogy külső tárolót csak akkor adj hozzá, ha tényleg szükséged van rá, és lehetőleg megbízható forrásból. Az APT csak olyan tárolót használ, amelynek a csomaglistája aláírással ellenőrizhető, és a szükséges kulcs a rendszer számára ismert. Ha ez hiányzik vagy hibás, az APT biztonsági okból frissítéskor egyszerűen kihagyja a tárolót, és nem fog onnan telepíteni vagy frissíteni.

Ha szeretnéd megnézni, hogy egy adott csomag melyik tárolóból érkezik, futtasd az apt policy csomagnév parancsot. Ez megmutatja a telepített verziót, a jelenleg elérhető verziót, és azt is, hogy mely forrásokból érhető el a csomag. Kifejezetten hasznos, ha több tárolót használsz, mert így könnyen átláthatod, melyik repo milyen verziót kínál, és az APT miért épp azt a forrást részesíti előnyben.

Info
Amikor tárolót adsz hozzá vagy távolítasz el akár terminálból, akár grafikus felületről, utána érdemes lefuttatni az sudo apt update parancsot is, hogy a csomaglista rögtön a friss források alapján épüljön újra, és a következő telepítés vagy frissítés már a helyes kínálatból dolgozzon.

Csomagok telepítése, keresése

Az APT csomagkezelőben rendkívül egyszerű az alkalmazások telepítése: Tegyük fel szeretnénk egy terminálos fájlkezelőt telepíteni, mely jelen esetben legyen a midnight commander. A telepítéshez írjuk be az alábbi parancsot:

$ sudo apt install mc

A parancs kiadásakor az APT automatikusan feloldja a függőségeket, és a telepítés előtt megerősítést kér. Ha minden rendben, erősítsd meg a műveletet az Y beírásával majd nyomj Entert. Természetesen több csomagot is telepíthetsz egyetlen parancsban, ilyenkor szóközzel elválasztva add meg a neveket.

Például:

$ sudo apt install mc openttd

De mi a helyzet akkor ha a beírt csomagnév nem található? Nos erre találták ki az APT keresési funkcióját. Például:

$ apt search git

A parancs a helyi csomaglistádban (amit az apt update tölt le a tárolókból) a csomagnevekben és a rövid leírásokban keres, majd kilistáz minden egyezést; a kimenetben általában a név, a verzió és egy rövid leírás is látszik. A találatokból gyakran már azonnal kiderül, melyik csomag kell, és melyik csak hasonló nevű vagy kapcsolódó kiegészítő.

Ha túl sok eredményt kapsz, az azért van, mert egy általános kulcsszó sok csomagnévben és leírásban előfordul. Ilyenkor pontosabb kifejezéssel szűkíthetsz, például:

$ apt search "git gui"

Ez a parancs sudo nélkül is használható.

Az APT csomagkeresés gyorsasága annak köszönhető, hogy az APT az internet helyett a naprakész tárolóinformációkkal veti össze a keresőkifejezést a csomagok nevével és leírásával.

Ha nem vagy abban biztos hogy a kiválasztott csomag az amire neked konkrétan szükséges van, megtekintheted a csomagleírását is. Az előbbi csomagnév példát figyelembe véve például:

$ apt show git-gui

Így részletes információt kaphatunk a csomagról.

Csomagok eltávolítása

Ha már nincs szükséged egy csomagra, eltávolíthatjuk az apt remove paranccsal. Például a vim eltávolítása így néz ki:

$ sudo apt remove vim

Ez előbbi parancs ugyan eltávolítja a csomagot, de a konfigurációs fájlokat meghagyja. Ha minden a csomaghoz kapcsolódó információt, konfigurációs fájlt és állományt szeretnénk törölni akkor érdemesebb az apt purge parancsot használni.

$ sudo apt purge vim

Előfordulhat, hogy egy csomagot teljesen „tiszta állapotból” szeretnél újratelepíteni, például ha úgy tűnik, hogy megsérült vagy valami hiányzik belőle, ilyenkor alkalmazható a reinstall parancs. Például:

$ sudo apt reinstall nano

Felesleges csomagok és cache takarítása

Frissítések és telepítések után gyakran maradnak a rendszeren olyan függőségek, amikre már nincs szükség. Ezeket az APT automatikusan le tudja szedni az autoremove paranccsal:

$ sudo apt autoremove

A letöltött csomagok fájljai a gyorsítótárban megmaradhatnak, és idővel jelentős tárhelyet foglalhatnak. Az apt clean teljesen kiüríti a csomagcache-t, míg az apt autoclean csak azokat a régi csomagfájlokat távolítja el, amelyek már nem érhetők el a tárolókból.

$ sudo apt autoclean
sudo apt clean

Tárolók kezelése

Az APT egyik erőssége, hogy rugalmasan kezelheted vele a szoftverforrásokat. Ubuntu-alapú rendszereken a tárolók hozzáadásához gyakran az add-apt-repository parancsot használják. Előfordulhat, hogy ehhez telepítened kell egy kiegészítő csomagot:

$ sudo apt install software-properties-common

Új tároló hozzáadása

Alapesetben az APT a rendszeredben már beállított tárolók csomagkínálatából dolgozik, de néha szükség lehet új forrás felvételére. Ilyen lehet, ha egy programból frissebb verziót szeretnél, vagy egy külső fejlesztő által karbantartott csomagot telepítenél. Ubuntu-alapú rendszereken erre gyakran az add-apt-repository a legkényelmesebb megoldás, mert egyszerűen hozzáadja a tárolót a forráslistához. PPA-k esetén a hitelesítés többnyire automatikusan rendeződik, más külső tárolóknál viszont általában a szolgáltató hivatalos leírását érdemes követni. Miután felvetted a tárolót, frissítsd a csomaglistát, hogy az APT már az új forrás csomagjait is figyelembe vegye. Például egy PPA felvétele így néz ki:

$ sudo add-apt-repository ppa:deadsnakes/ppa

A PPA-kat a Launchpadon keresztül szokták terjeszteni, és tipikusan akkor használják, ha valaki gyorsabban szeretne kiadni friss csomagverziókat, mint ahogy azok bekerülhetnének a hivatalos tárolókba.

Amikor hozzáadsz egy új forrást, a rendszernek még „meg kell tanulnia”, hogy abból a tárolóból milyen csomagok érhetők el. Ezt a csomaglista frissítése végzi el. Bizonyos disztribuciókban a parancs futtatásával ez automatikusan lefut, de amennyiben biztosak akarunk lenni a parancshoz adjuk hozzá a && apt update kapcsolót.

$ sudo add-apt-repository ppa:deadsnakes/ppa && apt update

Tároló eltávolítása

Ha egy tárolóra már nincs szükséged, érdemes eltávolítani. Egyrészt így kevesebb helyről jönnek frissítések, másrészt elkerülheted, hogy csomagütközés történjen a disztribució saját csomagtárolójában lévő verzióval. PPA esetén a legegyszerűbb eltávolítás a --remove kapcsolóval történik, ami kiveszi a tárolót a forráslistából.

$ sudo add-apt-repository --remove ppa:deadsnakes/ppa

Ha korábban telepítettél csomagokat a PPA-ból, és vissza szeretnél térni a disztribúció eredeti verzióihoz, az már egy külön lépés: ilyenkor nem elég csak a tárolót leszedni, hanem a csomagokat is vissza kell „downgrade-elni” a hivatalos tárolók verzióira (erre sokan a ppa-purge eszközt használják).

Csomag visszatartása

Ha van olyan helyzet, amikor kifejezetten nem szeretnéd, hogy egy csomag frissüljön, akkor „hold” állapotba teheted, azaz visszatarthatod őket. Erre jó példa a kernel: előfordulhat, hogy egy friss kernelverzióval valami nem működik jól, például eltűnik a Wi-Fi, vagy egyszerűen instabillá válik a rendszer. Ilyenkor praktikus, ha ideiglenesen megtartod a jelenleg jól működő kernelt, és megakadályozod, hogy egy frissítés automatikusan felülírja.

Egy adott csomag visszatartása az apt-mark hold csomagnév paranccsal végezhető el, például:

$ sudo apt-mark hold linux-image-generic linux-headers-generic

Info
Ha több csomagot kívánunk visszatartani, akkor a csomagneveket szóközzel elválasztva adhatjuk meg

Amennyiben már nem szeretnénk az adott csomagot visszatartani, úgy a hold parancs ellentettjével, az unhold-al tudjuk a visszatartást feloldani.

$ sudo apt-mark unhold linux-image-generic linux-headers-generic

Tároló prioritás és verziórögzítés (haladó)

Ha ugyanaz a csomag több tárolóból is elérhető, az APT a saját prioritási szabályai alapján választja ki, melyik forrásból telepítsen. Haladóként ezt te is kézben tarthatod úgynevezett pinninggel, amit a /etc/apt/preferences.d/ alatt létrehozott szabályokkal állíthatsz be. Itt érdemes körültekintőnek lenni: egy túl magas prioritás már kényszerítő erejű lehet, és akár azt is előidézheti, hogy az APT egy csomagot visszatelepít egy régebbi verzióra.

A pinninghez például létrehozhatsz egy új fájlt:

$ sudo nano /etc/apt/preferences.d/repository-priority

Ezután ebben megadhatod meg a prioritásokat. A szabályokban használt azonosítók (például a release mezők, origin, suite, codename) tárolónként eltérhetnek, ezért érdemes előtte megnézni az apt policy kimenetét, és ahhoz igazítani a beállításokat.

További információk a man apt_preferences paranccsal a hivatalos dokumentációban érhetőek el.

Hibás függőségek és félbemaradt telepítések javítása

Előfordulhat, hogy a csomagok telepítése közben hibás függőségekbe futsz, de előfordulhat hogy valamilyen okból egy telepítés/frissítés félbemarad. Az ilyen törött frissítések esetén jelent megoldást a fix-broken kapcsoló, melyet az alábbiak szerint tudsz megadni:

$ sudo dpkg --configure -a
sudo apt --fix-broken install

Synaptic csomagkezelő

A korábbi bemutató a terminálalapú csomagkezelést mutatta be. Akik viszont grafikus felületen szeretnék kezelni a csomagjaikat, azoknak jó alternatíva lehet a Synaptic csomagkezelő.

A Synaptic egy a Debian/Ubuntu alapú rendszereken jól ismert és jól bevált grafikus csomagkezelő, amellyel egy vagy több csomagot lehet telepíteni, eltávolítani, frissíteni, illetve bizonyos esetekben régebbi verzióra visszaállni. Tud rendszerfrissítést indítani, van beépített csomagkeresője, és a tárolók kezelése is elérhető a felületén, ezért a program több mint egy telepítő felület, mert a csomagforrásokhoz is könnyen tudod menedzselni.

A csomaglista több szempont szerint szűrhető, például csoportok, állapot, eredet vagy saját szűrők alapján. A csomaglista csökkenő vagy növekvő sorrendbe helyezhető Állapot, eredet, csomagnév, telepített verzió, legfrisebb verzió szerint, ami bizonyos csomagcsoportoknál praktikus lehet. Egy kiválasztott csomagnál lekérhető a teljes változtatások listája, és van lehetőség verziózárolásra is, hogy egy bevált kiadás ne frissüljön automatikusan. Haladó opcióként egy konkrét verzió telepítése is kikényszeríthető, a kijelölések pedig a módosítások alkalmazása előtt bármikor visszavonhatók. A Synaptic a műveleteket háttérben futó terminálos folyamatokkal végzi, és hiba esetén a napló, valamint az üzenetek visszanézhetők.

Hibaelhárítás és tippek az Apt csomagkezelőhöz

Gyakran előforduló hibák és megoldásaik

A hatékony csomagkezelés kihívásokkal is járhat. Ebben a fejezetben áttekintjük a gyakori problémákat, amelyek a csomagkezelés során előfordulhatnak, és tippeket nyújtunk ezek megoldásához. Emellett bemutatunk bevált gyakorlatokat is a zökkenőmentes és hatékony csomagkezelés érdekében.

ProblémaMegoldás
Csomag nem találhatóEllenőrizd a csomag nevét és a használt tárolót. Győződj meg arról is, hogy frissítetted a csomaglistát az apt update paranccsal.
Hibás függőségekHasználd az apt --fix-broken install parancsot, amely megpróbálja automatikusan helyrehozni a függőségi problémákat.
Meg nem felelő függőségekNézd át az APT által jelzett ütköző vagy nem teljesíthető függőségeket. Előfordulhat, hogy egyes csomagokat kézzel kell telepíteni vagy eltávolítani a hiba megszüntetéséhez.
Nincs elég hely az eszközönSzabadíts fel tárhelyet a már nem szükséges csomagok eltávolításával az apt autoremove, valamint a gyorsítótárazott csomagfájlok törlésével az apt clean parancs segítségével.

Tippek a csomagkezeléshez

A hatékony csomagkezelés fenntartása érdekében az alábbi gyakorlatokat érdemes követni:

Rendszeres frissítések: Tartsd a rendszert naprakészen az apt update és apt upgrade parancsok rendszeres futtatásával.

Biztonsági mentések: Minden jelentős csomagváltoztatás vagy frissítés előtt készíts biztonsági mentést az adatok védelme érdekében. Ehhez a timeshift nevű nyíltforráskódú szoftvert ajánljuk.

Hivatalos tárolók használata: Amikor csak lehetséges, használd a hivatalos tárolókat a stabilitás és biztonság érdekében.

Rögzítés és prioritások beállítása (haladó): Tanuld meg a csomagok rögzítését és a tárolók prioritásainak kezelését a verziók és források feletti kontroll érdekében.

Tisztítás: Rendszeresen távolítsd el a nem használt csomagokat és a gyorsítótárazott fájlokat az apt autoremove és apt clean parancsokkal.

Ezen bevált gyakorlatok és hibaelhárítási technikák követésével minimalizálhatod a problémákat, fenntarthatod a rendszer stabilitását, és magabiztosan kezelheted a csomagokat az Apt csomagkezelő segítségével.

Ez az oktatóanyag elérhető a Pingvinbázis youtube csatornáján is videó formátumban:

Az APT csomagkezelő használata