Metapaketti on näppärä tapa asentaa Linuxille/Unixille ohjelmia. Metapaketti ei sisällä itse ohjelmakoodia, vaan ikään kuin linkin siihen ja sen riippuvuuksiin. Metapaketteja käyttäen ohjelmistoja voidaan asentaa ja hallita keskitetysti. Metapaketti päivittää automaattisesti ohjelmista uusimmat versiot.  Seuraavaksi rakennan metapaketin käyttäen Dependicer-ohjelmaa. Ohjeita metapakettien luontiin dependicerin avulla ja itse dependicerin asennuspaketin saan Tero Karvisen sivuilta.

Asennan Dependicer-ohjelman paketin koneelleni Teron sivuilta, teen sille oman hakemiston /opt/Dependicer ja puran sen sinne. Jotta purku onnistuu, joudun muuttamaan hakemiston omistajaa omalle tunukselleni. Sudo-komennolla omistajaksi tuli root, mutta komennolla

$ sudo chown oma_tunnus Dependicer

muutan omistajan omaksi tunnuksekseni, jolloin saan paketin purettua sinne.

-rwxrwx–x 1 oma_tunnus oma_tunnus 2419 2011-09-14 13:32 dependicer
-rw-rw—- 1 oma_tunnus oma_tunnus   258 2011-09-14 14:46 dependicer-packages.dpd

Dependicer-packages.dpd-tiedostoa voidan muokata ja tallentaa sinne haluttu metapaketin sisältö.  Tutkin dependicer-packages.dpd-tiedostoa nano-editorilla:

GNU nano 2.2.2         File: dependicer-packages.dpd

# Multiple metapackages for dependicer
# package:      dependency1, dependency2…
dependicer-coding:   nano emacs git bzr
dependicer-graphics: inkscape, gimp
dependicer-server: apache2
dependicer-workstation:      teros-coding, teros-drawing, dependicer-server

Muokkaan dependicer-packages.dpd:n sisältöä seuravanlaiseksi:

# Multiple metapackages for dependicer
# package:      dependency1, dependency2…
dependicer-coding:   nano emacs git bzr
dependicer-graphics: inkscape, gimp, shutter
dependicer-server: apache2
dependicer-workstation:    dependicer-server

Seuraavaksi luon metapaketin komennolla

§ ./dependicer dependicer-packages.dpd

Tuloksena neljä kpl metapaketteja Dependicer-hakemistossani:
-rwxrwx–x 1 oma_tunnus oma_tunnus 2419 2011-09-14 13:32 dependicer
-rw-r–r– 1 oma_tunnus oma_tunnus 2120 2012-02-11 09:30 dependicer-coding_0.20120211.0930_all.deb
-rw-r–r– 1 oma_tunnus oma_tunnus 2120 2012-02-11 09:30 dependicer-graphics_0.20120211.0930_all.deb
drwxr-xr-x 2 oma_tunnus oma_tunnus 4096 2012-02-11 09:30 dependicer-output
-rw-rw—- 1 oma_tunnus oma_tunnus  236 2012-02-11 09:28 dependicer-packages.dpd
-rw-r–r– 1 oma_tunnus oma_tunnus 2094 2012-02-11 09:30 dependicer-server_0.20120211.0930_all.deb
-rw-r–r– 1 oma_tunnus oma_tunnus 2102 2012-02-11 09:30 dependicer-workstation_0.20120211.0930_all.deb

Kurkistan dependicer-output-hakemistosta erikseen jokaisen paketin outputin. Dependicer-graphic-paketilla se on tällainen:

# Created with dependicer. Build with ’equivs-build dependicer-graphics’
Section: misc
Priority: optional
Standards-Version: 3.6.2
Package: dependicer-graphics
Version: 0.20120211.0930
Maintainer: Undefined Maintainer <nomail@example.com.invalid>
Depends: inkscape, gimp, shutter
Description: Metapackage
Installed files listed in dependencies
dependicer-graphics.cfg (END)

