Avainsanaan ‘DEB’ liitetyt artikkelit

Harjoitustehtävä 4: Paketinhallintaa

19.9.2012

Harjoitustehtävän aiheena oli metapakettien tekeminen ja oman pakettivaraston (repository) luominen. Harjoituksessa tehtiin yksi DEB metapaketti, johon koottiin tarpeellisia Ubuntun ohjelmapaketteja. Oma metapaketti julkaistiin sitten omassa pakettivarastossa.

Harjoitusympäristö

Harjoitus suoritettiin 19.09.2012 opiskelijan kotona käyttäen henkilökohtaista tietokonetta. Internet-yhteytenä oli Elisa Oyj:n tarjoama VDSL tyyppinen 100/10 mbit kiinteä laajakaistayhteys. Harjoituksessa käytettiin Lenovo R60 kannettavaa tietokonetta, johon oli asennettu Xubuntu versio 12.04 32-bittinen Linux käyttöjärjestelmä.

Lenovo R60 kokoonpano:

  • Suoritin: Intel Core 2 Duo T56000 @1.83 Ghz
  • Keskusmuisti: 4 Gt DDR2
  • Kiintolevy: 100 Gt SATA150 54000rpm
  • Käyttöjärjestelmä: Xubuntu versio 12.04 32-bittinen

Metapaketin tekeminen

Harjoituksen tekeminen aloitettiin asentamalla pakettityökalu equivs. Aloitin asennuksen päivittämällä Ubuntun pakettivarastot komennolla:

$sudo apt-get update

Pakettivarastojen päivitys kesti muutamia sekunteja.

Asensin equivs ohjelman komennolla:

$sudo apt-get install equivs

Asennus kesti parikymmentä sekuntia.

Siirryin omaan kotihakemistooni ja tein metapaketti nimisen kansion työskentelyä varten:

$cd
$mkdir metapaketti
$cd metapaketti

Seuraavaksi tein metapaketin asetustiedoston pohjan equivs-control komennolla:

$equivs-control eliimatt-metapaketti.cfg

Siirryin editoimaan metapaketin asetustiedostoa nano editorilla:

$nano eliimatt-metapaketti.cfg

Lisäsin Package, Version, Depends ja Description kenttiin paketin luomiseen tarvittavat tiedot ja poistin
kommentinmerkin # näiden rivien alusta. Package kenttään tuli paketin nimi; Version kenttään versionumero; Depends kenttään metapaketissa asennettavat paketit ja Description kenttään kuvaus paketin sisällöstä. Valitsin tähän metapakettiin asennettaviksi ohjelmiksi graafisen diff työkalun meld, tekstieditorin geany sekä linja-analysaattorin wireshark. Tutkin asetustiedoston sisältöä grep komennon avulla, jolla sain
suodatettua pois kaikki kommenttirivit:

$grep -v '^#' eliimatt-meta.cfg

Paketin asetustiedoston sisältö oli seuraava:

Section: misc
Priority: optional
Standards-Version: 3.9.2

Package: eliimatt-metapaketti
Version: 0.1
Depends: meld,geany,wireshark
Description: eliimatt's basic tools 
 long description and info
 .
 second paragraph

Tein metapaketin komennolla:

$equivs-build eliimatt-metapaketti.cfg

Lopputuloksena sain  eliimatt-metapaketti_0.1_all.deb paketin.

Seuraavaksi asensin gdebi ja lintian työkalut paketin testaamista varten:

$sudo apt-get install gdebi lintian

Testasin ensiksi paketin oikeellisuutta lintian työkalulla komennolla:

$lintian eliimatt-metapaketti_0.1_all.deb

Lintian ilmoitti, että paketin ylläpitäjän sähköpostiosoite ei ole validi:

Muutin nano editorilla asetustiedoston Maintainer kenttään nimen sekä oikean sähköpostiosoitteen ja päivitin
Version kenttään 0.2 uudeksi versionumeroksi. Tein uuden version paketista equivs-build komennolla
ja testasin uutta pakettia lintian komennolla:

$nano eliimatt-metapaketti.cfg
$equivs-build eliimatt-metapaketti.cfg
$lintian eliimatt-metapaketti_0.2_all.deb

Tällä kertaa lintian tarkistus meni läpi ilman huomatuksia. Seruraavaksi kokeilin asentaa metapaketin gdebi komennolla:

$gdebi eliimatt-metapaketti_0.2_all.deb

Asennus onnistui ja ohjelmat ilmestyivät käynnistysvalikkoon. Käynnistin sieltä wireshark ohjelman ja totesin sen latautuvan:

