APT (Advanced Packaging Tool)

botond küldte be 2019. 01. 29., k – 21:23 időpontban

Tartalom

 

Bevezető

Az APT (Advanced Packaging Tool) egy ingyenes és nyílt forráskódú szoftveres felhasználói felület, amely – együttműködve a rendszer könyvtárakkal – a Debian és a kapcsolódó Linux disztribúciók szoftvercsomagjainak telepítését, konfigurálását vagy eltávolítását végzi automatizáltan. Az APT leegyszerűsíti a szoftverek Unix-szerű számítógépes rendszereken történő kezelésének folyamatát, a szoftvercsomagok beszerzésétől kezdve a konfigurálásukon át az automatizált telepítésükig, akár előfordított fájlokból vagy a forráskódok összeállításával és lefordításával.

 

 

Működése és használata

Az APT egy olyan szoftvereszköz gyűjtemény, amit az apt nevű csomag foglal magában. Az apt jelentős részét egy C++ függvénykönyvtár alkotja, továbbá tartalmaz még parancssori programokat is a szoftvercsomagok kezelésére, például: apt, apt-get, apt-cache. Az apt csomagot minden Debian disztribúció alapértelmezetten tartalmazza. Az apt-t akár a dpkg front-end-jének is lehet tekinteni, mint a dselect felhasználóbarátabb verzióját. Míg a dpkg egyéni csomagokkal végez műveleteket, az apt eszközei lekezelik a csomagok közötti összefüggéseket, különösen a függőségeket, valamint  a magasabb szintű verziószámítási döntéseket (kiadások követése és csomagrögzítés).

Az APT-t gyakran a Debian egyik legjobb funkciójának tekintik, amelyet a Debian fejlesztők a Debian szigorú minőség ellenőrzéséhez kötik.

Az APT egyik fő jellemzője a dpkg hívásának módja – a telepítendő vagy eltávolítandó csomagok listájának topológiai rendezése, és a dpkg hívása a lehető legjobb sorrendben. Bizonyos esetekben használja a dpkg --force kapcsolóját is. Ez azonban csak akkor történik meg, ha az APT nem tudja kiszámítani, hogy a dpkg megköveteli-e a kényszerített művelet végrehajtást.

Szoftverek telepítése

A felhasználó egyszerre több csomagot is telepíthet. A csomagokra elég csak a csomagok neveivel hivatkozni, így például a libc6_1.9.6-2.deb csomag esetén elég csak a libc6 nevet megadni. Az APT először feltelepíti azokat a csomagokat, amiktől a telepíteni kívánt csomag függ, ha van ilyen. Ez tehát az APT alapú csomagkezelők fő jellemzője, amivel elkerülhető a csomagok telepíthetetlensége a hiányzó függőségek miatt.

Az APT másik fontos tulajdonsága, hogy a csomagokat automatikusan le tudja tölteni az előre meghatározott csomagtárakból (repository). Ezeket a csomagtárakat a /etc/apt/sources.list konfigurációs fájl határozza meg. Ebben a fájlban bármennyi repository megadható, az APT ezekről a helyekről fogja beszerezni a telepíteni kívánt csomagokat. A csomagtárak lehetnek távoli szerveren vagy akár egy helyi merevlemez meghajtón, pendrive-on vagy DVD lemezen, stb. Például a teljes Debian telepítőkészletek DVD lemezei is tartalmaznak csomagtárat, hogy a rendszer számára szükséges csomagok internetkapcsolat nélkül is elérhetőek legyenek.

Az APT lehetőséget biztosít arra, hogy a felhasználó felülbírálhassa a csomagkezelő automatikus szoftver ütközéseket elkerülő döntéseit. Így például meg lehet adni egy adott csomagnál, hogy annak melyik verzióját telepítse (pl. downgrade-elés). Ebben az esetben viszont nagyon körültekintően kell eljárni, mert a többi csomag – ami a kézzel kiválasztott verziójú csomagtól függ – meghibásodhat.

Update, upgrade és dist-upgrade

