4 175
muokkausta
(välitallennus) |
(lisää materiaalia) |
||
Rivi 209: | Rivi 209: | ||
95 dh_link | 95 dh_link | ||
96 dh_strip | 96 dh_strip | ||
97 | 97 dh_compress | ||
98 dh_fixperms | 98 dh_fixperms | ||
99 # dh_perl | 99 # dh_perl | ||
100 # dh_makeshlibs | 100 # dh_makeshlibs | ||
101 dh_installdeb | 101 dh_installdeb | ||
Rivi 217: | Rivi 217: | ||
103 dh_gencontrol | 103 dh_gencontrol | ||
104 dh_md5sums | 104 dh_md5sums | ||
105 | 105 dh_builddeb | ||
106 | 106 | ||
107 binary: binary-indep binary-arch | 107 binary: binary-indep binary-arch | ||
108 .PHONY: build clean binary-indep binary-arch binary install | 108 .PHONY: build clean binary-indep binary-arch binary install | ||
</pre> | </pre> | ||
Tiedoston alussa annetaan käännösoptiot, esimerkiksi [[gcc|C-kääntäjän]] käännösparametrit laitetaan muuttujaan CFLAGS. Tämä tehdään riveillä 19-25. | |||
Riveillä 27-31 ajetaan paketin <tt>configure</tt>-skripti. Koska Hello käyttää autoconfia ja siten <tt>configure</tt>-skriptiä, voimme välittää tässä vaiheessa tarvittavat parametrit. Saatat ihmetellä, miksi tässä annetaan parametrit <tt>--prefix=/usr</tt>, vaikka juuri todettiin, että ohjelma on asennettava <tt>debian/hello</tt>-alihakemistoon. Rivillä 69, kun ajetaan paketin asennuskomento, kuitenkin asetetaan kohdehakemistoksi <tt>debian/hello</tt>, jolloin paketti asentuu polkuun <tt>debian/hello/usr</tt>. | |||
Jos tiedoston syntaksi on epäselvä, katso artikkeli [[Makefile]]. Paketti asennetaan monessa vaiheessa, aluksi riviltä 27 lähtien ajetaan <tt>configure</tt>-skripti <tt>config.status</tt>-osiossa. Tämän jälkeen ohjelma käännetään <tt>build</tt>-osiossa riviltä 34 eteenpäin. | |||
<tt>build-indep</tt>-osiossa käännetään tai luodaan alustariippumattomat tiedostot. Hellon tapauksessa niitä ei ole. Riviltä 77 eteenpäin rakennetaan varsinaista alustariippuvaista binääripakettia. "dh_"-alkuiset rivit ovat debhelperin funktiokutsuja, jotka tekevät erilaisia pieniä operaatioita rakentaen pakettia. Mm. seuraavia funktioita on tarjolla: | |||
*<tt>dh_testdir</tt>: Tarkistaa, että ollaan oikeassa hakemistossa | |||
*<tt>dh_testroot</tt>: Tarkistaa, että meillä on pääkäyttäjän oikeudet kun niitä tarvitaan | |||
*<tt>dh_strip</tt>: Ajaa [[strip]]-komennon suoritettaville tiedostoille, jolloin niiden koko pienenee | |||
*<tt>dh_compress</tt>: Pakkaa [[gzip]]illä [[man]]-sivut ja ohjetiedostot, joiden koko ylittää 4kt | |||
*<tt>dh_gencontrol</tt>: Luo binääripaketille <tt>control</tt>-tiedoston ja kopioi sen hakemistoon <tt>debian/hello/DEBIAN</tt> | |||
*<tt>dh_md5sums</tt>: Luo [[MD5]]-tarkistussummat paketin tiedostoille | |||
Jos paketti ei käytä autoconfia, on <tt>rules</tt> muokattava sellaiseksi, että ohjelma kääntyy ja asentuu polkuun <tt>debian/paketinnimi</tt>. Se, miten tämä tapahtuu, riippuu ohjelmasta. Tällöinkin voit käyttää edellä esiteltyjä "dh_"-alkuisia funktioita ja mm. $(CURDIR)-muuttujaa. Sopivan tiedoston saat aikaan muokkaamalla dh_maken luomaa pohjaa. | |||
=== .ex-päätteiset tiedostot === | === .ex-päätteiset tiedostot === | ||
Rivi 227: | Rivi 242: | ||
== Tehdään paketti! == | == Tehdään paketti! == | ||
Nyt kun tarvittavat tiedostot on lopulta muokattu sopiviksi, on aika luoda varsinainen paketti. Siirry ohjelman päähakemistoon (<tt>hello-2.2</tt>) ja aja komento | |||
dpkg-buildpackage -rfakeroot | |||
joka tekee seuraavat asiat: | |||
*Siistii paketin (ajaa [[make]]lla komennon <tt>debian/rules clean</tt>) | |||
*Kääntää ohjelman (<tt>debian/rules build</tt>) | |||
*Luo binääripaketin (<tt>debian/rules binary</tt>) | |||
*Allekirjoittaa .dsc-tiedoston [[gpg|gnupgllä]] | |||
*Luo ja allekirjoittaa .changes-tiedoston | |||
*Käyttää [[fakeroot]]tia, jolloin pääkäyttäjän oikeuksia ei tarvita | |||
Allekirjoitus vaatii, että olet luonut [[gpg]]:llä itsellesi avaimen. Tällöin sinulta kysytään avaimesi salasanaa. | |||
Tämän jälkeen, jos kaikki sujui ilman virheitä, ylähakemistosta pitäisi löytyä seuraavat tiedostot: | |||
*<tt>hello_2.2.orig.tar.gz</tt> - alkuperäinen lähdekoodi | |||
*<tt>hello_2.2-1.dsc</tt> - [[gpg]]:llä allekirjoitettu <tt>control</tt>_tiedoston kaltainen tiedosto. | |||
*<tt>hello_2.2-1.diff.gz</tt> - [[gzip]]-pakattu [[diff]]-tiedosto lähdekoodiin tehdyistä muutoksista. | |||
*<tt>hello_2.2-1_i386.deb</tt> - lopullinen deb-paketti! | |||
*<tt>hello_2.2-1_i386.changes</tt> - [[gpg]]:llä allekirjoitettu tiedosto, josta käy ilmi tehdyt muutokset | |||
Nyt lopullinen paketti voidaan asentaa [[dpkg]]:llä: | |||
dpkg -i hello_2.2-1_i386.deb | |||