Tarkistan vielä lintianilla pakettien eheyden, esimerkkinä dependicer-coding:

§ lintian dependicer-coding_0.20120211.0930_all.deb

Kaikki pakettini ovat eheitä. Seuraavaksi allekirjoitan pakettini debsign-ohjelmaa käyttäen. Asennan debsign-ohjelman:

$ sudo apt-get install devscripts

Generoin aluksi itselleni gpg-avaimen komennolla (Tässä kohtaa katson mallia Purple Floydin sivuilta):

§ gpg –gen-key

Valitsen default-arvot ja syötän omat tietoni nimen ja spostin kyselyyn. Lopputulemana oma avainpari, jolla voin allekirjoittaa luomani metapaketit 🙂

dbgpg: /home/oma_tunnus/.gnupg/trustdb.gpg: trustdb created
gpg: key 2A981094 marked as ultimately trusted
public and secret key created and signed.

Yritän allekirjoittaa Dependicerillä tehdyt pakettini debsign-ohjelmalla. Debsignille pitäisi antaa parametrina joko .changes, .dsc tai .commands -päätteinen tiedosto. Googlaan ja haen tiedostojärjestelmästä, mutta en löydä tähän ohjetta. Dpkg-buildpackage -ohjelma hoitaisi koko paketoinnin, myös allekirjoituksen, mutta tässä oli tarkoitus käyttää debsignia. Monen tunnin tuhraus tähän saa nyt riittää ja siirryn pakettivaraston teko hommiin.

Pakettivarasto tehdään reprepro-ohjelman avulla. Ohjeet pakettivaraston luontiin reprepro:lla löytyy AwaseConfigurationsin blogista (http://awaseconfigurations.wordpress.com/2011/10/26/reprepro/).

Ensin asennetaan reprepro:

§ sudo apt-get install reprepro

Luodaan hakemisto nimeltään conf

§ mkdir conf

sekä sen alle tiedosto distributions (aluksi loin jakelut-nimisen tiedoston, mutta se ei kelvannut myöhemmässä vaiheessa), jonka sisältö on tämä:

Origin: Sanna
Label: Sanna-All
Suite: stable
Codename: natty
Version: 0.1
Architectures: i386 amd64 source
Components: main non-free contrib
Description:  SannanJakelut

Ajetaan komento:

$ reprepro -Vb . includedeb natty /opt/Dependicer/dependicer-graphics_0.20120211.0930_all.deb

joka luo liudan hakemistoja:

Created directory ”./db”
/opt/Dependicer/dependicer-graphics_0.20120211.0930_all.deb: component guessed as ’main’
Created directory ”./pool”
Created directory ”./pool/main”
Created directory ”./pool/main/d”
Created directory ”./pool/main/d/dependicer-graphics”
Exporting indices…
Created directory ”./dists”
Created directory ”./dists/natty”
Created directory ”./dists/natty/main”
Created directory ”./dists/natty/main/binary-i386”
Created directory ”./dists/natty/main/binary-amd64”
Created directory ”./dists/natty/main/source”
Created directory ”./dists/natty/non-free”
Created directory ”./dists/natty/non-free/binary-i386”
Created directory ”./dists/natty/non-free/binary-amd64”
Created directory ”./dists/natty/non-free/source”
Created directory ”./dists/natty/contrib”
Created directory ”./dists/natty/contrib/binary-i386”
Created directory ”./dists/natty/contrib/binary-amd64”
Created directory ”./dists/natty/contrib/source”

Lataan muutkin .deb-pakettini tähän varastoon. Distribution-tiedosto ja sen codename natty ilmeisesti linkkaavat näihin reprepro:n synnyttämiin db-, pool- ja dists-hakemistojen alla oleviin tiedostoihin, jotka sisältävät tiedot asennuspaketeista.

Jätä kommentti