A.6. A Portsnap használata

A.6.1. Bevezetés

A Portsnap a FreeBSD portfájának biztonságos terjesztésére megalkotott rendszer. Hozzávetőleg óránként egyszer a portfa egy újabb “pillanatképe” jön létre, amit ezután tömörítenek és digitálisan aláírnak. Az így keletkező állományokat végül HTTP-n keresztül terjesztik.

A CVSuphoz hasonlóan a Portsnap szintén lehúzással frissít. Ennek folyamán a becsomagolt és aláírt portfák egy webszerveren tároltan várják passzívan a kliensek kéréseit. A felhasználók így vagy a portsnap(8) elindításával azonnal, vagy pedig a cron(8) segítségével rendszeresen automatikusan kérhetnek frissítéseket.

Technikai megfontolásokból a Portsnap nem közvetlenül a /usr/ports/ könyvtárban található “éles” portfát változtatja meg. Helyette alapértelmezés szerint a /var/db/portsnap/ könyvtárba kerülő tömörített változatával dolgozik. A frissítés befejeztével ezzel a tömörített változattal módosítja az éles portfát.

Megjegyzés: Ha a Portsnapet a FreeBSD Portgyűjteményéből telepítjük, akkor alapértelmezés szerint a tömörített pillanatképet a /var/db/portsnap/ könyvtár helyett a /usr/local/portsnap/ könyvtárban hozza létre.

A.6.2. Telepítés

A FreeBSD 6.0 vagy későbbi változataiban már a Portsnap az alaprendszer része. A FreeBSD korábbi verzióra a ports-mgmt/portsnap porton keresztül telepíthetjük.

A.6.3. A Portsnap beállítása

A Portsnap működését az /etc/portsnap.conf konfigurációs állomány vezérli. A felhasználók többségének a benne helyet kapott alapbeállítások megfelelőek. Aki kíváncsi a részletekre, nézze meg a portsnap.conf(5) man oldalt.

Megjegyzés: Amennyiben a Portsnapet a FreeBSD Portgyűjteményéből telepítettük, a /etc/portsnap.conf helyett a /usr/local/etc/portsnap.conf konfigurációs állományt fogja használni. Ez az állomány a port telepítésekor ugyan nem jön létre automatikusan, de találhatunk belőle egy mintát, amit a következő paranccsal tudunk a helyére másolni:

# cd /usr/local/etc && cp portsnap.conf.sample portsnap.conf

A.6.4. A Portsnap első futtatása

A portsnap(8) első futtatásakor le kell töltenünk a /var/db/portsnap/ (vagy /usr/local/portsnap/, ha a Portsnapet a Portgyűjteményből telepítettük) könyvtárba az egész portfa tömörített képét. Ez 2006 elejétől nagyjából 41 MB méretűre dagadt.

# portsnap fetch

Miután sikerült letöltenünk a tömörített képet, az “éles” portfa egy példányát tudjuk kibontani a /usr/ports/ könyvtárba. Ez a lépés még abban az esetben is kötelező, ha már valamilyen módon feltöltöttük volna ezt a könyvtárat (például a CVSup segítségével), hiszen ekkor hozza létre a portsnap a működéséhez szükséges adatokat is, amelyek révén el tudja majd dönteni, hogy a portfa pontosan mely részeit kell frissítenie.

# portsnap extract

Megjegyzés: A telepítés során alapból nem jön létre a /usr/ports/ könyvtár. Ha a FreeBSD 6.0-RELEASE kiadását használjuk, akkor a portsnap indítása előtt ezt a könyvtárat el kell készítenünk. A FreeBSD vagy a Portsnap újabb változataiban a portsnap első használata során ez már azonban önmagától megtörténik.

A.6.5. A portfa frissítése

Miután letöltöttük a portfa kiinduló pillanatképét és kibontottuk a /usr/ports/ könyvtárba, a frissítése két lépésben végezhető el: először elkérjük (fetch) a tömörített kép frissítéseit, majd ezután az így nyert módosításokat érvényesítjük az éles portfán (update). Ez a két lépés egyetlen portsnap parancs kiadásával összefoglalható:

# portsnap fetch update

Megjegyzés: A portsnap némely régebbi változatai nem támogatják ezt a típusú felírást. Ha tehát nem működne az iménti parancs, akkor helyette próbáljuk meg ezt:

# portsnap fetch
# portsnap update

A.6.6. A Portsnap automatikus futtatása

A Portsnap szervereken keletkező “hirtelen tömeg” elkerülése érdekében a portsnap fetch nem fog cron(8) feladatként futni. Ehelyett erre létezik egy külön portsnap cron parancs, amivel a frissítések letöltése előtt véletlenszerűen vár legfeljebb 3600 másodpercet.

Emellett a portsnap update parancs futtatását sem javasoljuk cron feladatként, mivel komoly problémákat képes okozni akkor, amikor egy port fordítása vagy telepítése során adjuk ki. Azonban az -I kapcsoló megadásával a portok INDEX állományát biztonságosan tudjuk frissíteni. (Ebből nyilvánvalóan következik, hogy a portsnap -I update lefutása után a portsnap update parancsot is ki kell majd adni az -I kapcsoló nélkül a fa többi részének frissítéséhez.)

Ha felvesszük a következő sort az /etc/crontab állományba, akkor a portsnap frissíteni fogja a tömörített felvételt és a /usr/ports/ könyvtárban levő INDEX állományokat, és küld egy levelet az elavult feltelepített portokról:

0 3 * * * root portsnap -I cron update && pkg_version -vIL=

Megjegyzés: Ha a rendszeróra nem helyi idő szerint jár, akkor a 3 értéket cseréljük ki egy 0 és 23 között tetszőleges számra, így hozzájárulunk a a Portsnap szerverek terhelésének egyenletes elosztásához.

Megjegyzés: A portsnap egyes korábbi változatai nem engednek meg egyszerre több parancsot (mint például a cron update). Ha az iménti felírásban hibát kapunk, akkor próbáljuk meg a portsnap -I cron update parancsot kicserélni a portsnap cron && portsnap -I update parancsra.

Ha kérdése van a FreeBSD-vel kapcsolatban, a következő címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.