Lähde: http://terokarvinen.com/2013/aikataulu-%E2%80%93-linux-palvelimena-ict4tn003-11-ja-12-kevaalla-2014
Harjoitusympäristö:
HP Compaq 8200 Elite CMT PC
Intel Core i5-2400 3.10GHz
8GB RAM
64-bit
Käytetyt ohjemat/työkalut:
-equivs
-gdebi
-lintian
-reprepro
Mikä on metapaketti?
"It is a package that only exists to supply random information or link to other packages to form a collection."Lähde: http://forums.debian.net/viewtopic.php?f=30&t=75656
Eli se on paketti, joka on olemassa ainoastaan antaakseen satunnaista informaatiota tai linkittää toisiin paketteihin muodostaakseen kokoelman. öhömph..
"a meta package is a Debian package that simply tells the package manager to download a whole bunch of other packages. Meta packages are useful for allowing for the quick installation of an entire group of packages."
Lähde: http://jeffhoogland.blogspot.fi/2011/08/howto-create-debian- meta-package.html
Hieman selkeämpi selitys. Ja sitten googlaus "How to create a metapackage". Ja ensimmäinen hakutulos löytyy askubuntu.com-sivustolta:
Lähde: http://askubuntu.com/questions/33413/how-to-create-a-meta-package-that-automatically-installs-other-packages
Creating a metapackage with equivs
"Tee metapaketti, joka asentaa suosikkiohjelmasi. Katso, että se menee läpi lintianista."
Sivuston mukaan metapaketin voi luoda equivs-nimisen työkalun avulla, joka luo paketin ainoastaan pelkällä riippuvaisuus-informaatiolla. Seuraan ohjeita. Ensiksi tehdään metapaketti-niminen hakemisto kotikansiooni, jonka jälkeen siirryn luomaani hakemistoon.
$ mkdir metapaketti
$ cd metapaketti
Nyt minun pitää asentaa equivs-ohjelma.
$ sudo apt-get install equivs
Loin equivs-ohjelman komennolla metapaketti-paketin
konffaus-tiedoston, jonka jälkeen siirryin muokkaamaan sitä nano-tekstieditorilla.
$ equivs-control metapaketti.cfg
$ nano metapaketti.cfg
Avatessani metapaketti.cfg-tiedoston nano-tekstieditorilla aloin
täyttämään sinne metapaketin asentamiseen liittyviä tietoja.
Package: <metapaketti>
Depends: munin, libreoffice
Description: Tämä paketti asentaa seuraavat ohjelmat: munin, libreoffice
Tämän jälkeen komensin equivs-ohjelman rakentamaan metapaketti.cfg-tiedoston:
$ equivs-build metapaketti.cfg
Ei mennyt läpi ennenkuin poistin "Package"-kohdasta "<>" -merkit.
Package: metapaketti
Depends: munin, libreoffice
Description: Tämä paketti asentaa seuraavat ohjelmat: munin, libreoffice
The package has been created.
Attention, the package has been created in the current directory,
not in ".." as indicated by the message above!
Nyt katsoin mallia Teron blogista, jossa lopuksi kehotettiin testaa-
maan metapaketin luonnin onnistumista. edellinen komentohan oli luonut
kyseiseen kansioon metapaketti_1.0_all.deb -nimisen paketin. Testaus siis
tehtiin kohdistamalla seuraava komento juuri mainittuun .deb-tiedostoon.
$ sudo gdebi -n metapaketti_1.0_all.deb
Mikä on gdebi? woot?
Komento ei onnistunut ja tuli ilmoitus "sudo: gdebi: command not found".
Googlasin hieman ja sain selville, että kyseessä on paketti-installeri-ohjelma. Koitin ladata
sen mututuntumalla:
$ sudo apt-get install gdebi
...ja sieltähän se tuli heti alas. Asennettuani gdebin kokeilin uudestaan.
$ sudo gdebi -n metapaketti_1.0_all.deb
O
hjelma lähti lataamaan ubuntun sivuilta paketteja ja asensi munin- ja libreoffice-ohjelmiston
automaattisesti koneelle. Kätevää. METAPAKETTI LUOTU.
Metapaketin laadun tarkistus: Lintian
Lopuksi tarkistetaan metapaketin laatu käyttämällä siihen luotua lintian-ohjelmaa.
(Jos paketissa on jotain vialla kun lisää -i kertoo se sen yksityiskohtaisemmin).
$ lintian -i metapaketti_1.0_all.deb
xubuntu@xubuntu:~/metapaketti$ lintian -i metapaketti_1.0_all.deb E: metapaketti: debian-changelog-file-contains-invalid-email-address xubuntu@xubuntu N: N: The changelog file contains an invalid email address: the domain needs N: at least one dot. This looks like a mistake. N: N: Severity: important, Certainty: certain N: N: Check: changelog-file, Type: binary N: E: metapaketti: maintainer-address-malformed Live session user <xubuntu@xubuntu> N: N: The maintainer field could not be parsed according to the rules in the N: Policy Manual. N: N: Refer to Debian Policy Manual section 5.6.2 (Maintainer) for details. N: N: Severity: serious, Certainty: certain N: N: Check: fields, Type: binary, udeb, source N:
Katsomalla lintian-ohjelman manuaalia komennolla $ man lintian löydän linkin selaimen kautta
luettavaan lintian-manuaaliin hakemistossa file:/usr/share/doc/lintian/lintian.html/index.html.
Avaaman tämän firefox-selaimessa ja selviää, että E (Errors) tarkoittaa:
The displayed message indicates a policy violation or a packaging error. For policy violations, Lintian will cite the appropriate policy section when it is invoked with the
-i
option.
ja N (Notes) tarkoittaa.
The displayed message is a debugging message which informs you about the current state of Lintian.
Ohjelma siis antoi minulle error-ilmoituksen siitä, että minulla ei ole paketissa
validia sähköpostiosoitetta mikä pitääkin paikkansa, koska en sinne mitään lisännyt
alunperinkään ja toinen error viittaa "Live Session User"-käyttäjään. "The maintainer
field could not be parsed according to the rules on the Policy Manual."
Tee pakettivarasto repreprolla
"Tee pakettivarasto repreprolla"
Mikä on reprepro?
"Reprepro is a tool for managing APT repositories. It's definitely much more versatilethan the simple script update-repository that we have been using before."
LÄHDE: https://wikitech.wikimedia.org/wiki/Reprepro
Mikä on pakettivarasto?
"Pakettivarastoja käyttämällä voidaan automatisoida ohjelmapakettien asentaminen ja päivittäminen sekä tietojen etsiminen asentamattomista paketeista. Pakettivarasto voi sijaita esimerkiksi Internetissä HTTP- tai FTP-palvelimella, verkkolevyllä, CD- tai DVD-levyllä tai paikallisella kiintolevyllä."
LÄHDE: http://linux.fi/wiki/Pakettivarasto
Ensimmäiseksi lataan ja asennan työasemalle reprepro-ohjelman.
$ sudo apt-get install reprepro
....Processing triggers for man-db ...Jostain syystä ohjeissa neuvottiin tekemään "public_html"-kansio kotikansiooni ja tämän jälkeen piti siirtää/kopioida aikaisemmin luotu "metapaketti_1.0_all.deb"-tiedosto siihen.
Setting up libpth20 (2.0.7-16ubuntu3) ...
Setting up libgpgme11 (1.2.0-1.4ubuntu2) ...
Setting up reprepro (4.8.2-1build1) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
xubuntu@xubuntu:~/metapaketti$
$ cp metapaketti_1.0_all.deb ~/public_html
Täytyi luoda repository/conf-kansio, jonne lisätä asetustiedosto distributions.
$ mkdir -p repository/conf
$ nano repository/conf/distributions
Ohjeiden mukaan distributions-tiedostoon piti lisätä seuraavat tiedot:
Ohjeiden mukaan minulla täytyi myös olla asennettuna apache-webbipalvelin tehtävän suoritusta varten (ja siinä piti olla käyttäjien kotisivut enabloituna), joten asensin sen tässä vaiheessa komennolla $ sudo apt-get install apache2
Seurasin omaa aikaisemmin tekemääni LAMP-asennusharjoitusta virkistääkseni muistiani. Tein käyttäjien kotisivujen enabloinnin $ sudo a2enmod userdir , jonka jälkeen käynnistin apache-serverin uudelleen, jotta muutokset tulisivat voimaan. (Selvitin myös oman ip osoitteeni komennolla $ ip addr huvin vuoksi ja näin että se oli 172.28.9.78)
****
Lisäsin tekemäni deb-paketin (metapaketti_1.0_all.deb) reprepro-ohjelman komennon avulla varastointipaikkaan.
"repository"-listaan.
$ sudo nano /etc/apt/sources.list.d/repository.list deb http://localhost/~xubuntu/repository lucid main
Testasin oliko luomani metapaketin lisääminen pakettivarastolistalle onnistunut kokeilemalla asentaa paketin pakettiasennuskomennolla.
$ sudo apt-get update (pakettitietojen päivitys)
$ sudo apt-get install metapaketti
Pakettivaraston tekeminen ja lisääminen repository-listaan oli onnistunut, koska komento oli käynyt tarkastamassa päivittämäni pakettilistat ja löytänyt sieltä "metapaketti"-nimisen metapaketin. Metapaketti oli jo kuitenkin asennettu koneelle aikaisemmin tässä harjoituksessa, joten sitä ei ollut järkeä asentaa uudelleen (komennolla
$ nano repository/conf/distributions Codename: lucid Components: main Suite: lucid Architectures: i386 amd64 source
Ohjeiden mukaan minulla täytyi myös olla asennettuna apache-webbipalvelin tehtävän suoritusta varten (ja siinä piti olla käyttäjien kotisivut enabloituna), joten asensin sen tässä vaiheessa komennolla $ sudo apt-get install apache2
Seurasin omaa aikaisemmin tekemääni LAMP-asennusharjoitusta virkistääkseni muistiani. Tein käyttäjien kotisivujen enabloinnin $ sudo a2enmod userdir , jonka jälkeen käynnistin apache-serverin uudelleen, jotta muutokset tulisivat voimaan. (Selvitin myös oman ip osoitteeni komennolla $ ip addr huvin vuoksi ja näin että se oli 172.28.9.78)
****
Lisäsin tekemäni deb-paketin (metapaketti_1.0_all.deb) reprepro-ohjelman komennon avulla varastointipaikkaan.
xubuntu@xubuntu:~/public_html$ reprepro -VVVV -b repository/ includedeb lucid /home/xubuntu/metapaketti/metapaketti_1.0_all.debSitä varten, että clientit/käyttäjät voisivat asentaa pakettivaraston koneelleen clientin täytyi ajaa seuraava komento, joka lisää kyseisen repositoryn
Created directory "repository//db"
/home/xubuntu/metapaketti/metapaketti_1.0_all.deb: component guessed as 'main'
Created directory "repository//pool"
Created directory "repository//pool/main"
Created directory "repository//pool/main/m"
Created directory "repository//pool/main/m/metapaketti"
Adding reference to 'pool/main/m/metapaketti/metapaketti_1.0_all.deb' by 'lucid|main|i386'
Adding reference to 'pool/main/m/metapaketti/metapaketti_1.0_all.deb' by 'lucid|main|amd64'
Exporting indices...
Created directory "repository//dists"
Created directory "repository//dists/lucid"
Created directory "repository//dists/lucid/main"
Created directory "repository//dists/lucid/main/binary-i386"
looking for changes in 'lucid|main|i386'...
creating 'repository//dists/lucid/main/binary-i386/Packages' (uncompressed,gzipped)
Created directory "repository//dists/lucid/main/binary-amd64"
looking for changes in 'lucid|main|amd64'...
creating 'repository//dists/lucid/main/binary-amd64/Packages' (uncompressed,gzipped)
Created directory "repository//dists/lucid/main/source"
looking for changes in 'lucid|main|source'...
creating 'repository//dists/lucid/main/source/Sources' (gzipped)
xubuntu@xubuntu:~/public_html$
"repository"-listaan.
$ sudo nano /etc/apt/sources.list.d/repository.list deb http://localhost/~xubuntu/repository lucid main
Testasin oliko luomani metapaketin lisääminen pakettivarastolistalle onnistunut kokeilemalla asentaa paketin pakettiasennuskomennolla.
$ sudo apt-get update (pakettitietojen päivitys)
$ sudo apt-get install metapaketti
Pakettivaraston tekeminen ja lisääminen repository-listaan oli onnistunut, koska komento oli käynyt tarkastamassa päivittämäni pakettilistat ja löytänyt sieltä "metapaketti"-nimisen metapaketin. Metapaketti oli jo kuitenkin asennettu koneelle aikaisemmin tässä harjoituksessa, joten sitä ei ollut järkeä asentaa uudelleen (komennolla
$ sudo gdebi -n metapaketti.1.0_all.deb
). Eihän siihen ollut tullut päivityksiäkään.xubuntu@xubuntu:~/metapaketti$ sudo apt-get install metapaketti
Reading package lists... Done
Building dependency tree
Reading state information... Done
metapaketti is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 207 not upgraded.
***** ***** ***** ***** *****
Skriptin paketointi järjestelmän käyttäjille
"Paketoi jokin skriptisi, niin että paketti asentaa järjestelmän käyttäjille uuden käskyn"
Ensimmäiseksi loin tekstitiedoston nimeltä "h4-skripti" nano-tekstieditorilla.
$ nano h4-skripti
Lisäsin sisällöksi muutamia komentoja:
#!/bin/bash
#tyhjentää näkymän
clear
#kirjoittaa tekstin ruutuun
echo "Hei tämä on uusi käsky, jonka metapaketti asensi sinulle äsken ja kertoo sinulle vapaan levytilan."
# vapaan levytilan määrä-komento
df -h
Tämän jälkeen annoin skriptille oikeudet suoriutumiseen järjestelmässä ja kokeilin skriptin suorittamista "./"-komennolla. Komento palautti vihreällä olevan.
$ chmod a+x
$ ./h4-skripti
Hei tämä on uusi käsky, jonka metapaketti asensi sinulle äsken ja kertoo sinulle vapaan levytilan.
Filesystem Size Used Avail Use% Mounted on
/cow 2.0G 375M 1.6G 20% /
udev 2.0G 4.0K 2.0G 1% /dev
tmpfs 394M 1.3M 393M 1% /run
/dev/sr0 834M 834M 0 100% /cdrom
/dev/loop0 803M 803M 0 100% /rofs
none 4.0K 0 4.0K 0% /sys/fs/cgroup
tmpfs 2.0G 48K 2.0G 1% /tmp
none 5.0M 4.0K 5.0M 1% /run/lock
none 2.0G 80K 2.0G 1% /run/shm
none 100M 24K 100M 1% /run/user
/dev/sdb1 7.5G 5.5G 2.1G 74% /media/xubuntu/USB DISK
Nyt minun piti keksiä miten saan sen liitettyä pakettivarastoon niin, että se asentuu komennoksi paketin lataajan järjestelmään. Paketin asennuksessa pitäisi varmaankin saada siirrettyä luomani h4-skripti kohdejärjestelmän hakemistoon /usr/bin/local , jossa se aktivoituu ajettavaksi komennoksi $ h4-skripti.
hmhh...Lähteitä:
http://askubuntu.com/questions/33413/how-to-create-a-meta-package-that-automatically-installs-other-packages
http://linux.fi/wiki/Deb-paketin_tekeminen
http://blog.perttu.im/2013/09/linux-palvelimena-kotitehtava-4-debian-metapaketti/
http://tekoske.wordpress.com/4-linux-palvelimena/
https://miroseppala.wordpress.com/tag/reprepro/
http://terokarvinen.com/2011/update-all-your-computers-with-a-deb-repository
http://jaakkovalja.wordpress.com/2012/02/14/linux-palvelimena-metapaketteja/
http://www.linfo.org/create_shell_1.html
https://samisoikkeli.wordpress.com/2012/02/06/lamp-linux-apache-mysql-php/