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:
-
Karvinen, Tero 2014. Linux palvelimena ICT4TN003-12 kurssin kotisivu.
-
http://terokarvinen.com/2012/aikataulu-linux-palvelimena-ict4tn003-4-ja-ict4tn003-6-syksylla-2012
-
Deb-paketin luominen Xubuntu 12.04:ssa ja Dependicerin testaus
-
http://terokarvinen.com/2011/create-deb-metapackage-in-5-minutes
-
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 Karvinen 2012: Linux kurssi, http://terokarvinen.com