A telepített csomagok frissítését megkönnyítő apt és apt-get használati módjai a következők:

  • update: A parancs segítségével a csomag indexfájlok újraszinkronizálása végezhető el. Futtatásakor az APT betölti a /etc/apt/sources.list konfigurációs fájlból a megadott csomagtárak listáját, majd pl. Debian alapú rendszereknél letölti a Packages.gz fájlt az összes megadott csomagtárolóból, ezzel biztosítja a naprakész információkat az új és frissített csomagokról.
  • upgrade: Ezzel a paranccsal frissíthető a legfrissebb verzióra az összes telepített csomag. A rendszer ellenőrzi a /etc/apt/sources.list fájlban fellelhető összes csomagtárat, és amelyik meglévő, telepített csomaghoz frissítést talál, azt frissíti. Amelyik csomagokhoz nem talál frissebb változatot, azokat érintetlenül hagyja.
  • dist-upgrade: A parancs a frissítés funkció mellett rendelkezik egy intelligens konfliktusmegoldási rendszerrel is, amellyel a változó függőségeket hatékonyan tudja kezelni, aminek a lényege, hogy először a legfontosabb csomagok függőségeit frissíti a kevésbé fontos csomagok kárára, ha a helyzet úgy kívánja. A csomagokat ebben az esetben is a /etc/apt/sources.list konfigurációs fájlban található csomagtárak alapján frissíti.

Csak a kiválasztott csomagok frissítése

Ha nem szeretnénk az összes csomagot egyszerre frissíteni, hanem csak egyet vagy néhányat, akkor erre a --only-upgrade kapcsolóval van lehetőség:

apt-get install --only-upgrade <csomag1> <csomag2> <csomag..>

Itt szóközökkel elválasztva adjuk meg a frissíteni kívánt csomagokat - amennyiben több csomagot szeretnénk frissíteni.

Csomagok keresése

Az APT parancssori használatánál lehetőség nyílik a csomagok keresésére is, amely az alábbi parancs segítségével hajtható végre:

apt-cache search <csomagnév>

Ekkor a shell kiadja a beállított csomagtárakban megtalálható csomagokat, amik a keresési kifejezéssel kapcsolatosak.

Javasolt csomagok telepítése

Lehetőségünk van a javasolt csomagok telepítésére is. A javasolt csomagok olyan csomagok, amelyek nem képezik a telepítendő szoftver részét, sem a függőségeit, hanem amik hasznosak lehetnek a telepíteni kívánt programok használata során. Alapértelmezetten az apt-get parancs csak az ajánlott csomagokat telepíti a paraméterként megadott csomagokon kívül, az alábbi kapcsoló segítségével pedig arra kérhetjük, hogy telepítse ezeket a javasolt csomagokat is:

apt-get install --install-suggests <csomagnév>

A kapcsoló hatására tehát az apt-get parancs a telepítendő csomagok függőségeinek tekinti a javasolt csomagokat, és azoknak a további függőségeit is, amik így telepítésre kerülnek.

Csomagok újratelepítése

Szükség lehet a csomagok újratelepítésére, például ha elállítottunk egy konfigurációs fájlt, vagy nem megfelelően működik a program, vagy csak vissza szeretnénk kapni az eredeti beállításokat. Erre a célra a --reinstall kapcsoló szolgál:

apt-get --reinstall install <csomagnév>

Csomaginformációk lekérdezése

A telepített és telepítetlen csomagokról egyaránt kérhetünk részletes verzió információkat, valamint, hogy az aktuálisan beállított csomagtárak melyikéből került vagy kerül telepítésre. Ezt a következő paranccsal kérhetjük le:

apt-cache policy <csomagnév>

Függőségi hibák javítása

Ha egy letöltött .deb telepítőcsomag dpkg-val történő kézi telepítése során függőségi hibák miatt a telepítés megáll, akkor az alábbi apt parancs segítségével pótolhatók a csomag függőségei:

sudo apt-get -f install

Ezután a csomag már hiba nélkül telepíthető.

Visszatartott csomagok telepítése

Ha a csomagok frissítésekor az APT visszatart néhány csomagot, akkor az apt parancs --with-new-pkgs kapcsolójával telepíthetjük a visszatartott csomagokat:

sudo apt-get --with-new-pkgs upgrade
sudo apt-get install <visszatartott csomagok listája>

Bővebben: Hogyan frissíthetjük a visszatartott csomagjainkat az APT csomagkezelő segítségével

