Metapaketit ja pakettivarastot
Tällä kerralla tehtävänä oli tehdä metapaketti sekä pakettivarasto. Tehtävät tein HP EliteBook 2570p kannettavalla tietokoneellani ja Xubuntun 12.04 LTS 32-bit live-cd:llä.
Metapaketti
Aloitin metapaketin luomisen päivittämällä pakettivarastot sekä asentamalla equivs -paketin.
$ sudo apt-get update
$ sudo apt-get install equivs
Seuraavaksi tein uuden kansion:
$ mkdir meta
$ cd meta/
Kyseiseen kansioon tein uuden tiedoston komennolla:
$ equivs-control tuomas-meta.cfg
Aloitin sen muokkaamisen nanolla:
$ nano tuomas-meta.cgf
Tiedostosta tulee muokata paketin nimi, versio, ylläpitäjä, asennettavat ohjelmat ja kuvaus. Muutin tiedostoon seuraavat tiedot:
Package: tuomas-meta Version: 0.1 Maintainer: Tuomas Sippola <tuomas.sippola@example.com> Depends: apache2, htop, geoip-bin Description: Tuomaksen metapaketti long description and info . second paragraph
Tallensin tiedoston ctrl+x -yhdistelmällä. Tämän jälkeen vuorossa oli tiedoston paketointi.
$ equivs-build tuomas-meta.cfg
Näin uusi paketti on valmiina. Paketoinnista syntyi uusi tiedosto, nimeltään ”tuomas-meta_0.1_all.deb”. Seuraavaksi asensin gdebin, jotta päästään kokeilemaan paketin asennusta.
$ sudo apt-get install gdebi
$ sudo gdebi -n tuomas-meta_0.1_all.deb
Pakentin asennus onnistui hyvin. Menin selaimella localhost -osoitteeseen ja totesin, että ainakin apache2:n asennus onnistui hyvin. Kokeilin vielä, että luotu paketti menee läpi Lintian nimisestä tarkistus-ohjelmasta.
$ sudo apt-get install lintian
$ lintian tuomas-meta_0.1_all.deb
Komennon jälkeen ei tullut virheilmoitusta, joten paketti meni läpi ilman virheitä.
Pakettivaraston luonti
Pakettivaraston luontiin tarvitsee web-palvelimen (apache), jonka asensin jo aiemmin luomallani metapaketilla. Nyt täytyy vain asettaa käyttäjien kotisivuhakemistot sallituiksi. Sehän tapahtui komennoilla:
$ sudo a2enmod userdir
$ sudo service apache2 restart
Seuraavaksi tein kotihakemistoon uuden hakemiston ja sinne vielä muutaman lisähakemiston.
$ mkdir public_html
$ cd public_html/
$ mkdir -p repository/conf
Kyseiseen conf-kansioon tein uuden tiedoston:
$ nano repository/conf/distributions
Tiedostoon kirjoitetaan seuraavat tiedot:
Codename: precise Components: main Suite: precise Architectures: i386 amd64 source
Järjestelmän koodinimen saa selville komennolla:
$ lsb_release -a
Seuraavana oli vuorossa reprepro -ohjelman asennus.
$ sudo apt-get install reprepro
Asennuksen jälkeen viedään uusin version metapaketista palvelimelle komennolla:
$ reprepro -VVVV -b public_html/repository/ includedeb precise meta/tuomas-meta_0.5_all.deb
Tämän jälkeen muokataan repository.list -tiedostoa seuraavasti:
$ sudoedit /etc/apt/sources.list.d/repository.list
Kirjoitetaan tiedostoon yksi rivi tekstiä:
deb http://127.0.0.1/~xubuntu/repository precise main
Tiedoston tallentamisen jälkeen oli vuorossa pakettivarastojen päivittäminen ja paketin lataaminen ja asennus.
$ sudo apt-get update
$ sudo apt-get install tuomas-meta
Komento ei tällä kertaa asentanut mitään, koska olin jo asentanut kyseisen paketin ohjelmat, mutta ainakin se näytti toimivan. Päätin kuitenkin vielä päivittää metapakettia, lisäsin sinne vlc-asennuspaketin ja muutin versionumeron uudempaan. Versioksi tuli tässä vaiheessa jo 0.7. Sen jälkeen ajoin taas seuraavat komennot:
$ equivs-build tuomas-meta.cfg
$ reprepro -VVVV -b public_html/repository/ includedeb precise meta/tuomas-meta_0.7_all.deb
Näin uusi version on siirretty repositoryyn ja vanha poistunut. Sitten vaan komennot:
$ sudo apt-get update
$ sudo apt-get install tuomas-meta
Homma toimi hyvin ja vlc asentui myös onnistuneesti.
Scriptin paketointi
Viimeisenä vaiheena oli vielä paketoida scripti niin, että se on kaikkien käyttäjien käytettävissä. Aloitin tekemällä uuden tiedoston aiemmin tekemääni ”meta” -kansioon:
$ cd meta/
$ nano tiedot
Tiedostoon kirjoitin scriptin, jolla saan näkyviin vapaan levytilan sekä joitain verkko-tietoja.
#!/bin/bash df -h ifconfig
Tallennettuani tiedoston, lisäsin sille suoritusoikeudet komennolla:
$ chmod 700
$ ./tiedot
Scripti toimi hyvin ja tulosti halutut tiedot. Seuraavaksi scripti piti laittaa osaksi paketti, jonka jo aiemmin loin.
$ nano tuomas-meta.cgf
Muokkasin paketin versionumeron uudempaan (0.8) ja lisäsin ”Files”-rivin.
Files: tiedot /usr/local/bin/
Rivillä ensimmäisenä on scriptin nimi ja sen jälkeen polku, johon se asennetaan. Viimeiseksi paketoin uuden version ja kokeilin toimiiko scripti.
$ equivs-build tuomas-meta.cfg
$ sudo gdebi -n tuomas-meta_0.8_all.deb
$ tiedot
Asennus sekä testaus onnistui hyvin ja scripti toimi. Lopuksi tein vielä uuden käyttäjän ja testasin toimivuuden myös sillä. Nyt järjestelmän käyttäjillä on sama komento käytössään.
Lähteet
http://terokarvinen.com/2013/aikataulu-%E2%80%93-linux-palvelimena-ict4tn003-11-ja-12-kevaalla-2014
http://terokarvinen.com/2011/create-deb-metapackage-in-5-minutes
http://terokarvinen.com/2011/update-all-your-computers-with-a-deb-repository
Tietoa
Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html