Linux palvelimena: Kotitehtävä 6 – Metapaketin luonti (.deb packet) ja allekirjoitus sekä repositoryn luonti

Tämän viikon kotitehtävät:

Tero Karvinen says:

Valitse kaksi näistä
a) Tee deb-paketti, joka asentaa tekemäsi shell scriptin
b) Tee deb-paketti, joka muuttaa toisen paketin asetustiedostoa (divert, vaikea)
c) Allekirjoita paketit tai varasto
d) Etsi wepistä vanha “Linux palvelimena” koe ja ratkaise se
e) Kokeile PupeSoftia Ubuntulla

Tehtävien tekoon käytetty kone oli:

Haaga-Helian opiskelijoille lainattu kannettava
HP EliteBook 2560p (XB208AV)
Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz
8 GiB System Memory
Käyttöjärjestelmä:
Distributor ID: Ubuntu
Description: Ubuntu 12.10
Release: 12.10 (Lataa distro tästä)
Codename: quantal

Shell script:

Aloitin tehtävän luomalla shell skriptin joka tulee metapaketin sisään ja asentuu automaattisesti.

Scripti kerää kaikenlaista tietoa käyttäjän koneesta ja tekee niistä HTML sivun.

Loin skriptin gedit ohjelmalla ja se toimii komennolla:

$ ./make_page > index.html

jolloin siis skripti luo index.html nimisen tiedoston, jonka sisältö on  minulla tämän näköistä:

koneentiedot

Ohjeet skriptin tekoon ja muutenkin todella hyvä tutotrial shell skriptien maailmaan: http://linuxcommand.org/writing_shell_scripts.php

Metapacket:

Aloitin päivittämällä paketinhallinnan

$ sudo apt-get update

$ sudo apt-get intsall equivs #asennetaan equivs ohjelman jolla pakettien teko onnistuu

$ equivs-control tapio-packet #tehdään control tiedosto jonka sisältöä muutetaan, että saadaan toimiva paketti

control tiedoston sisältö:

### Commented entries have reasonable defaults.
### Uncomment to edit them.
# Source: <source package name; defaults to package name>
Section: misc
Priority: optional
Homepage: tapionaumanen.wordpress.com
Standards-Version: 3.9.2

Package: tapio-packet
Version: 1.5
Maintainer: Tapio Naumanen tapionaumanen@myy.haaga-helia.fi
# Pre-Depends: <comma-separated list of packages>
Depends: vlc, gedit, gimp, libreoffice, apache2, openssh-server, equivs, gdebi, gparted, pwgen
# Depends kohtaan ohjelmat jotka halutaan asentaa
# Recommends: <comma-separated list of packages>
# 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: make_page /bin
# Files kohtaan tiedoston nimi joka halutaan sisällyttää pakettiin ja kohde jonne se halutaan purkaa.
#  <more pairs, if there's more than one file to include. Notice the starting space>
Description: Paketti asentaa käyttöösi shell scriptin jolla voit kerätä tietokoneesi tietoja html tiedostoon. Aja skripti komennolla make_page > haluamasi html tiedoston nimi

Kun siis halutaan sisällyttää jokin tiedosto pakettiin tulee sisällytettävän tiedoston olla samassa paikassa jossa control file sijaitsee, kuten alla:

taapsa@taapsa-EliteBook:~/metapaketti$ ls
make_page  tapio-packet  tapio-packet_1.5_all.deb

Nyt voidaan kokeilla, että asentuuko paketti. Ensikis pitää ladata gdebi työkalu jolla on helppo asennella .deb paketteja.

$ sudo apt-get install gdebi

$ sudo gdebi tapio-packet_1.5_all.deb #tarvitaan sudo oikeudet, että voidaan asentaa ohjelmia.

taapsa@taapsa-EliteBook:~/metapaketti$ sudo gdebi tapio-packet_1.5_all.deb
Reading package lists... Done
Building dependency tree
Reading state information... Done
Building data structures... Done
Building data structures... Done

Requires the installation of the following packages:
gimp  gimp-data  gparted  libamd2.2.0  libbabl-0.1-0  libblas3  libblas3gf  libgail18  libgegl-0.2-0  libgimp2.0  libilmbase6  libjavascriptcoregtk-1.0-0  libopenexr6  libumfpack5.4.0  libwebkitgtk-1.0-0  libwebkitgtk-1.0-common  ncurses-term  openssh-server  pwgen  ssh-import-id
Paketti asentaa käyttöösi shell scriptin jolla voit kerätä tietokoneesi tietoja html tiedostoon. Aja skripti komennolla make_page > haluamasi html tiedoston nimi
Do you want to install the software package? [y/N]:y