Csomagok törlése

Ha csomagokat szeretnénk törölni, az alábbi paranccsal tehetjük meg:

sudo apt-get remove <csomagok listája>

Az iménti parancs csak magát a csomagot törli. Ha azt szeretnénk, hogy a törlendő csomagok konfigurációs fájljait is törölje a parancs, akkor ezt használjuk:

sudo apt-get purge <csomagok listája>

Nem használt csomagok törlése

Lehetőség van automatikus takarításra is. A következő parancs segítségével törölhetünk minden olyan csomagot, amit nem használ a rendszer. Például korábbi függőségi csomagok, amikre már nincs szükség, stb:

sudo apt-get autoremove

Csomaggyorsítótár ürítése

Ha helyet szeretnénk felszabadítani, ürítsük a csomagtárunk helyben tárolt gyorsítótárát:

sudo apt-get clean

 

Konfiguráció és fájlok

Az APT csomagkezelő konfigurációs fájljainak könyvtára a /etc/apt. Konfigurációs programja pedig az apt-config. A részletes konfiguráció pedig az apt-config dump paranccsal kérdezhető le.

Fájlok

  • /etc/apt/sources.list: Források listája. Ebben vannak megadva a csomagtárak (repository-k), ahonnan az APT telepíti az új, vagy frissíti a már rendszerre telepített csomagokat.
  • /etc/apt/sources.list.d/: Ebben a könyvtárban további forráslista-fájlok helyezhetők el, melyeket szintén beolvas a csomagkezelő a csomagok és csomaginformációk felkutatása céljából. Így akár tematikusan is csoportosíthatóak a különböző csomagtárak.
  • /etc/apt/apt.conf: APT konfigurációs fájl.
  • /etc/apt/apt.conf.d/: További konfigurációs fájlok.
  • /etc/apt/preferences: Csomag verziók meghatározási fájlja. Ebben a fájlban lehet megadni, hogy pl. egy adott csomag esetén melyik verziót töltse le a csomagkezelő, illetve hogy egyáltalán kell-e frissíteni és hogy melyik csomagtárból történjen a frissítés, ha az adott csomag több csomagtárban is megtalálható.
  • /var/cache/apt/archives/: Ebben a könyvtárban tárolja az eddig letöltött csomagokat.
  • /var/cache/apt/archives/partial/: Átmeneti tárolóhely az éppen letöltés alatt álló csomagok számára.
  • /var/lib/apt/lists/: Itt kapnak helyet a sources.list fájlban beállított tárolók csomaglistái.
  • /var/lib/apt/lists/partial/: Átmeneti tároló a letöltés alatt álló csomaglisták számára.
  • /var/log/dpkg.log: A csomagkezelő által végzett műveletek teljes naplófájlja dátumokkal és időpontokkal rögzítve.

 

 

Forráslista

Az APT a csomagtárak koncepciójára építve keresi és találja meg a csomagokat, valamint azok függőségeit. Az APT csomagtár lényegében egy könyvtár, amiben a csomagok mellett helyet kap egy indexfájl is. A csomagtár lehet a hálózat bármely részén vagy akár egy helyi meghajtón is. A Debian projekt hivatalos csomagtárában több, mint 25000 csomag áll rendelkezésre.

Az APT sources.list fájlában tetszőleges számú tároló adható meg, amit a csomagkezelő felhasznál a csomagfrissítésekkor végrehajtott lekérdezések során. A különböző grafikus front-end-ek lehetővé teszik a forráslista fájl kényelmesebb szerkesztését. Miután egy csomagtár beállításra került a forráslistában (például a rendszer telepítésekor), a tárolóban lévő csomagok telepíthetők a forrás megadása nélkül, valamint automatikusan frissülnek.

Példák

Példaként egy frissen feltelepített Debian 8 (Jessie) forráslista fájlja így néz ki:

# deb cdrom:[Debian GNU/Linux 8.10.0 _Jessie_ - Official amd64 NETINST Binary-1 20171209-21:51]/ jessie main

#deb cdrom:[Debian GNU/Linux 8.10.0 _Jessie_ - Official amd64 NETINST Binary-1 20171209-21:51]/ jessie main

