Ero sivun ”Deb-paketin tekeminen” versioiden välillä
Siirry navigaatioon
Siirry hakuun
ei muokkausyhteenvetoa
(CDBS poistettu) |
Ei muokkausyhteenvetoa |
||
Rivi 60: | Rivi 60: | ||
=== control === | === control === | ||
Tiedostossa <tt>debian/control</tt> kerrotaan perustiedot paketista ja sen riippuvuuksista. Meidän tapauksessamme dh_make loi seuraavanlaisen pohjan | Tiedostossa <tt>debian/control</tt> kerrotaan perustiedot paketista ja sen riippuvuuksista. Meidän tapauksessamme dh_make loi seuraavanlaisen pohjan: | ||
< | <source lang="debcontrol" line> | ||
Source: hello | |||
Section: unknown | |||
Priority: optional | |||
Maintainer: Paketin Tekijä <foo@bar.com> | |||
Build-Depends: debhelper (>= 9), autotools-dev | |||
Standards-Version: 3.9.8 | |||
Homepage: <insert the upstream URL, if relevant> | |||
Vcs-Git: git://anonscm.debian.org/collab-maint/hello.git | |||
Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/hello.git | |||
Package: hello | |||
Architecture: any | |||
Depends: ${shlibs:Depends}, ${misc:Depends} | |||
Description: <insert up to 60 chars description> | |||
<insert long description, indented with spaces> | |||
</ | </source> | ||
Riveillä 1–9 on ''lähdekoodipaketin'' (engl. ''source'') perustiedot: | Riveillä 1–9 on ''lähdekoodipaketin'' (engl. ''source'') perustiedot: | ||
*Rivillä 1 on lähdekoodipaketin nimi | *Rivillä 1 on lähdekoodipaketin nimi | ||
Rivi 91: | Rivi 91: | ||
*Rivillä 11 on varsinaisen binääripaketin nimi. Yleensä se on sama kuin lähdekoodipaketin nimi. | *Rivillä 11 on varsinaisen binääripaketin nimi. Yleensä se on sama kuin lähdekoodipaketin nimi. | ||
*Rivillä 12 kerrotaan, millä arkkitehtuurilla paketti toimii. Jätetään tämä arvoon "any", jolloin paketin tekevä työkalu huolehtii arkkitehtuurista. Jos paketti toimii kaikilla arkkitehtuureilla (esim. se on ohjepaketti tai [[Perl]]-skripti), arkkitehtuuriksi laitetaan "all". | *Rivillä 12 kerrotaan, millä arkkitehtuurilla paketti toimii. Jätetään tämä arvoon "any", jolloin paketin tekevä työkalu huolehtii arkkitehtuurista. Jos paketti toimii kaikilla arkkitehtuureilla (esim. se on ohjepaketti tai [[Perl]]-skripti), arkkitehtuuriksi laitetaan "all". | ||
*Rivillä 13 listataan paketit, jotka ovat binääripaketin riippuvuuksia. Koska Hello ei tarvitse mitään erityisiä paketteja, jätetään tämä tyhjäksi. "''${shlibs: | *Rivillä 13 listataan paketit, jotka ovat binääripaketin riippuvuuksia. Koska Hello ei tarvitse mitään erityisiä paketteja, jätetään tämä tyhjäksi. "''${shlibs:Depends}''" aiheuttaa sen, että pakettia luotaessa pyritään riippuvuuksiksi lisäämään automaattisesti ne paketit, joiden tiedostoja vasten tämän paketin konekieliset tiedostot on linkitetty. | ||
*Lopuksi paketille annetaan vielä lyhyt (suositus noin 60 merkkiä) ja pitkä kuvaus. Pitkä kuvaus kirjoitetaan tiedoston loppuun siten, että jokaisen rivin alussa on välilyönti. Tyhjiä rivejä voidaan tehdä laittamalla riville pelkästään piste. Näin lopullinen <tt>control</tt>-tiedosto voisi näyttää tältä: | *Lopuksi paketille annetaan vielä lyhyt (suositus noin 60 merkkiä) ja pitkä kuvaus. Pitkä kuvaus kirjoitetaan tiedoston loppuun siten, että jokaisen rivin alussa on välilyönti. Tyhjiä rivejä voidaan tehdä laittamalla riville pelkästään piste. Näin lopullinen <tt>control</tt>-tiedosto voisi näyttää tältä: | ||
< | <source lang="debcontrol" line> | ||
Source: hello | Source: hello | ||
Section: text | Section: text | ||
Priority: optional | Priority: optional | ||
Maintainer: Tekijä <foo@bar.com> | Maintainer: Paketin Tekijä <foo@bar.com> | ||
Build-Depends: debhelper (>= 9), autotools-dev | Build-Depends: debhelper (>= 9), autotools-dev | ||
Standards-Version: 3.9.8 | Standards-Version: 3.9.8 | ||
Rivi 108: | Rivi 108: | ||
Klassinen Hello world -ohjelma, jonka avulla opettelemme | Klassinen Hello world -ohjelma, jonka avulla opettelemme | ||
deb-pakettien tekemistä. | deb-pakettien tekemistä. | ||
</ | </source> | ||
=== Suositeltavat paketit, ristiriidat ja muut suhteet toisiin paketteihin === | === Suositeltavat paketit, ristiriidat ja muut suhteet toisiin paketteihin === | ||
Rivi 122: | Rivi 122: | ||
Jos esimerkiksi pakettimme nyt vaatisi paketin ''foo'' version 2.3 tai uudemman, paketti ''bar'' olisi myös kiva sen kanssa, ja pakettimme ei toimisi yhdessä ''libfoo'':n kanssa, voisimme lisätä seuraavat rivit: | Jos esimerkiksi pakettimme nyt vaatisi paketin ''foo'' version 2.3 tai uudemman, paketti ''bar'' olisi myös kiva sen kanssa, ja pakettimme ei toimisi yhdessä ''libfoo'':n kanssa, voisimme lisätä seuraavat rivit: | ||
<source lang="debcontrol"> | |||
Depends: ${shlibs:Depends}, ${misc:Depends}, foo (>=2.3) | |||
Recommends: bar | |||
Conflicts: libfoo | |||
</source> | |||
Vastaavasti on mahdollista asettaa myös lähdekoodipaketille ''Build-Conflicts'' ja muut vastaavat suhteet. | Vastaavasti on mahdollista asettaa myös lähdekoodipaketille ''Build-Conflicts'' ja muut vastaavat suhteet. | ||
Rivi 138: | Rivi 140: | ||
3 * Initial release (Closes: #nnnn) <nnnn is the bug number of your ITP> | 3 * Initial release (Closes: #nnnn) <nnnn is the bug number of your ITP> | ||
3 | 3 | ||
4 -- | 4 -- Paketin Tekijä <foo@bar.com> Fri, 29 Jul 2016 11:42:23 +0300 | ||
</pre> | </pre> | ||
Rivillä 1 on aluksi paketin nimi (hello) ja versionumero (2.10-1). Seuraavana on jakelun nimi, johon paketti kuuluu (Debianilla on stable, testing ja unstable -jakelut). Yleensä uudet paketit ja päivitykset vanhoihin paketteihin lisätään ensin kehitysversioon, joka Debianilla on unstable. Viimeisenä on tieto paketin kiireellisyydestä (''urgency''), yleensä "medium" on sille oikea arvo. | Rivillä 1 on aluksi paketin nimi (hello) ja versionumero (2.10-1). Seuraavana on jakelun nimi, johon paketti kuuluu (Debianilla on stable, testing ja unstable -jakelut). Yleensä uudet paketit ja päivitykset vanhoihin paketteihin lisätään ensin kehitysversioon, joka Debianilla on unstable. Viimeisenä on tieto paketin kiireellisyydestä (''urgency''), yleensä "medium" on sille oikea arvo. | ||
Rivi 152: | Rivi 154: | ||
Koska Hello käyttää autoconfia, osaa paketin luova työkalu tehdä tarvittavat asetukset itse, eikä meidän periaatteessa tarvitse edes koskea <tt>rules</tt>-tiedostoon. Katsotaan nyt kuitenkin sitä malliksi, sillä vähänkin monimutkaisempien pakettien kohdalla sitä on muokattava. Dh_maken luoma malli on seuraava: (rivinumerot lisätty) | Koska Hello käyttää autoconfia, osaa paketin luova työkalu tehdä tarvittavat asetukset itse, eikä meidän periaatteessa tarvitse edes koskea <tt>rules</tt>-tiedostoon. Katsotaan nyt kuitenkin sitä malliksi, sillä vähänkin monimutkaisempien pakettien kohdalla sitä on muokattava. Dh_maken luoma malli on seuraava: (rivinumerot lisätty) | ||
< | <source lang="make" line> | ||
1 #!/usr/bin/make -f | 1 #!/usr/bin/make -f | ||
</source> | |||
</ | |||
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. | 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. | ||
Rivi 305: | Rivi 200: | ||
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 kääntäminen tapahtuu, riippuu ohjelmasta. Funktion <tt>dh_install</tt> avulla asennetaan tiedostot oikeisiin hakemistoihin lopullisessa binaaripaketissa. | 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 kääntäminen tapahtuu, riippuu ohjelmasta. Funktion <tt>dh_install</tt> avulla asennetaan tiedostot oikeisiin hakemistoihin lopullisessa binaaripaketissa. | ||
=== .ex-päätteiset tiedostot === | === .ex-päätteiset tiedostot === | ||
Rivi 382: | Rivi 271: | ||
== Patchit == | == Patchit == | ||
Joskus pakettia tehtäessä on tehtävä muutoksia myös itse ohjelman lähdekoodiin. Tällöin on siistiä pitää muutokset erillään [[patch]]-tiedostoissa. Kun binääripaketti sitten tehdään, otetaan patchit käyttöön ennen kääntämistä. | Joskus pakettia tehtäessä on tehtävä muutoksia myös itse ohjelman lähdekoodiin. Tällöin on siistiä pitää muutokset erillään [[patch]]-tiedostoissa. Kun binääripaketti sitten tehdään, otetaan patchit käyttöön ennen kääntämistä. | ||
== Muut pakettityypit == | == Muut pakettityypit == | ||
Rivi 439: | Rivi 279: | ||
Debhelper mahdollistaa useampien pakettien luomisen yhdestä lähdekoodipaketista varsin yksinkertaisesti. Ensinnäkin jokaiselle paketille kirjoitetaan oma osio <tt>debian/control</tt>-tiedostoon. Tiedostoon tulee aluksi normaalisti lähdekoodipaketin tiedot, ja tämän jälkeen luotavien binääripakettien tiedot peräkkäin. Esimerkki: | Debhelper mahdollistaa useampien pakettien luomisen yhdestä lähdekoodipaketista varsin yksinkertaisesti. Ensinnäkin jokaiselle paketille kirjoitetaan oma osio <tt>debian/control</tt>-tiedostoon. Tiedostoon tulee aluksi normaalisti lähdekoodipaketin tiedot, ja tämän jälkeen luotavien binääripakettien tiedot peräkkäin. Esimerkki: | ||
< | <source lang="debcontrol"> | ||
Source: hello | Source: hello | ||
Section: unknown | Section: unknown | ||
Priority: extra | Priority: extra | ||
Maintainer: | Maintainer: Paketin Tekijä <foo@bar.com> | ||
Build-Depends: debhelper (>= | Build-Depends: debhelper (>= 9), autotools-dev | ||
Standards-Version: 3. | Standards-Version: 3.9.8 | ||
Package: hello | Package: hello | ||
Rivi 460: | Rivi 300: | ||
Description: Hellon ohjeet | Description: Hellon ohjeet | ||
Monipuoliset käyttöohjeet hello world -sovelluksen käyttöön. | Monipuoliset käyttöohjeet hello world -sovelluksen käyttöön. | ||
</ | </source> | ||
Tämän jälkeen muutetaan paketin asentamista (<tt>debian/rules</tt>) siten, että esimerkiksi pakettiin <tt>hello</tt> kuuluvat tiedostot asennettaisiin hakemistoon <tt>debian/hello/</tt> ja paketin <tt>hello-doc</tt>-tiedostot hakemistoon <tt>debian/hello-doc</tt>. Näihin hakemistoihin tiedostot asennetaan kuten normaalisti luotaessa vain yhtä pakettia, eli esimerkiksi ajettavat ohjelmat voitaisiin sijoittaa polkuun <tt>debian/hello/usr/bin/</tt>. | Tämän jälkeen muutetaan paketin asentamista (<tt>debian/rules</tt>) siten, että esimerkiksi pakettiin <tt>hello</tt> kuuluvat tiedostot asennettaisiin hakemistoon <tt>debian/hello/</tt> ja paketin <tt>hello-doc</tt>-tiedostot hakemistoon <tt>debian/hello-doc</tt>. Näihin hakemistoihin tiedostot asennetaan kuten normaalisti luotaessa vain yhtä pakettia, eli esimerkiksi ajettavat ohjelmat voitaisiin sijoittaa polkuun <tt>debian/hello/usr/bin/</tt>. |