CDBS

Linux.fista
Versio hetkellä 29. kesäkuuta 2008 kello 14.41 – tehnyt Heikki (keskustelu | muokkaukset) (deb-paketointiartikkelin jakamista osiin)
(ero) ← Vanhempi versio | Nykyinen versio (ero) | Uudempi versio → (ero)
Siirry navigaatioon Siirry hakuun

Artikkelissa Deb-paketin tekeminen tehtiin deb-paketti käyttäen Debhelperiä, jolloin debian/rules-tiedoston kirjoittaminen oli hyvinkin työlästä. CDBS (Common Debian Build System) on toinen lähestymistapa pakettien luomiseen: se yksinkertaistaa rutiinitehtäviä, ja esimerkiksi sitä käytettäessä Autotoolsia käyttävän paketin rules-tiedosto vaatii vain 4 riviä!

CDBS on modulaarinen Debhelperiä käyttävä apuohjelma paketin tekemiseen. Sitä käytettäessä rules-tiedostossa sisällytetään halutut moduulit, jotka hoitavat esimerkiksi pakettin kääntämisestä ja patchien käyttöönotosta. Ideana on, että monissa paketeissa samoina toistuvat osiot (esim. paketin kääntäminen ja patchien käsittely) on siirretty yhteen paikkaan, eikä niitä tarvitse aina kirjoittaa uudestaan.

CDBS:ää käytettäessä paketin käännösaikaisiin riippuvuuksiin on lisättävä cdbs.

Esimerkiksi artikkelissa Deb-paketin tekeminen paketoidun hello-ohjelman rules-tiedostona riittäisi seuraava:

#!/usr/bin/make -f
                                
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/autotools.mk

Kuten huomaat, CDBS:ää käytetään sisällyttämällä .mk-päätteisiä Makefile-tiedostoja. Näitä tiedostoja tulee CDBS:n mukana useita ja niitä voi asentaa myös lisää muista paketeista (jolloin kyseinen paketti on lisättävä käännösaikaiseksi riippuvuudeksi).

Eräitä CDBS:n .mk-tiedostoja ovat:

Tiedosto Kuvaus
rules/debhelper.mk Käyttää Debhelperiä tarvittavissa kohdissa
rules/dpatch.mk
rules/simple-patchsys.mk
Patch-järjestelmiä
class/autotools.mk Käyttää Autotoolsia tarvittavissa kohdissa
class/gnome.mk Rakentaa paketin GNOME-ohjelmalle
class/kde.mk Rakentaa paketin KDE-ohjelmalle
class/python-distutils.mk Python-ohjelmien paketointiin

CDBS:n kanssa ei kuitenkaan tarvitse rajoittua vain .mk-tiedostoihin. Jos vaikkapa asennuksen aikana on tehtävä joitain harvinaisempia toimenpiteitä, ne voidaan lisätä rules-tiedostoon hieman samaan tyyliin kuin käytettäessä debhelperiä. Esimerkiksi jos paketin hello asennuksen yhteydessä on muutettava jonkin tiedoston oikeuksia, se onnistuu lisäämällä rules-tiedostoon kohta

binary-install/hello::
    chmod o+x /usr/bin/hello

Mahdollisia kohtia ovat mm.

Toiminto Komennot suoritetaan
binary-install/paketti:: Paketin luomisen yhteydessä
build/paketti:: Kääntämisen yhteydessä
clean:: Siivottaessa käännöshakemistoa

Patchit

Kuten edellä jo mainittiin, CDBS helpottaa myös patchien käyttöä. Sen mukana tulee useita erilaisia .mk-tiedostoja, jotka toteuttavat hieman erilaiset patch-järjestelmät.

Simple patchsys on nimensä mukaisesti yksinkertainen patch-järjestelmä. Sitä käytettäessä ennen lähdekoodin kääntämistä otetaan käyttöön hakemistossa debian/patches olevat patchit aakkosjärjestyksessä (yleensä tiedostot ovat nimeltään muotoa numero-nimi.patch, esim. 10-korjaa_makefile.patch, jolloin ne otetaan käyttöön numerojärjestyksessä). Myöskään sillä ei ole väliä, kuinka monta polkua patchin tiedostopoluista on jätettävä huomiotta (patchin valitsin -p), sillä simple patchsys yrittää eri tasoja, kunnes patchin käyttöönotto onnistuu. Myös patchien poistaminen lähdekoodista siivouksen (clean) yhteydessä tapahtuu automaattisesti.

Simple patchsys otetaan käyttöön lisäämällä rules-tiedostoon rivi

include /usr/share/cdbs/1/rules/simple-patchsys.mk

Järjestelmään kuuluu myös cdbs-edit-patch-työkalu, joka mahdollistaa patchien luomisen ja muokkaamisen interaktiivisesti. Esimerkiksi jos haluamme luoda uuden patchin tai muokata vanhaa, jonka nimi on 10-korjaa_makefile.patch, se onnistuu seuraavasti:

  1. Ajetaan komento cdbs-edit-patch 10-korjaa_makefile.patch, jolloin CDBS luo projektihakemistosta väliaikaisen kopion, johon ottaa käyttöön kaikki luotavaa patchia aiemmin käyttöön otettavat patchit (joiden numero on pienempi kuin 10). Jos tällä nimellä on jo patchi olemassa, otetaan myös se käyttöön.
  2. CDBS siirtää komentorivin tähän väliaikaiseen hakemistoon, jonka tiedostoja voidaan nyt muokata aivan normaalisti esimerkiksi vimillä. Tehdään tässä tilassa halutut muutokset.
  3. Poistutaan väliaikaisesta työskentelytilasta näppäinyhdistelmällä Ctrl+D. CDBS luo uuden patchin debian/patches-hakemistoon (tai päivittää vanhaa, jos muokkasimme jo olemassa olevaa patchia) ja palaa takaisin projektihakemistoon.
  4. Nyt luotu patchi on normaalisti käytössä kun pakettia käännetään.

Lisätietoja