deb http://ftp.hu.debian.org/debian/ jessie main
deb-src http://ftp.hu.debian.org/debian/ jessie main

deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main

# jessie-updates, previously known as 'volatile'
deb http://ftp.hu.debian.org/debian/ jessie-updates main
deb-src http://ftp.hu.debian.org/debian/ jessie-updates main

A Debian 9 (Stretch) forráslistája pedig:

# deb cdrom:[Debian GNU/Linux 9.6.0 _Stretch_ - Official amd64 NETINST 20181110-11:34]/ stretch main

#deb cdrom:[Debian GNU/Linux 9.6.0 _Stretch_ - Official amd64 NETINST 20181110-11:34]/ stretch main

deb http://ftp.hu.debian.org/debian/ stretch main
deb-src http://ftp.hu.debian.org/debian/ stretch main

deb http://security.debian.org/debian-security stretch/updates main
deb-src http://security.debian.org/debian-security stretch/updates main

# stretch-updates, previously known as 'volatile'
deb http://ftp.hu.debian.org/debian/ stretch-updates main
deb-src http://ftp.hu.debian.org/debian/ stretch-updates main

A Debian 10 (Buster) forráslistája pedig:

# 

# deb cdrom:[Debian GNU/Linux 10.1.0 _Buster_ - Official amd64 NETINST 20190908-01:07]/ buster main

#deb cdrom:[Debian GNU/Linux 10.1.0 _Buster_ - Official amd64 NETINST 20190908-01:07]/ buster main

deb http://deb.debian.org/debian/ buster main
deb-src http://deb.debian.org/debian/ buster main

deb http://security.debian.org/debian-security buster/updates main
deb-src http://security.debian.org/debian-security buster/updates main

# buster-updates, previously known as 'volatile'
deb http://deb.debian.org/debian/ buster-updates main
deb-src http://deb.debian.org/debian/ buster-updates main

# This system was installed using small removable media
# (e.g. netinst, live or single CD). The matching "deb cdrom"
# entries were disabled at the end of the installation process.
# For information about how to configure apt package sources,
# see the sources.list(5) manual.

Felépítése

Egy bejegyzés-sor a következőkből áll:

  • Archívum típus:
    • deb: A tároló a disztribúció számára előre lefordított bináris csomagfájlokat (.deb) tartalmaz.
    • deb-src: A tároló a csomagok forráskódjának fájljait és a kontroll fájlt (.dsc) tartalmazza. Így lehetőség van a csomagokat a forráskódjukból újra lefordítani.
  • Csomagtár (repository) URL: Ez tartalmazza a csomagtár fizikai URL alapú elérhetőségét.
  • Disztribúció: Ez lehetnek a disztribúció kiadásának kódneve (pl. jessie, stretch, buster, sid) vagy a csomagok kiadásának osztálya (pl. oldstable, stable, testing, unstable), attól függően, hogy milyen jellegű csomagfrissítésekre van szükség (régebbi stabil változatoktól a legfrissebb teszt változatokig).
  • Komponens: Ez az alábbiak közül tartalmazhat egy vagy több értéket:
    • main: A tárolóban kizárólag a DFSG szabványnak megfelelő csomagok vannak, valamint ezeknek a csomagonak a függőségei is csak innen származhatnak. Ezek azok a csomagok, amik hivatalosan a Debian rendszer részeinek minősülnek. Ezért alapértelmezetten ez a beállítás az érvényes a forráslista fájlban.
    • contrib: A tárolóban szintén a DFSG szabványnak megfelelő csomagok vannak, azonban a csomagoknak a függőségei között lehetnek ezen kívülről származó csomagok (pl. non-free) is.
    • non-free: A tárolóban olyan csomagok vannak, amik nem a DFSG szabvány szerint kerülnek licencelésre.

APT transport https

A csomagtárakat alapértelmezetten az APT csak a titkosítatlan http kapcsolaton keresztül tudja kezelni. Azonban az apt-transport-https csomag telepítése után már a https kapcsolaton keresztül elérhető csomagtárakból is tud csomagokat telepíteni/frissíteni:

sudo apt-get install apt-transport-https

Debian Backports

