Linux kotitehtävä 4

Tämän viikon tehtävänantoon kuuluukin metapaketit ja niiden käsittely sekä kasaus.

Tehtävänanto kokonaisuudessaan:

h4:

– Tee metapaketti, joka asentaa suosikkiohjelmasi. Katso, että se menee läpi lintianista.

– Tee pakettivarasto repreprolla

– Paketoi jokin skriptisi, niin että paketti asentaa järjestelmän käyttäjille uuden käskyn

Vapaaehtoiset bonus-tehtävät:

– Kertaa Apachen asennus, käyttäjien kotisivujen teko ja lokin lukeminen

– Allekirjoita reprerolla tekemäsi varasto

Klo 13.30 Su

Metapaketin teko.

Ensitöikseni suoritin perinteiset toimenpiteet, eli päivitykset Ubuntuun kasaan ennen kaikkea muuta.

$ sudo apt-get update

$ sudo apt-get upgrade

Ja näin päivitykset kasassa. Koska en muistanut ulkoa miten metapaketti luodaan, seurasin T.Karvisen ohjetta nopeaan metapakettien luomiseen (http://terokarvinen.com/2011/create-deb-metapackage-in-5-minutes).

Tämän jälkeen seurasin ohjetta vaihe vaiheelta, luonnollisestikkin tähänkin matkaan mahtui virheitä mukaan mutta se kuuluu selkeästi asiaan kun asiaan meikäläisen säätäessä. Tämän jälkeen vuorossa oli equivs:in asennus komennolla:

$ sudo apt-get -y install equivs

Tämän jälkeen loin lähdetiedoston, jonka nimesin vastaavasti:

$ equivs-control kristiinas-ipknow.cfg

Tämän jälkeen avasin cfg tiedoston nanolla ja muokkasin ohjeen mukaan kohdat ”Package”, “Version” and “Depends”. Muistin jopa poistaa risuaidat muokattujen osuuksien edestä.

$ nano kristiinas-ipknow.cfg

Joka näyttää muokkauksen jälkeen tältä


Section: misc

Priority: optional

Standards-Version: 3.6.2

Package: kristiinas-ipknow

Version: 0.1

Depends: geoip-bin, gparted, nethack-console, gimp

Description:

long description and info

.

second paragraph

Lisäsin esimerkissä olleille paketeilla pari kaveria, nethackia on rummutettu kotona sen verran että täytyneen kokeilla sitäkin tässä kurssin ohella. Hyvä tekosyy siis asennella se mukaan.

Tämän jälkeen oli vuorossa paketin rakentaminen komennolla:

$ equivs-build kristiinas-ipknow.cfg

Uusi paketti on luotu. Tämän jälkeen testasin vielä että paketti varmasti toimii, komennolla:

$ sudo gdebi -n kristiinas-ipknow_0.1_all.deb

Huomasin ettei asennuksessa löytynyt gdebiä, joten edessä oli sen asentaminen.Ohjeessa tätä ei siis ollut, siksi tämä oli jäänyt huomiotta.

$ sudo apt-get install gdebi

Testasin uudelleen mutta Valitettavasti paukahti gdebi erroria edelleenkin ”gdebi error, file not found: kristiinas-ipknow_0.1_all.deb”, jonka mukaan tiedostoa ei löydy, vaikka sen juuri nanolla tsekkasin. Hetken pähkäilyn jälkeen kokeilin muuttaa komentoa hieman:

$ sudo gdebi -n kristiinas-ipknow.cfg_0.1_all.deb

Tämän pienen muutoksen jälkeen paketin testaus onnistui, tämä osoittaa sen että ohjeita seuraamalla silti tulee yllätyksiä tuon tuosta. Jostakin syystä ohjeiden esimerkissä tuo .cfg pääte puuttui komentoketjusta ja tästä syystä se ei ainakaan itsellä toiminut.

Seuraavaksi vuorossa oli katsastaa että miten tämä saataisiin menemään läpi lintianista, eli ensitöikseni vuorossa sen asentaminen:

$ sudo apt-get install lintian

Jonka jälkeen ajoin paketin lintianista läpi.

$ lintian kristiinas-metapaketti.cfg_0.1_all.deb

Lintian ilmoitti ensitöikseen että sähköposti ei ole validi eikä ylläpito-osoite. Eli uudelleen vaan nanottamalla pakettia auki ja korjaamaan virheitä.

 

Maintainer: Your Name <yourname@example.com> -> Kristiina Honkaheimo <kristiina.honkaheimo@myy.haaga-helia.fi>

Tämän jälkeen päivitin versionumeron nanolla

$ nano kristiinas-metapaketti.cfg_0.1_all.deb

Muutin versionumeron 0.1-> 0.2 ja tallensin muutokset. Tänäm jälkeen tein paketin uudelleen.

$ equivs-build kristiinas-metapaketti.cfg

Joka ilmoitti paketin luomisesta.

Tämän jälkeen testasin paketin toimivuuden

$ sudo gdebi -n kristiinas-ipknow.cfg_0.2_all.deb

Joka sitten ilmoitti korvaavansa vanhan version paketista uudella.

Tässä kohtaa nauroin lähinnä omille väsyneille aivoille, koska paketin uudelleen luominen oli täysin turha vaihe, en tiedä mikä aivopieru tuossa tapahtui mutta poistin ylimääräisen paketin kokonaan ettei se jäisi hämäämään minua.

$ rm kristiinas-metapaketti.cfg

Kaiken tämän jälkeen ajoin paketin lintianista läpi ja heittämällähän se menikin tällä kertaa.

$ lintian kristiinas-metapaketti.cfg_0.2_all.deb

Paketoi jokin skriptisi, niin että paketti asentaa järjestelmän käyttäjille uuden käskyn.

Skriptin teko, paketointi ja uuden komennon asentaminen sillä.

Koska tässä taloudessa kissat ovat valtiaita ja ihmiset palvelijoita, teen tämän skriptin tätä ajatusta kunnioittaen. Komentoa seuraa:

$ gedit meow_script

Jonka jälkeen lisäsin tekstitiedostoon nämä tiedot:

 

#!/bin/bash

# My meow script


echo ”Meow!”

Tallensin ja suljin tiedoston. Tämän jälkeen oli vuorossa ajo-oikeuden asettaminen skriptille komennolla:

$ chmod 755 meow_script

Tämän jälkeen testasin skriptiä ajamalla sen

$./meow_script

Ja komentavaa naukunaahan sieltä tuli!

Seuraavaksi vuorossa oli skriptin paketointi, joka meni malliin tämä:

$ equivs-control meow_script

Tuli paljon erroreita:

 

dh_testdir

dh_testroot

dh_prep

dh_testdir

dh_testroot

dh_install

dh_installdocs

dh_installchangelogs

parsechangelog/debian: warning:     debian/changelog(l1): badly formatted heading line

LINE: meow_script.cfg (0.1) unstable; urgency=low

parsechangelog/debian: warning:     debian/changelog(l2): found blank line where expected first heading

parsechangelog/debian: warning:     debian/changelog(l3): found change data where expected first heading

LINE:   * First version

parsechangelog/debian: error: Can’t call method ”as_string” on an undefined value at /usr/share/perl5/Dpkg/Changelog.pm line 250, <STDIN> line 5.

dpkg-parsechangelog: error: changelog parser /usr/lib/dpkg/parsechangelog/debian gave error exit status 255

dh_installchangelogs: changelog parse failure

make: *** [binary-indep] Error 255

Error in the build process: exit status 2

Kokeilin cfg. tiedoston muokkaamista ja korjaamista, lopulta lätkäisin alla olevan näköiset tiedot sinne:

 

Section: misc

Priority: optional

Standards-Version: 3.9.2

Maintainer: Kristiina H <kristiinaH@email.com>

Package: meow_script

Version: 0.1

Files: meow_script /usr/bin/

Description: Prints text

.

Shell script which outputs a text string

 

Ongelmista johtuen poistin kaikki ns. turhat kommentit tiedostosta, mutta silti samat errorit tulvivat ruutuun ja en vaan päässyt jyvälle että mistä kiikastaa…

Päätin tässä vaiheessa nakata tämän osuuden hetkeksi jäähylle ja siirtyä valinnaisiin tehtäviin.

Tee pakettivarasto repreprolla.

Allekirjoita reprerolla tekemäsi varasto

Tämäkin toimepide alkaa yksinkertaisesti reprepron lataamisella ja asennuksella

$ sudo apt-get install reprepro

Klo 19.00

Tähän vaiheeseen on pakko lopettaa ja jatkan tehtävää myöhemmin. Artikkeli on siis julkaistu keskeneräisenä, mutta sitä täydennetään myöhemmin.

 

24.2 Ma klo 13.30

Hiihtoloman jälkeen näkee kuin näkeekin asiat uusin silmin, sääli ettei aikaa korjauksiin ole juurikaan. Noh sen siitä saa kun joutuu tienpäälle viikoksi.

 

Ajatusvirhe tapahtui paketin luomisen kanssa, komento ”$ equivs-control meow_script” vaan ylikirjoittaa ko. tiedoston eikä tee pakettia ollenkaan. Eipä siis ole ihme ettei homma toiminut. Loin kokonaan uuden conffin equivs-controllilla, muokkasin sisällöt uudelleen ja tämän kaiken jälkeen ajoin sen vielä läpi lintianista. Eli versionumero oikeaksi (0.2) omistaja kristiinaH <kristiinah@email.com> ja Files: meow_script /usr/bin. Tämän jälkeen paketin päivitys/uudelleen luonti

$equivs-build meow.cfg

Läpi lintianista:

$ lintian meow_0.2_all.deb

Lintian antoi varoituksen manpagen puuttumisesta, mutta se oli vain varoitus.

Seuraavana olisi vuorossa se reprepro mutta asennusta enempää en kerennyt siihen koskemaan, koska alkaakin olla jo aika liikkua Linux palvelimena oppintunneille.

 

Lähteet:

2 ajatusta artikkelista “Linux kotitehtävä 4

  1. […] Elli Suhonen, Linux kotitehtävä 4: http://ellisuhonen.wordpress.com/2013/09/25/paketin-hallintaa-ja-metapaketteja/ […]

Jätä kommentti