Hyvin toimii. Paketti siis asentaa ohjelmat jotka on määritetty depends kohtaan ja lopuksi vielä asentaa käyttöön shell skriptin /bin kansioon. Tämä tarkoittaa siis sitä, että skripti voidaan ajaa tavallisen komennon tapaan terminaalissa esim. man_page > index.html Eli ei tarvitse enään laittaa ”./” eteen jotta skripti toimisi.

Lopuksi tarkistin vielä, että paketti menee lintianista läpi ilman ongelmia.

$ sudo apt-get install lintian #asennetaan lintian ohjelma

$ lintian tapio-packet_1.5_all.deb #tarkistetaan paketti

Seuraavat varoitukset ja virheet ilmenivät:

W: tapio-packet: syntax-error-in-debian-changelog line 5 "badly formatted trailer line"
W: tapio-packet: syntax-error-in-debian-changelog line 5 "found eof where expected more change data or trailer"
W: tapio-packet: description-too-long
E: tapio-packet: extended-description-is-empty
E: tapio-packet: maintainer-name-missing Tapio Naumanen tapionaumanen@myy.haaga-helia.fi
E: tapio-packet: maintainer-address-malformed Tapio Naumanen tapionaumanen@myy.haaga-helia.fi
Use of uninitialized value $name in pattern match (m//) at /usr/share/lintian/lib/Lintian/Check.pm line 202.
W: tapio-packet: bad-homepage tapionaumanen.wordpress.com
W: tapio-packet: binary-without-manpage bin/make_page

Eli jonkun verran vielä pitää muokata control tiedostoa. Avasin tapio-packet tiedoston uudestaan ja muokkasin tiedoston uuteen uskoon.

### Commented entries have reasonable defaults.
### Uncomment to edit them.
# Source: <source package name; defaults to package name>
Section: misc
Priority: optional
Homepage: https://tapionaumanen.wordpress.com/
Standards-Version: 3.9.2

Package: Oma-packet
Version: 2
Maintainer: Tapio Naumanen <tapionaumanen@myy.haaga-helia.fi>
# Pre-Depends: <comma-separated list of packages>
Depends: vlc, gedit, gimp, libreoffice, apache2, openssh-server, equivs, gdebi, gparted, pwgen
# Depends kohtaan ohjelmat jotka halutaan asentaa
# Recommends: <comma-separated list of packages>
# 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: make_page /bin
# Files kohtaan tiedoston nimi joka halutaan sisällyttää pakettiin ja kohde jonne se halutaan purkaa.
#  <more pairs, if there's more than one file to include. Notice the starting space>
Description: Paketti asentaa käyttöösi shell scriptin ja ohjelmia.
long description and info
.
Shell scriptillä voit kerätä tietokoneesi tietoja html tiedostoon.
Aja skripti komennolla: make_page > haluamasi_tiedson_nimi.html

Tein uuden paketin ja ajoin lintianin uudestaan uudella paketilla.

$ equivs-build tapio-packet #luodaan uusi paketti

$ lintian oma-packet_2_all.deb #tarkisteaan paketti lintianilla
W: tapio-packet: binary-without-manpage bin/make_page

Enään tuli yksi varoitus koskien shell skriptiä. Varoitus johtuu siitä, että en ole luonu manuaali sivua skriptille. En sitä aijo tehdä koska paketti tulee vain omaan käyttöön ja ohjeistus skriptin käyttöön tulee kun paketti asennetaan.

Packet signature:

Luodaan GPG avain, jolla voidaan allekirjoitella paketit.

$ gpg --gen-key #komento käynnistää avaimen luonnin, valitsin kohdan yksi

Seurasin ohjeita joita ohjelma antoi ja avain oli hetkessä luotu.

Seuraavaksi tulisi luoda ASCII pohjainen julkinen avain, jos tarkoituksena on, että paketti jaetaan webissä myös muille käyttäjille. Minä en tätä tee, joten en luo julkista avainta nyt. Siirrytään suoraan paketin allekirjoitukseen.

$ sudo apt-get install dkpg-sig #asennetaan ohjelma jolla allekirjoitukset tehdään

$ dpkg-sig --sign builder oma-packet_2_all.deb #allekirjoittaa paketin aikaisemmalla RSA avaimella joka luotiin. builder sana viittää siihen, että paketin on allekirjoittanut paketin luoja.

Processing oma-packet_2_all.deb...

You need a passphrase to unlock the secret key for
user: "Tapio Naumanen <tapio.naumanen@myy.haaga-helia.fi>"
2048-bit RSA key, ID CC466645, created 2013-03-10

Signed deb oma-packet_2_all.deb

Voidaan vielä tarkastella, että allekirjoitus tosiaan on olemassa. Käytetään strings komentoa.

$ strings oma-packet_2_all.deb

lopusta löytyy tiedot allekirjoituksesta:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Version: 4
Signer:
Date: Sun Mar 10 17:03:28 2013
Role: builder
Files:
3cf918272ffa5de195752d73f3da3e5e 7959c969e092f2a5a8604e2287807ac5b1b384ad 4 debian-binary
2c1579b511308d4605f82192aeb61fdb f758acf440b65089d278d305bca91da0b53498c8 684 control.tar.gz
73615671ea8a15fa262a0038c6c5d250 f8613e7b49c04ff63b55f014eedca2ecf5b497fd 2246 data.tar.gz
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iQEcBAEBAgAGBQJRPKDAAAoJEKSIOOzMRmZFZsAIAISbsNgfW2F5P8lPsqfPtvBn
Nou3VniR481kQnfJKCANGIjJXq+CGdkwzxYdOWMBqC90A8PeDlZ2NpmSpYCDFnov
bgtH2V/ayWamOomN7vR8vmPI/uGI+Xy3mb5wE+SQOPkITcyzYoLwBUzQo7JcbxpC
+VSaOrcHkg6wBWzEied72lE2Y1GICruhBngLw/T1AVpAOToZ5C5+NHRJ3spKu6VD
At1nsusFzsvGkonwxAsR8VwY6Lzr/pS/ZRaIPConSbDJpix46SP5DvwjFQ/QLs6Y
tWGoqi73o7iS4W5mjyiAXBOrc8TICcRLCalKxzAoEbLr96h8zCtyfEgSW/rgJrE=
=J76P
-----END PGP SIGNATURE-----

Repository:

Asennetaan reprepro, jolla varasto luodaan.

$ sudo apt-get install reprepro

Luodaan public_html kansion sisään repository kansio, jonne tulee conf kansio jonka sisään conf tiedosto. Näin saadaan repository julkiseksi.

$ cd /home/taapsa/public_html
$ mkdir repo
$ mkdir repo/conf
$ nano repo/conf/distributions
Origin: oma-packet 
Label: paketti repository 
Codename: quantal 
Architectures: i386 amd64 source 
Components: main 
Description: Tapion paketti repo. Tärkeät ohjelmat ja shell scripti 
SignWith: yes 
Pull: quantal

Nyt vielä lisätään repositoryyn paketin tiedot reprepron avulla.

$ cd /home/taapsa/public_html/repo
$ reprepro -Vb . includedeb quantal /home/taapsa/meta/oma-packet_2_all.deb

Jos reprepro meni puhtaasit läpi pitäisi repository kansion sisältö olla nyt seuraavanlainen:

taapsa@taapsa-EliteBook:~/public_html/repo$ ls -l
total 16
drwxrwxr-x 2 taapsa taapsa 4096 Mar 12 22:08 conf
drwxrwxr-x 2 taapsa taapsa 4096 Mar 12 22:13 db
drwxrwxr-x 3 taapsa taapsa 4096 Mar 12 22:13 dists
drwxrwxr-x 3 taapsa taapsa 4096 Mar 12 22:13 pool

Jotta paketti löytyisi apt-getillä pitää lisätä vielä sources.listiin paketin polku.

$ sudo nano /etc/apt/sources.list

Listan loppuun lisätään

deb http://localhost/~taapsa/repo/ quantal main
deb-src http://localhost/~taapsa/repo/ quantal main

Ajetaan

$ sudo apt-get update

Etsitään oma paketti apt:stä

taapsa@taapsa-EliteBook:~$ sudo apt-cache search oma-packet
oma-packet - Paketti asentaa käyttöösi shell scriptin ja ohjelmia.

Lähteet:

Tätä kirjoitusta saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti.
http://www.gnu.org/licenses/gpl.html

Mainokset

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s

%d bloggers like this: