clemens@kclee.com
2002.11.30, $Date: 2003/12/19 20:07:14 $
Verziótörténet | ||
---|---|---|
Verzió: 3.0 | 2003.12.19 | Átdolgozta: ccl |
Két elírás javítása Claudio Cattazzo jelzése alapján. | ||
Verzió: 2.0 | 2003.12.13 | Átdolgozta: ccl |
Frank Lichtenheld visszajelzésének figyelembe vétele. | ||
Verzió: 1.0 | 2003.11.08 | Átdolgozta: ccl |
Első kiadás. |
Egy teljesen újonnan elkészített archívumot (fájl, program, szkript, csomag stb. - a ford.) először mindig a saját rendszeredre telepítsd, ne tedd bele rögtön a hivatalos Debian disztribúcióba. Tanulmányozd a "hivatalos" Debian New Maintainers' Guide (Új Debian karbantartók kézikönyve) leírást.
A szabályos Debian csomagok egy komplett forrás-csomagot tartalmaznak, az ebben lévő debian/rules fájl automatikusan végrehajtja a megfelelő lépéseket, beleértve a bináris elkészítését is. Itt mi most csak azt mutatjuk be, hogyan tegyünk bele egy kis bináris csomagba egy egyszerű shell szkriptet, vagy egy futtatható binárist.
Feltételezem, hogy tudod használni a "tar és "man" parancsokat, valamint tudod mi a ".tar.gz" fájl és a Debian (illetve egy szerkesztő használatát ;-), de azt is feltételezem, hogy még soha nem foglalkoztál az olyan programokkal, mint az "ar", vagy a "dpkg".
A Debian Reference (Debian referencia) egy kitűnő áttekintést, valamint részletes információt nyújt a Debian minden sajátosságáról.
A Debian csomagkészítés hivatalos dokumentációja a Debian New Maintainers' Guide (Új Debian karbantartók kézikönyve).
A magyar fordítást Záhonyi Loránd István készítette (2004.06.01). A lektorálást Daczi László végezte el (2004.06.02). A dokumentum legfrissebb változata megtalálható a Magyar Linux Dokumentációs Projekt honlapján.
$ ar tv parted_1.4.24-4_i386.deb rw-r--r-- 0/0 4 Mar 28 13:46 2002 debian-binary rw-r--r-- 0/0 1386 Mar 28 13:46 2002 control.tar.gz rw-r--r-- 0/0 39772 Mar 28 13:46 2002 data.tar.gz |
drwxr-xr-x root/root 0 2002-03-28 13:44:57 ./ drwxr-xr-x root/root 0 2002-03-28 13:44:49 ./sbin/ -rwxr-xr-x root/root 31656 2002-03-28 13:44:49 ./sbin/parted drwxr-xr-x root/root 0 2002-03-28 13:44:38 ./usr/ drwxr-xr-x root/root 0 2002-03-28 13:44:41 ./usr/share/ drwxr-xr-x root/root 0 2002-03-28 13:44:38 ./usr/share/man/ drwxr-xr-x root/root 0 2002-03-28 13:44:52 ./usr/share/man/man8/ -rw-r--r-- root/root 1608 2002-03-28 13:44:37 ./usr/share/man/man8/parted.8.gz drwxr-xr-x root/root 0 2002-03-28 13:44:41 ./usr/share/doc/ drwxr-xr-x root/root 0 2002-03-28 13:44:52 ./usr/share/doc/parted/ -rw-r--r-- root/root 1880 2002-03-07 14:20:08 ./usr/share/doc/parted/README.Debian -rw-r--r-- root/root 1347 2002-02-27 01:40:50 ./usr/share/doc/parted/copyright -rw-r--r-- root/root 6444 2002-03-28 13:37:33 ./usr/share/doc/parted/changelog.Debian.gz -rw-r--r-- root/root 15523 2002-03-28 02:36:43 ./usr/share/doc/parted/changelog.gz |
A mi példánkban ez a fájl a következőket tartalmazza:
-rw-r--r-- 1 root root 1336 Mar 28 2002 control -rw-r--r-- 1 root root 388 Mar 28 2002 md5sums -rwxr-xr-x 1 root root 253 Mar 28 2002 postinst -rwxr-xr-x 1 root root 194 Mar 28 2002 prerm |
"md5sums" a data.tar.gz összes fájljának az md5sum kivonatát. A példánkban ez így néz ki:
1d15dcfb6bb23751f76a2b7b844d3c57 sbin/parted 4eb9cc2e192f1b997cf13ff0b921af74 usr/share/man/man8/parted.8.gz 2f356768104a09092e26a6abb012c95e usr/share/doc/parted/README.Debian a6259bd193f8f150c171c88df2158e3e usr/share/doc/parted/copyright 7f8078127a689d647586420184fc3953 usr/share/doc/parted/changelog.Debian.gz 98f217a3bf8a7407d66fd6ac8c5589b7 usr/share/doc/parted/changelog.gz |
És végül a legérdekesebb fájl:
$ cat control Package: parted Version: 1.4.24-4 Section: admin Priority: optional Architecture: i386 Depends: e2fsprogs (>= 1.27-2), libc6 (>= 2.2.4-4), libncurses5 (>= \ 5.2.20020112a-1), libparted1.4 (>= 1.4.13+14pre1), libreadline4 (>= \ 4.2a-4), libuuid1 Suggests: parted-doc Conflicts: fsresize Replaces: fsresize Installed-Size: 76 Maintainer: Timshel Knoll <timshel@debian.org> Deszkription: The GNU Parted disk partition resizing program GNU Parted is a program that allows you to create, destroy, resize, move and copy hard disk partitions. This is useful for creating space for new operating systems, reorganizing disk usage, and copying data to new hard disks. . This package contains the Parted binary and manual page. . Parted currently supports DOS, Mac, Sun, BSD, GPT and PC98 disklabels/partition tables, as well as a 'loop' (raw disk) type which allows use on RAID/LVM. Filesystems supported are ext2, ext3, FAT (FAT16 and FAT32) and linux-swap. Parted can also detect HFS (Mac OS), JFS, NTFS, ReiserFS, UFS and XFS filesystems, but cannot create/remove/resize/check these filesystems yet. . The nature of this software means that any bugs could cause massive data loss. While there are no known bugs at the moment, they could exist, so please back up all important files before running it, and do so at your own risk. |
A "man 5 deb-control" parancs kiadásával további információkat tudhatsz meg a control fájlról.
$ mkdir -p ./debian/usr/bin $ cp linuxstatus ./debian/usr/bin |
$ dkpg -S /bin/cat coreutils: /bin/cat |
Egyébként két további módon is hozzájuthatsz ilyen információkhoz. A http://www.debian.org/distrib/packages honlapon Debian fájlokat kereshetsz. Töltsd ki az oldal alján lévő mezőket.
Végül, de nem utolsó sorban van egy frankó GUI alkalmazás (grafikus program - a ford.), "kpackage", mely kényelmes csomagok közti böngészési lehetőséget nyújt, és egyedi fájlok alapján is lehetséges csomagot keresni. (kipróbáltam, megette az összes memóriámat (128M mem + 256M swap), úgy kellett lelőnöm távoli gépről, szóval én inkább a karakteres csomagkezelő programok használatát javaslom - a ford.)
A "Suggests", "Conflicts", és a "Replaces" stb. mezőket ki lehet hagyni, ha nem szükségesek.
Íme az első "control" fájlunk eredménye:
Package: linuxstatus Version: 1.1-1 Section: base Priority: optional Architecture: all Depends: bash (>= 2.05a-11), textutils (>= 2.0-12), awk, procps (>= \ 1:2.0.7-8), sed (>= 3.02-8), grep (>= 2.4.2-3), coreutils (>= 5.0-5) Maintainer: Chr. Clemens Lee <clemens@kclee.com> Deszkription: Linux system information This szkript provides a broad overview of different system aspects. |
A "control" fájlt másold a "debian" könyvtárban lévő "DEBIAN" könyvtárba.
$ mkdir -p debian/DEBIAN $ find ./debian -type d | xargs chmod 755 # a Debian Woodynál ez szükséges, ne kérdezd, hogy miért $ cp control debian/DEBIAN |
Ha nagy valószínűséggel többen fogják használni a csomagodat a jövőben, akkor segíthet a Writing Debian package descriptions (Leírás készítése Debian csomaghoz) cikk.
Már majdnem kész van. Most gépeld be:
$ dpkg-deb --build debian dpkg-deb: building package `linuxstatus' in `debian.deb'. $ mv debian.deb linuxstatus_1.1-1_all.deb |
root# dpkg -i ./linuxstatus_1.1-1_all.deb |
Ha érdekelnek verziószámozási sémák és a névválasztási konvenciók a Debian csomagok tekintetében, akkor olvasd el ezt a bekezdást a Debian Reference (Debian referencia) leírásban.
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 |
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 |
$ 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 |
Í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) ... |
Hogy ne kavarodj össze, idézzük fel a bináris Debian csomag elkészítésének összes lépését.
A helyi "debian" könyvtár előkészítése:
készítsd el a "debian/usr/bin" könyvtárat (vagy ahová a futtatható fájlokat szeretnéd telepíteni)
készítsd el a "debian/usr/share/doc/<csomag_nev>" könyvtárat
Másold be a fájlokat a helyi "debian" fa-struktúrába:
másold a futtatható fájlokat a "debian/usr/bin" könyvtárba (vagy ahová telepíteni szeretnéd őket)
másold a kézikönyv oldalt a "debian/usr/share/man/man1 könyvtárba
Ha valaki következő lépésként Debian csomagként is közzé szeretné tenni szoftverét, úgy először a Debian New Maintainers' Guide (Új Debian karbantartók kézikönyve) valamint Debian Policy Manual (Debian irányvonal kézikönyv) leírásokat tanulmányozza először. Ha Debian forrás csomag készítésébe fogsz bele, akkor látogass el a debian-mentors (debian-tanacsadók) levelező listájára is, hogy tapasztalatokat szerezz, bekapcsolódj a párbeszédbe, melynek során tippeket kaphatsz az előforduló problémák megoldására.
Köszönet az alábbi embereknek:
Tabatha Marshall: a TLDP projektből, általános segítség,
Joey Hess, Carlo Perassi, és Joe Riel: kisebb korrekciók,
Claudio Cattazzo: a saját xml dokumentumom docbook formátumra konvertálása, mely számos kisebb korrekciót és fejlesztést eredményezett [2003.10.04].
Frank Lichtenheld: a HTML oldalak generálásakor fellépő hibákra fölhívta a figyelmet, valamint felvetette a "dpkg -S <fájl>" parancs használatát, amikor egy bizonyos fájlra keresünk a csomagban [2003.12.13].
Hugh Hartmann: elkészítette a HOGYAN olasz fordítását, Claudio Cattazzo: lektorálta a fordítást [2003.12.13].
Debian New Maintainers' Guide (Új Debian Karbantartók Útmutatója): | http://www.debian.org/doc/maint-guide/ |
Debian: | http://www.debian.org/ |
The Debian Reference (Debian referencia): | http://www.debian.org/doc/manuals/reference/reference.en.html |
Debian csomagok: | http://www.debian.org/distrib/packages |
Writing Debian package descriptions (Leírás készítése Debian csomaghoz): | http://people.debian.org/~walters/descriptions.html |
Linux Man Page Howto (Linux kézikönyv oldal HOGYAN): | http://www.tldp.org/HOWTO/mini/Man-Page.html |
Debian Policy Manual (Debian irányvonal kézikönyv oldal): | http://www.debian.org/doc/debian-policy/ |
Debian Mentors (debian tanácsadás): | http://lists.debian.org/debian-mentors/ |
The Linux Documentation Project (a Linux Dokumentációs Projekt honlapja): | http://www.tldp.org/ |
Plusz az én saját kis Unix honlapom: | http://www.kclee.com/clemens/unix/ |