6.3 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 (Advanced Packaging Tool) 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, ez egyben a tároló gyökere, ha szükséges az autentikáció, ehhez a könyvtárhoz kell beállítani..
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 Packages 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. Ezeknek általában a tömörített változata használatos (Packages.gz).
A Release, InRelease és Packages 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 a fájlok ismétlődésének elkerülése érdekében ajánlatos azokat a tároló gyökerében lévő pool könyvtárba feltölteni, így ugyanarra a .deb fájlra több indexből is lehet hivatkozni.
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
Első lépésként a webkiszolgálón szükség van egy alkönyvtárra, ez lesz a tároló gyökere.
mkdir ~/www/apt-repo
A következő parancsok kiadása, mind innen fog történni, bele kell lépni.
cd ~/www/apt-repo
Alkönyvtárak létrehozása.
mkdir -p dists/rpi4/main/binary-armhf
mkdir -p pool/rpi4/main
Az .deb csomagokat a pool/rpi4/main könyvtárba kell másolni, ezután létrehozhatók az index fájlok.
apt-ftparchive --arch armhf packages pool/rpi4/main/ > dists/rpi4/main/binary-armhf/Packages
gzip -k -f dists/rpi4/main/binary-armhf/Packages
apt-ftparchive release dists/rpi4 > dists/rpi4/Release
gpg --default-key brickorama.hu -abs -o dists/rpi4/Relase.gpg dists/rpi4/Release
gpg --default-key brickorama.hu --clearsign -o dists/rpi4/InRelease dists/rpi4/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