Miután megszerezted az első tapasztalatokat és elkészítetted a saját bináris csomagodat, itt az idő, hogy egy kicsit komolyabban is megnézzük a dolgot. Vess egy pillantást az elkészített csomag minőségére.
Szerencsénkre a Debian projekt a "lint"-hez hasonló Debian csomag ellenőrző eszközt nyújt. Ezt az eszközt "lintian"-nak hívják. Ha még nem telepítetted a rendszeredre, akkor itt a megfelelő alkalom (apt-get install lintian).
Most használd ezt a nagyszerű eszközt a csomagod ellenőrzéséhez:
$ lintian linuxstatus_1.1-1_all.deb E: linuxstatus: binary-without-manpage linuxstatus E: linuxstatus: no-copyright-file W: linuxstatus: prerm-does-not-remove-usr-doc-link W: linuxstatus: postinst-does-not-set-usr-doc-link |
Uh, ez nem néz ki valami teljesnek. Kihagytuk a kézikönyv oldalt, a copyright fájlt, meg azokat a "prerm", meg "postinst" szkripteket.
Nem itt kellene leírnom a kézikönyv oldalak készítésének módját, egy csomó könyv van, ahol egy vagy több fejezet foglalkozik ezzel a témával, ezeken kívül pedig elolvashatod a Linux Man Page Howto (Linux kézikönyv oldal HOGYAN) leírást, mely az interneten elérhető. Szóval tekintsünk el ettől, és tegyük fel, hogy van egy megfelelő kézikönyv oldal a szkriptedhez a ./man/man1/linuxstatus.1 helyen.
Ugyanez a helyzet a "copyright" fájllal is. Elegendő példát találsz a /usr/share/doc könyvtárban a find /usr/share/doc -name "copyright" parancs segítségével.
Íme a saját példánk a "copyright" fájlra:
linuxstatus Copyright: Chr. Clemens Lee <clemens@kclee.com> 2002-12-07 The home page of linuxstatus is at: http://www.kclee.com/clemens/unix/index.html#linuxstatus The entire code base may be distributed under the terms of the GNU General Public License (GPL), which appears immediately below. Alternatively, all of the source code as any code derived from that code may instead be distributed under the GNU Lesser General Public License (LGPL), at the choice of the distributor. The complete text of the LGPL appears at the bottom of this file. See /usr/share/common-licenses/(GPL|LGPL) |
A "prerm" és "postinst" szkripteket egytől egyig másold be a példában szereplő "parted" csomagból, ugyanazzal a névvel, a saját csomagod könyvtárába. Ezeknek a fájloknak megfelelően működniük kell.
Most ismét készítsd el a debian csomagunkat, de előbb a "control" fájlban megnöveld a verziószámot 1.1-1-ről 1.2-1-re (ha írunk egy új kézikönyv oldalt, akkor növeljük a saját belső kiadási számot). Az új fájlokat is el kell helyezned a megfelelő helyen:
$ mkdir -p ./debian/usr/share/man/man1 $ mkdir -p ./debian/usr/share/doc/linuxstatus $ find ./debian -type d | xargs chmod 755 $ cp ./man/man1/linuxstatus.1 ./debian/usr/share/man/man1 $ cp ./copyright ./debian/usr/share/doc/linuxstatus $ cp ./prerm ./postinst ./debian/DEBIAN $ gzip --best ./debian/usr/share/man/man1/linuxstatus.1 $ $ dpkg-deb --build debian dpkg-deb: building package `linuxstatus' in `debian.deb'. $ mv debian.deb linuxstatus_1.2-1_all.deb |
A gzip szükséges, mert a lintian elvárja, hogy a kézikönyv oldal fájlja, amennyire csak lehet, tömörítve legyen.
No, akkor nézzük, hogy a csomagunk debian tulajdonságai javultak-e.
$ lintian linuxstatus_1.2-1_all.deb E: linuxstatus: control-file-has-bad-owner prerm clemens/clemens != root/root E: linuxstatus: control-file-has-bad-owner postinst clemens/clemens != root/root E: linuxstatus: bad-owner-for-doc-file usr/share/doc/linuxstatus/ clemens/clemens != root/root E: linuxstatus: bad-owner-for-doc-file usr/share/doc/linuxstatus/copyright clemens/clemens != root/root E: linuxstatus: debian-changelog-file-missing |
Hopsz, újabb gondok. OK, nem adjuk föl. Valójában úgy néz ki, hogy több hibaüzenetet kaptunk ugyanarra a problémára. Minden fájl a "clemens" felhasználói és csoport azonosítóval lett becsomagolva, míg valószínűleg a legtöbb felhasználó jobban örülne, ha "root/root" felhasználóként lennének telepítve. Ezt a problémát könnyedén orvosolhatod a "fakeroot" segédprogram használatával. Szóval javítsd ki, és gyorsan ellenőrizd le (a changelog kimenettel most ne foglalkozz):
$ fakeroot dpkg-deb --build debian dpkg-deb: building package `linuxstatus' in `debian.deb'. $ mv debian.deb linuxstatus_1.2-1_all.deb $ lintian linuxstatus_1.2-1_all.deb E: linuxstatus: debian-changelog-file-missing |
Nagyszerű, de még egy fájlt hozzá kell adnunk a csomaghoz.
A "doc/linuxstatus" könyvtárban lévő "changelog" mellé még egy "changelog.Debian" fájlt is kell írni. Mindkettőt gzip-pel kell tömöríteni.
Íme egy példa a "changelog" fájlra:
linuxstatus (1.2-1) * A lintian által jegyzett hibák javítása. -- Chr. Clemens Lee <clemens@kclee.com> 2002-12-13 |
itt pedig egy "changelog.Debian" példa:
A linuxistatus Debian karbantartója és a fő változat szerzője megegyezik, ezért nézd meg a Debian valtozások changelogját is. |
A changelog fájl formátumát illetően a Debian irányvonal még részletesebb.
Remélhetőleg most következik az utolsó lépés:
$ cp ./changelog ./changelog.Debian ./debian/usr/share/doc/linuxstatus $ gzip --best ./debian/usr/share/doc/linuxstatus/changelog $ gzip --best ./debian/usr/share/doc/linuxstatus/changelog.Debian $ fakeroot dpkg-deb --build ./debian dpkg-deb: building package `linuxstatus' in `debian.deb'. $ mv debian.deb linuxstatus_1.2-1_all.deb $ lintian linuxstatus_1.2-1_all.deb |
Ah, már nem panaszkodik többé a lintian :-). Most root felhasználóként telepítheted a csomagot a régire, a megszokott "dpkg -i" paranccsal.
root# dpkg -i ./linuxstatus_1.2-1_all.deb (Reading database ... 97124 files and directories currently installed.) Preparing to replace linuxstatus 1.1-1 (using linuxstatus_1.2-1_all.deb) ... Unpacking replacement linuxstatus ... Setting up linuxstatus (1.2-1) ... |
Előző | Tartalomjegyzék | Következő |
Gyakorlat | Összegzés |