136 lines
7.1 KiB
Markdown
136 lines
7.1 KiB
Markdown
# 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 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.gpg** fájllal írja alá az információt, az utóbbi pedig tartalmazza az aláírást is.
|
|
|
|
A **Packages** csomagindex fájlok a komponens könyvtárak **binary-$arch** alkönyvtárában találhatók, az $arch a csomagok architektúráját jelöli, pl. i386, amd64, armhf, aarm64. 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. A kiadási információk kitöltéséhez létre kell hozni egy konfigurációs állományt, amelyből az apt-ftparchive beolvashatja az adatokat.
|
|
```
|
|
echo "APT::FTPArchive::Release::Origin "Brickorama Rpi4 Repository";
|
|
APT::FTPArchive::Release::Label "Brickorama Rpi4 Repository";
|
|
APT::FTPArchive::Release::Suite "rpi4";
|
|
APT::FTPArchive::Release::Codename "rpi4";
|
|
APT::FTPArchive::Release::Version "1.0";
|
|
APT::FTPArchive::Release::Architecture "armhf";
|
|
APT::FTPArchive::Release::Components "main";" > rpi4.conf
|
|
```
|
|
|
|
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 -c rpi4.conf dists/rpi4 > dists/rpi4/Release
|
|
gpg --batch --yes --default-key brickorama.hu -abs -o dists/rpi4/Relase.gpg dists/rpi4/Release
|
|
gpg --batch --yes --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 -~~
|
|
```
|
|
wget -q -O - https://www.brickorama.hu/pgp-key.public | gpg --dearmor -o /etc/apt/trusted.gpg.d/brickorama.gpg
|
|
```
|
|
|
|
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
|
|
```
|