5.9 KiB
APT tároló készítése
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.
A tároló aláírásához szükséges PGP kulcs létrehozása
A kulcspár generálását a gpg --batch kapcsolójával érdemes megtenni, így a program nem interaktív és könnyebben megismételhető a folyamat. Ehhez kell egy sablonfájl, az alábbi paranccsal egy soha le nem járó kulcshoz szükséges sablon készíthető.
echo "%echo Generating PGP key
Key-Type: RSA
Key-Length: 4096
Name-Real: brickorama.hu
Name-Email: admin@brickorama.hu
Expire-Date: 0
%no-ask-passphrase
%no-protection
%commit
" > /tmp/brickorama.hu-pgp-key.batch
Kulcspár generálása.
gpg --no-tty --batch --gen-key /tmp/brickorama.hu-pgp-key.batch
A generált kulcs ellenőrzése.
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.
gpg --armor --export brickorama.hu > ~/www/pgp-key.public
A tároló
Az apt sources.list fájlában az alábbi formátumban kell megadni egy tárolót.
deb url disztribúció [komponens1] [komponens2] [...]
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
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
apt-ftparchive --arch armhf packages pool/rpi4/main/ > dists/rpi4/main/binary-armhf/Packages
gzip -k -f Packages
apt-ftparchive release . > Release gpg --default-key brickorama.hu -abs -o Relase.gpg Release gpg --default-key brickorama.hu --clearsign -o InRelease Release
A tároló használata
A korábban létrehozott publikus aláíró kulcsot hozzá kell adni az apt kulcstárához, ez egy egyszerű paranccsal megoldható.
wget -q -O - https://www.brickorama.hu/pgp-key.public | apt-key add -
Ez után a források közé fel kell venni a tárolót.
echo "deb https://www.brickorama.hu/apt-repo rpi4 main" > /etc/apt/sources.list.d/brickorama.hu.list
Amennyiben a tárhely jelszó védett, fel kell venni egy autentikációs fájlt az apt számára.
echo "machine https://www.brickorama.hu/apt-repo
login $felhasználónév
password $jelszó" > /etc/apt/auth.conf.d/brickorama.hu.conf
A apt tároló használatra kész!
apt-get update