Debian csomagtárolókészítés
From MalinaWiki
Ezt a leírást a http://www.debian.org/doc/manuals/repository-howto/repository-howto.en.html címen található dokumentum lámaszíntű fordítása alapján készítettem.
A Debian csomagtároló - Debian Packages Repository - feladata az, hogy a .deb csomagként telepíthető programok központi, bárki által elérhető gyűjtőhelyeként szolgáljon. A tárolók elérése többféle módon lehetséges, legelterjedtebb formája a hálózati elérés, amikor is az apt parancsokkal kombinálva az /etc/apt/sources.list fájlban található hálózati címek alatt fellelhető programok közül telepíthetsz. Ha ilyen tárolót szeretnél készíteni és fenntartani, jobb ha tovább olvasol!
Tartalomjegyzék |
[szerkesztés] Debian tárolók tartalma
Egy debian tároló mindig tartalmazza a benne elhelyezett DEB csomagokat és két darab speciális fájlt: Packages.gz a bináris csomagoknak, és Sources.gz a forrás csomagoknak.
Ha a tárolód listázva van a sources.list fájlban (/etc/apt/sources.list), az apt-get update parancs lekéri a címként megjelölt tároló indexét, amit a Packages és a Sources fájl tartalmaz. A címek előtt alkalmazott kulcsszó minősíti az adott tároló fajtáját: a bináris csomagokat deb kulcsszóval, a forrás csomagokat deb-src kulcsszóval jelölheted. Az apt-get update parancs meghívásával letöltöd az adott indexfájlokat, majd az apt-cache vagy az apt-get install parancs keresgél az adott csomag adatai után a betárolt indexfájlokban.
A Packages.gz tartalmazza a csomag nevét, verzióját, méretét, a rövid és a hosszú leírást, és a csomag dependenciáját, plusz több opcionális információt. minden információt visszakapsz, ha Debian csomagkezelővel kéred: dselect vagy aptitude.
A Sources.gz tartalmazza a csomag nevét, verzióját, méretét és a fordítás dependenciáját (szükséges csomagokat). Ezeket az információkat megkaphatod az apt-get source parancsal.
Van egy opcionális Release fájl, amely információkat tartalmaz magáról a tárolóról.
Kétféle típusú tároló létezik: egyszerű és a komplexebb automata tároló. A komplexebb tárolóba csak speciális úton juthat el a felhasználó: a disztribúció, a komponens és egy exact útvonal megadásával.
Az egyszerűbb tároló csak egy sima könyvtár.
[szerkesztés] Komlex tároló felépítése
Nézd meg egy komplexebb tároló könyvtárszerkezetét:
A tároló gyökere:
| +-dists | |-stable | |-main | | |-binary-alpha | | |-binary-arm | | |-binary-... | | +-source | |-contrib | | |-binary-alpha | | |-binary-arm | | |-binary-... | | +-source | +-non-free | |-binary-alpha | |-binary-arm | |-binary-... | +-source | |-testing | |-main | | |-binary-alpha | | |-binary-arm | | |-binary-... | | +-source | |-contrib | | |-binary-alpha | | |-binary-arm | | |-binary-... | | +-source | +-non-free | |-binary-alpha | |-binary-arm | |-binary-... | +-source | +-unstable |-main | |-binary-alpha | |-binary-arm | |-binary-... | +-source |-contrib | |-binary-alpha | |-binary-arm | |-binary-... | +-source +-non-free |-binary-alpha |-binary-arm |-binary-... +-source
Jól látható, hogy a gyökér könyvtár tartalmaz egy dists könyvtárt, amelyben megtalálhatóak a dIsztribúciók könyvtárai: stable, testing és unstable. A disztribúciók tartalmazzák a komponensek könyvtárait, amely lehet main, contrib és non-free. A szabad felhasználású csomagok mennek a main könyvtárba, a nem-szabad felhasználásúak mennek a non-free könyvtárba. Az a szabad felhasználású csomag, amely függ egy nem-szabad csomagtól, a contrib könyvtár tagja. A komponensek könyvtárai tartalmazzák a sources könyvtárt, illetve a számítógépek felépítését jelképező könyvtárakat. Ezeken belül találhatóak meg a csomagok, ha nincs megadva pluszként egy útvonal. Ha még van a komponens utábn útvonal megadva, akkor azt az útvonalat hozzá kell tenni az architektúrát jelentő könyvtárak után.
Mindegyik binary.* könyvtár tartalmaz egy Packages.gz fájlt, és egy opcionális Release fájlt. Mindegyik forrás könyvtár tartalmaz egy Sources.gz és egy opcionális Release fájlt. Az a csomag nem elérhető, amely nem szerepel az index fájlban, mert ez az index fájl tartalmazza az adott csomag elérési útját.
[szerkesztés] Egyszerű tároló felépítése
Az egyszerű tároló megegyezik a root tárolóval.
A tároló gyökere:
| |-binary +-source
[szerkesztés] Index fájl készítése
A dpkg-scanpackages generál egy Packages fájlt, míg a dpkg-scansources Sources fájlt. Mindkettő a kimenetre küldi az adatokat. Kapd el, és csomagold be:
dpkg-scanpackages arguments | gzip -9c > Packages.gz.
Mindkét eszköz esetében ugyanaz az eljárás. Két argumentet kell megadnod: az első az a könyvtár, ahol vannak a csomagok, és a második a fájl, amibe írhatja az adatokat. mivel nem akarod felülírni, de kell az argument, ad meg a /dev/null értéket.
A dpkg-scanpackages .deb csomagokat keres; dpkg-scansources pedig .dsc fájlokat keres. Az amit szükséges tenni: .orig.gz, .diff.gz és .dsc egymás után. A .changes fájl nem szükséges.
A komplexebb tárolóban a két index fájlt az alábbi módon tudod létrehozni:
$ cd my-repository $ dpkg-scanpackages binary /dev/null | gzip -9c > binary/Packages.gz $ dpkg-scansources source /dev/null | gzip -9c > source/Sources.gz
[szerkesztés] Release fájl készítése
Ha engedélyezni akarod a felhasználóknak a tárolódban, hogy használják a Pinning-et, be kell helyezned egy Release fájlt az összes könyvtárba, amely tartalmaz Index fájlt.
A Release fájl egy egyszerű és rövid szöveges fájl a következő tartalommal:
Archive: archive Component: component Origin: YourCompany Label: YourCompany Debian repository Architecture: architecture
Archive
A Debian csomag disztribúciójának neve a könyvtárban: stable, testing, unstable.
Component
A csomag része: main, non-free, or contrib.
Origin
A csomag készítőjének neve.
Label
Akármi lehet itt, bármit írhatsz.
Architecture
A csomag gépi architektúrája a könyvtárban: i386, sparc vagy forrás.
Elég, ha csak az Archive és Architecture paramétereket használod.
[szerkesztés] Pool készítése
Automatikus tárolóval, disztrib csomagokkal különböző könyvtárakban gyorsan fejetlenségbe torkolhastz, a csomagok könyvtárak közötti mozgatása közben. Erre nyújt kitűnő megoldást a Pool létrehozása. A Pool egy további könyvtár a tároló root könyvtárában. A Pool csak egy hatalmas tároló. olyan csomagok kerülnek ide, amelyek egyszer elkészülnek, de aztán tojsz rá.
[szerkesztés] Eszközök
Változatos eszközök állnak rendelkezésedre, hogy könnyen és automatizált módon hozz létre Debian achivumokat.
apt-ftparchive mozgathatod Debian csomagkollekció fájljait . Része az apt-utils csomagnak. apt-move ugyanaz
[szerkesztés] Az elkészült tároló használata
Mindegyik tároló kap egy sort az /etc/apt/sources.list fájlban. Ez a sor tartalmazza az a tároló elérését, és tipusát. A bináris deb paranccsal kezdődik, míg a forrásokat tartalmazó tároló deb-src paranccsal. Mindkét esetben az alábbi szintakszis követendő:
deb|deb-src uri distribution [component1] [component2] [...]
Az uri a tároló rott könyvtára, mint például: ftp://ftp.yoursite.com/debian, http://yoursite.com/debian, vagy hekyi fájlként file::///home/joe/my-debian-repository
Automatikus tárolóként megkell adnod egy disztribúciót és egy vagy több komponenst, és a disztribúció nem végződik / jellel.
Példák automatikus tárolókra:
deb ftp://sunsite.cnlab-switch.ch/mirror/debian/ unstable main contrib non-free deb-src ftp://sunsite.cnlab-switch.ch/mirror/debian/ unstable main contrib non-free
Ez a két sor határozza meg egy autmatikus bináris és forrás tárolót ftp://sunsite.cnlab-switch.ch/mirror/debian/ root könyvtárral, unstable disztribúcióval main, contrib és non-free komponensekkel.
Ha a tároló nem automatikus akkor a disztribúciót meghatározhatod relatív útvonallal az index fájlban, és egy / jellel a disztribúció végén. Nem tartalmazhat komponenst.
Példák egyszerű tárolókra:
deb file:///home/aisotton/rep-exact binary/ deb-src file:///home/aisotton/rep-exact source/
Az első sor első része határozza meg a bináris tárolót a /home/aisotton/rep-exact/binary könyvtárként a helyi gépeden. A második sor adja meg a forrástárolót a /home/aisotton/rep-exact/source könyvtárban.

