Linuxra készült programok kézenfekvő terjesztési módja a beépített csomagkezelő használata.
Linuxra készült programok kézenfekvő terjesztési módja a beépített csomagkezelő használata.
Az alábbiakban az APT csomagkezelőhöz szükséges tároló létrehozása kerül ismertetésre apache2 szerveren, amely felhasználónév jelszó párossal (ez elhagyható) érhető el https protokollon. Az alábbi leírás a www.brickorama.hu szerveren készült, így minden hivatkozásban az található. A felhasználónév és jelszó kezelését az apache2 végzi, itt nem kerül kifejtésre, a leírásban ezekhez a [felhasználónév] és [jelszó] jelzések használatosak. Minden parancs a domainhez tartozó felhasználó (brickorama.hu) nevében került kiadásra, ami másra nincs használva, így elkerülhető pl. a pgp kulcs felülírása.
Az alábbiakban az APT csomagkezelőhöz szükséges tároló létrehozása kerül ismertetésre apache2 szerveren, amely felhasználónév jelszó párossal (ez elhagyható) érhető el https protokollon. Az alábbi leírás a www.brickorama.hu szerveren készült, így minden hivatkozásban az található. A felhasználónév és jelszó kezelését az apache2 végzi, itt nem kerül kifejtésre, a leírásban ezekhez a $felhasználónév és $jelszó jelzések használatosak. Minden parancs a domainhez tartozó felhasználó (brickorama.hu) nevében került kiadásra, ami másra nincs használva, így elkerülhető pl. a pgp kulcs felülírása.
## A tároló aláírásához szükséges PGP kulcs létrehozása
## A tároló aláírásához szükséges PGP kulcs létrehozása
@ -32,27 +32,55 @@ gpg --list-keys
Ez a kulcs tartalmazza a privát és publikus kulcsot is, az apt tároló használatához a publikus kulcs szükséges (lásd később), így ki kell exportálni, célszerűen a **www** gyökerébe.
Ez a kulcs tartalmazza a privát és publikus kulcsot is, az apt tároló használatához a publikus kulcs szükséges (lásd később), így ki kell exportálni, célszerűen a **www** gyökerébe.
Az apt **sources.list** fájlában az alábbi formátumban kell megadni egy tárolót.
Az apt **sources.list** fájlában az alábbi formátumban kell megadni egy tárolót.
```
```
deb url disztribúció [komponens1] [komponens2] [...]
deb url disztribúció [komponens1] [komponens2] [...]
```
```
Egyszerű tárolóhoz lehet használni a gyökérkönyvtárat disztribúció gyanánt (**/**), de érdemes eleve létrehozni legalább egy disztribúciót egy komponenssel, a későbbi könnyű bővíthetség céljából.
Ehhez a webkiszolgálón szükség van egy alkönyvtárra, ez lesz a tároló **url**-e, ha szükséges az autentikáció, ehhez a könyvtárhoz kell beállítani.
### A formátum felépítése
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.
Tároló (repository) URL: Ez tartalmazza a tároló fizikai URL alapú elérhetőségét.
Disztribúció: Ezek tulajdonképpen a a tároló gyökerében lévő **dists** könyvtár alkönyvtárai, lehet 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 a disztribúció alkönyvtára, 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.
A csomagok telepítéséhez a csomagkezelő letölti a disztribúció könyvtárában lévő **Release** vagy **InRelease** fájlt. Mindkettő a **.deb** fájlok útvonalát tartalmazó **Package** fájlok helyét adja meg, az előbbi egy kísérő **Release.pgp** fájllal írja alá az információt, az utóbbi pedig tartalmazza az aláírást is.
A **Package** csomagindex fájlok komponens könyvtárak **binary-$arch** alkönyvtárában találhatók. A forrásindex fájlok a **source** alkönyvtárban találhatók.
A Release, InRelease és Package fájlok minden útvonalat relatívként tartalmaznak a tároló gyökeréhez képest.
A .deb fájlok elhelyezhetők a komponens könyvtárak binary-$arch alkönyvtáraiban, de szétválaszthatók a tároló gyökerében lévő **pool** könyvtárba is. Ekkor azon belül a $disztribúció/$komponens/ könyvtárba kell teni a .deb fájlokat.
Egyszerű tárolóhoz (flat repository) lehet használni a gyökérkönyvtárat disztribúció gyanánt (**/**), ekkor a metadatok index fájljai a tároló gyökerében, a *deb fájlok pedig annak egy alkönyvtárában vannak.
### A tároló létrehozása
Ehhez a webkiszolgálón szükség van egy alkönyvtárra, ez lesz a tároló **url**-e, egyben a tároló gyökere, ha szükséges az autentikáció, ehhez a könyvtárhoz kell beállítani.
```
```
mkdir ~/www/apt-repo
mkdir ~/www/apt-repo
```
```
A disztribúció
A disztribúció tulajdonképpen a tároló gyökerében lévő **dists** könyvtár alkönyvtárai, amelyekben a további alkönyvtárak a komponensek. A csomagokat érdems