A backports a testing (többnyire) és unstable (csak néhány esetben, pl. biztonsági frissítések) osztályaiból származó csomagok gyűjteménye, amiket egy stabil környezetben újrafordítottak és nincs szükségük újabb programkönyvtárakra (amikor csak lehetséges), így egy stabil Debian disztribúción futtathatóak.

A backports csomagok nincsenek olyan széleskörűen tesztelve, mint a Debian stable tároló csomagjai, ezért fennáll a kockázata annak, hogy nem kompatibilis minden más Debian komponenssel. Ezért használatuk csak körültekintéssel javasolt.

A backport csomagok közül javasolt csak a feltétlen szükséges egyéni backport csomagot használni a teljes készlet helyett, és mellette használni a stabil változatokat ahol csak lehetséges.

A backports használatának nagy előnye, hogy a csomagok sokkal hamarabb kerülnek ide, mint a stabil tárolóba.

Példák a tárolók beállításához a különböző Debian verziókban lévő sources.list fájlban:

Debian 8 (Jessie) backports tároló beállítására:

deb http://archive.debian.org/debian jessie-backports main

Debian 9 (Stretch) backports tároló beállítása:

deb http://ftp.debian.org/debian stretch-backports main

Debian 10 (Buster) backports tároló beállítása:

deb http://deb.debian.org/debian buster-backports main

A sources.list fájl módosítása után mindig szükséges a csomaglisták frissítése:

sudo apt-get update

 

Ezután már az egyéni backports csomag az alábbi módon telepíthető a különböző Debian verziókban:

Debian 8 (Jessie):

sudo apt-get install <backports csomagnév> -t jessie-backports

Debian 9 (Stretch):

sudo apt-get install <backports csomagnév> -t stretch-backports

Debian 10 (Buster):

apt-get paranccsal:

sudo apt-get install <csomagnév>/buster-backports

vagy az aptitude paranccsal:

sudo aptitude install <package>/buster-backports

 

Debian tükrök

A debian tükrök segítségével lehetőség nyílik a legközelebb eső szerverről beszerezni a Debian csomagokat. Így eloszlik a terhelés, ezáltal nagyobb letöltési sebesség érhető el.

A Debian tükrök listája ezen a linken tekinthető meg.

 

 

Frontendek

Sokféle frontend létezik, melyekkel az APT csomagkezelő kényelmesebben használható. Ezek között vannak grafikus frontendek és szöveges módúak is.

A frontendek az alábbi funkciókkal rendelkezhetnek:

  • új csomagok keresése
  • csomagok szűrése többféle kritérium szerint
  • csomagok részleteinek megjelenítése
  • új csomagok telepítése (a függőségeikkel együtt)
  • meglévő csomagok frissítése
  • meglévő csomagok törlése
  • teljes rendszer frissítése

Grafikus frontendek

A grafikus felülettel rendelkező frontendeket jellemzi a kényelmes használat, áttekinthető megjelenés, gazdagabb szűrési, keresési lehetőségek.

Synaptic csomagkezelő főablak

Grafikus frontend példa: Synaptic csomagkezelő

Néhány példa:

  • Synaptic, az egyik legelterjedtebb GTK+ alapú grafikus felület
  • Ubuntu Software Center, egy GTK+ alapú grafikus felület, az Ubuntu projekt által fejlesztve
  • KPackage, a KDE része
  • Adept Package Manager: Egy grafikus felület KDE-hez
  • GDebi: GTK+ alapú grafikus felület, főként Ubuntuhoz
  • Cydia: APT alapú csomagkezelő jailbreakelt iOS rendszerekhez
  • gnome-apt, egy GTK+/GNOME widget alapú grafikus felület
  • Muon Software Center, egy Qt alapú grafikus felület

Szöveges módú frontendek

A szöveges frontendek karakteres megjelenítésű kezelőfelületek, melyeknek nagy előnye, hogy konzolon, terminálban futtathatók, ezáltal a távoli szerver menedzsment hatékony kelléke is lehet.

Aptitude szöveges csomagkezelő frontend

Szöveges módú frontend példa: Aptitude

Néhány példa:

  • Aptitude, a konzolos csomagkezelő felület 
  • Dselect: Az egyik legelső konzolos dpkg-ra épülő felület
  • orphaner: Ez csak a törött csomagok eltakarítására szolgáló felület