tiistai 5. maaliskuuta 2013

Tehtävä 6 - Metapaketit

Tämän viikon tehtävänä oli luoda deb-paketti, joka asentaa tekemäni shell skirptin. Tehtävänä oli myös allekirjoittaa paketit tai varasto.

Käytin tehtävässä HP Elitebook 2560p läppäriä ja Xubuntu 12.10. live-usb tikkua.

Metapaketti

Aluksi muutin näppäimistöni suomeksi, ja asensin tarvittavat päivitykset.

setxkbmap fi
sudo apt-get update

Aloitin luomalla hakemiston metapakettikokeiluilleni. Kansioon tein tulevaa varten hakemistot conf ja otto-code.

mkdir metapaketit
mkdir conf
mkdir otto-code

Seuraavaksi asensin equivs-ohjelman deb-tiedostojen tekoon

sudo apt-get install equivs
cd metapaketit/otto-code
equivs-control otto-code.cfg
nano otto-code.cfg


Tiedoston sisällöksi tuli
 
# Source: <source package name; defaults to package name>
Section: misc
Priority: optional
# Homepage: <enter URL here; no default>
Standards-Version: 3.9.2
Package: otto-code
Version: 1.0
Maintainer: Your Name <yourname@example.com>
# Pre-Depends: <comma-separated list of packages>
Depends: apache2, gimp, enigmail, gufw, curl,
Recommends: php5-server, thunderbird, chromium
# Suggests: <comma-separated list of packages>
# Provides: <comma-separated list of packages>
# Replaces: <comma-separated list of packages>
# Architecture: all
# Copyright: <copyright file; defaults to GPL2>
# Changelog: <changelog file; defaults to a generic changelog>
# Readme: <README.Debian file; defaults to a generic one>
# Extra-Files: <comma-separated list of additional files for the doc directory>
# Files: <pair of space-separated paths; First is file to include, second is destination>
#  <more pairs, if there's more than one file to include. Notice the starting space>
Description: <short description; defaults to some wise words>
 long description and info


Halusin metapakettini asentavan joitain ohjelmia, kuten apache-weppipalvelimen ja enigmail-sähköpostinkrytptausohjelman.

 
Seuraavaksi käänsin cfg-tiedostoni varsinaiseksi metapaketiksi

equivs-build otto-code.cfg

Sain luotua paketin nimeltä otto-code_1.0_all.deb

Halusin kokeilla pakettini pätevyyden lintian-ohjelmalla.

sudo apt-get install lintian
lintian -c otto-code_1.0_all.deb

En saanut virheilmoituksia.

Repository

Siirryin tekemään varastoani jo valmiiksi luotuun "metapaketit" kansioon.
Hakemistoon olin valmiiksi luonut kansion "conf"

cd metapaketit/conf
nano distributions

Tiedoston sisällöksi tuli

Origin: Otto
Label: Metal
Suite: stable
Codename: Quantal
Version: 3.1
Architectures: i386 amd64 source
Components: main non-free contrib
Description: Your description




Seuraavaksi asensin reprepro-ohjelman ja lisäsin otto-code deb pakettini varastoon

sudo apt-get install reprepro
sudo reprepro -VVVV -b metapaketit/ includedeb Quantal otto-code/otto-*.deb

Lopuksi asensin varaston palvelimelle

sudoedit /etc/apt/sources.list.d/repository.list deb http://10.0.0.1/~xubuntu/repository Quantal main

Lopuksi päivitin pakettini ja kokeilin asentaa metapakettini

sudo apt-get update
sudo apt-get install otto-code

Paketti asentui onnistuneesti.

Shell skripti

Siirryin shell skriptin tekoon. Asensin "gedit" ohjelman, ja tein sillä tiedoston "skripti". Skriptin funktioksi tuli tyhjentää terminaali, ja tulostaa teksti "Shell Skripti!"

sudo apt-get install gedit
gedit skripti

    #!/bin/bash
    clear
    echo "Shell Skripti!"


chmod 755 skripti

Kokeilin skriptiä komennolla ./skripti ja totesin sen toimivaksi.

Jotta saisin skriptini sisällytettyä metapakettiini, siirryin muokkaamaan alkuperäistä otto-code.cfg tiedostoa. Muutin tiedostossa "files" kohtaa.
Files: skripti metapaketit/otto-code

Pakettini meni lintianista yhä läpi.

Paketin allekirjoitus

Siirryin tekemään julkisen ja yksityisen avaimen metapaketilleni. Valitsin salaustyypiksi RSAn

gpg --gen-key





Valitsin oletuspituuden salasanalle, eli 2048. Asetin myös oletuksesta sen, ettei salasana vanhennu.

Ajoin ohjelman loppuun saakka onnistuneesti.

Päivitin vielä cfg tiedostostani uuden versionumeron 1.1 ja ajoin equivs-ohjelman läpi. Ajoin pakettini vielä lintianin läpi testiksi

lintian code-otto_1.1_all.deb

Lintian ei antanut virheitä.


Lopputulos

Sain metapaketin tehtyä ja salattua. Sain myös tehtyä shell skriptin. Shell skriptin toimivuudesta en mene täyteen takuuseen, sillä tietämykseni aiheesta on kohtuullisen suppea.

Tehtävään kului kaiken kaikkiaan noin 4.5 tuntia.

Lähteet:

http://terokarvinen.com/2011/update-all-your-computers-with-a-deb-repository
http://www.geogebra.org/forum/viewtopic.php?f=20&t=25603
http://linuxcommand.org/writing_shell_scripts.php