Metapaketin digitaalinen allekirjoittaminen

Seuraavaksi päätin tehdä metapaketilleni digitaalisen allekirjoituksen. Aloitin tekemällä itselleni julkisen ja yksityisen avaimen parin gpg työkalulla:

$gpg --gen-key

Valitsin avaimen tyypiksi RSA and RSA, avaimen pituudeksi 2048 bittiä ja avaimen voimassaoloajaksi 10 vuotta.
Annoin avainparin nimeksi ja sähköpostiosoitteeksi samat kuin paketin asetustiedostossa. Komenttirivin jätin tyhjäksi.

Seuraavaksi muutin paketin asetustiedostosta versionumeroksi 0.3 ja tein uuden paketin käyttäen equivs-build työkalun
full asetusta (-f):

$nano eliimatt-metapaketti.cfg
$equivs-build -f eliimatt-metapaketti.cfg

Testasin vielä uutta versiota lintian työkalulla ja asensin sen gdebi työkalulla:

$lintian eliimatt-metapaketti_0.3_all.deb
$gdebi eliimatt-metapaketti_0.3_all.deb

Pakettivaraston tekeminen

Aloitin pakettivaraston tekemisen asentamalla reprepro työkalun.

$sudo apt-get install reprepro

Pakettivarasto tehtiin oman käyttäjätunnukseni public_html hakemistoon. Olin jo aikaisemin asentanut Apache palvelimen ja ottanut käyttöön käyttäjäkohtaiset public_html hakemistot, joten aloitin tekemällä kansion pakettivarastolle:

$cd
$cd public_html
$mkdir -p metapaketit/conf

Seuraavaksi tein pakettivaraston asetustiedoston komennolla:

$nano repository/conf/distributions

Tiedoston sisällöksi tuli:

Codename: precise
Components: main
Suite: precise
Architectures: i386 amd64 source

Sana precise viittaa Ubuntu versioon 12.04 Precise Pangolin. Seuravaksi tein DEB paketeille oman kansion ja kopioin oman  metapakettini sinne:

$mkdir eliimatt-meta
$cp ../metapaketti/eliimatt-metapaketti_0.3_all.deb eliimatt-meta/

Lisäsin metapaketin pakettivarastoon komennolla:

$reprepro -VVVV -b metapaketit/ includedeb precise eliimatt-meta/eliimatt-*.deb

Pakettivaraston käyttöönotto

Testasin pakettivaraston toimivuutta lisäämällä oman pakettivarastoni APT:n pakettilähteeksi komennolla:

$sudoedit /etc/apt/sources.list.d/repository.list

Asetustiedostoon lisättiin rivi:

deb http://192.168.xxx.xxx/~xxx/metapaketit precise main

HTTP-osoite viittaa tietokoneen omaan IP-osoitteeseen ja käyttäjätunnukseeni, jonka julkisessa public_html kansiossa pakettivarasto sijaitsee. Seuraavaksi päivitin pakettivarastot komennolla:

$sudo apt-get update

Lopuksi kokeilin asentaa oman metapakettini apt-get komennolla:

$sudo apt-get install eliimatt-metapaketti

Asennus onnistui ja totesin pakettivarastoni toimivan.

Käytetyt ohjelmistot

Geany http://www.geany.org/
Meld  http://meldmerge.org/
Wireshark http://www.wireshark.org/

Lähteet

DebianSick 2011. Creating metapackages with equivs.
http://www.debian-administration.org/users/DebianSick/weblog/1

Cowie, Jon 2011. Creating your own Signed APT Repository and Debian Packages
http://blog.mycrot.ch/2011/04/26/creating-your-own-signed-apt-repository-and-debian-packages/

Karvinen, Tero 2011a. Create deb metapackage in 5 minutes.
http://terokarvinen.com/2011/create-deb-metapackage-in-5-minutes

Karvinen, Tero 2011b. Update All Your Computers with a .DEB Repository.
http://terokarvinen.com/2011/update-all-your-computers-with-a-deb-repository

Karvinen, Tero 2012. Linux palvelimena ICT4TN003-4 kurssin kotisivu.
http://terokarvinen.com/2012/aikataulu-linux-palvelimena-ict4tn003-4-ja-ict4tn003-6-syksylla-2012

PurpleFloyd 2009. Signing .deb packages.
http://purplefloyd.wordpress.com/2009/02/05/signing-deb-packages/

About

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti.
http://www.gnu.org/licenses/gpl.html
Pohjana Tero Karvisen Linux-kurssi, www.iki.fi/karvinen


Seuraa

Get every new post delivered to your Inbox.