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