2012. március 26., hétfő

Helyi Ubuntu-tükör létrehozása apt-mirror használatával

Az előző alkalommal ott hagytam abba, hogy telepedett a PXE-szerverről az Ubuntu 12.04. Ma nekilátunk azt megoldani, hogy a telepítéskor az alaprendszer a többi csomagot ne az internetről szedje le. Ennek érdekében helyi Ubuntu tükröt alakítunk ki. Uff, én beszéltem.

Kezdjük a szükséges eszköz, az apt-mirror telepítésével.
sudo apt-get install apt-mirror
Ebbe mondjuk nem rokkan bele az ember fia.

Aztán el kell döntenünk,
hogy mit tükrözzünk. Kezdjük azzal, hogy például a forráskód-csomagok nem kellenek. Át kell gondolni, hogy melyik architektúra (i386? amd64?) kell. Na lássuk: nyissuk meg szerkesztésre az /etc/apt/mirror.list fájlt.
  • A fájl elején van egy pár sor, kikommentelve. Az itt megadott opciók az alapértelmezettek, vagyis, ha nem akarunk változtatni rajtuk (és nem sok értelme van), akkor nem kell hozzájuk nyúlni - maradhatnak kommentben.
  • Ha nem kellenek a források, szüntessük meg (vagy tegyük kommentbe) a deb-src sorokat.
  • Alapbeállítás szerint annak az architektúrának a tükre készül el, amelyiken az apt-mirror fut. Át lehet állítani a defaultarch változót, de nekem tisztább, ha kiírom: ha i386-tükröt akarok, akkor deb-i386 kell szerepeljen az alaphelyzetben deb kezdetű sorok elején. Ha amd64-tükröt akarunk, akkor deb-amd64. Ha mindkettőre szükségünk van, akkor minden sornak kétszer kell szerepelnie: egyszer így, egyszer úgy.
  • Ha több verzió is kell, akkor minden verziónak új sorok kellenek. Figyeljünk a verzió kódnevének pontos megadására.
  • Itt olvashatunk egy opcióról (set limit_rate 50k), amely szálanként megadja a sávszélesség-korlátot. Én nem használom: a tükör frissítése úgyis olyankor megy, amikor zárva a suli:)
A következő feladat azt megoldani, hogy legyen elég hely a /var/spool/apt könyvtárban. Én ma az Ubuntu 12.04 i386 architektúráját kezdtem mirrorozni. Források nélkül. Azt ígérte, hogy majd' 44 gigabyte lesz a cucc. Érdemes meggondolni, hogy valami öreg szutyok HDD-t állít be erre az ember. Nem gond, ha bekrepál: legfeljebb újra le kell tölteni az egész hóbelevancot.

A konfigurációs fájlban volt olyan sor, ami a tükrözés megtörténte után futtatandó scriptről, a postmirror.sh-ról szól. Ez a fájl egyelőre nem létezik, gyorsan elkészítjük:
sudo touch /var/spool/apt-mirror/var/postmirror.sh
sudo chown apt-mirror /var/spool/apt-mirror/var/postmirror.sh
sudo chmod u+x /var/spool/apt-mirror/var/postmirror.sh
De mit tegyünk bele? Nemsokára visszatérünk rá.

Indítsuk el az első tükrözést. Hogy is kell? Nézzük meg, hogy miként teszi a dolgát az időzített feladat: kukkantsunk bele az /etc/cron.d/apt-mirror fájlba. Látjuk, hogy az apt-mirror felhasználó nevében dolgozik, és a kimenetet egy logfájlba irányítja. Ha már úgyis itt vagyunk, kapcsoljuk be a napi frissítést: vegyük ki a kettőskeresztet a sor elejéről. És akkor adjuk ki azt a parancsot, amely létrehozza az első tükröt:
sudo su - apt-mirror -c "/usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log"
A fenti paranccsal átváltunk apt-mirror felhasználóra, és az ő nevében futtatjuk az /usr/bin/apt-mirror scriptet, aminek a kimenetét átirányítjuk a /var/spool/apt-mirror/var/cron.log fájlba. (Persze az átirányítás elhagyható, de én szeretem a valósághű szimulációkat, és derüljön ki már most, ha a cron-ból futtatva nem fog sikerülni létrehozni a logfájlt.

A poszt írását folytatom, ha lejött az adag:)

[sok-sok óra telik el]

Na, lejött. Ha az Olvasó is egy béta release-szel kísérletezik, akkor máris lesz változás, futtathatja még egyszer. Ha már nem béta, akkor is szinte biztos talál új fájlokat az apt-mirror: valahogy azt figyeltem meg az elmúlt évek alatt, hogy sokszor két-háromszor kell egymás után futtatnom az apt-mirror-t, ha azt akarom, hogy ne maradjon frissítenivalója. Nem értem egészen, de van még pár ilyen dolog az életemben:)

Mindenesetre a többedik futtatás után ugye lesznek olyan fájlok, amelyeknek az újabb verziói is lejöttek már, azaz a régi kukázható. Ilyenkor az apt-mirror szól, hogy:
129.1 MiB in 228 files and 1 directories can be freed.
Run /var/spool/apt-mirror/var/clean.sh for this purpose.

Namármost, a clean.sh egy bash-script, amit az apt-mirror hoz létre, és beleírja, hogy mi törölhető. Mi ennek a scriptnek az elindítását fogjuk a postmirror.sh-val elvégeztetni, azaz alakítsuk ilyenné a szóban forgó fájlt:
#!/bin/sh
cd /var/spool/apt-mirror/mirror/
/var/spool/apt-mirror/var/clean.sh >>/var/spool/apt-mirror/var/cron.log
Az ugye világos, hogy ha esetleg nem volt mit törölni, és emiatt nem frissülne a clean.sh, az sem baj: legfeljebb letöröljük még egyszer azt, amit az előző alkalommal letöröltünk.

Ezzel a helyi tükör kialakítása kész.
Holnap használatba is vesszük.

Nincsenek megjegyzések: