Harjoitustehtävän aiheena oli metapakettien tekeminen ja oman pakettivaraston (repository) luominen. Harjoituksessa tehtiin yksi DEB metapaketti, johon koottiin tarpeellisia Ubuntun ohjelmapaketteja. Oma metapaketti julkaistiin sitten omassa pakettivarastossa.
Harjoitusympäristö
Harjoitus suoritettiin 19.09.2012 opiskelijan kotona käyttäen henkilökohtaista tietokonetta. Internet-yhteytenä oli Elisa Oyj:n tarjoama VDSL tyyppinen 100/10 mbit kiinteä laajakaistayhteys. Harjoituksessa käytettiin Lenovo R60 kannettavaa tietokonetta, johon oli asennettu Xubuntu versio 12.04 32-bittinen Linux käyttöjärjestelmä.
Lenovo R60 kokoonpano:
- Suoritin: Intel Core 2 Duo T56000 @1.83 Ghz
- Keskusmuisti: 4 Gt DDR2
- Kiintolevy: 100 Gt SATA150 54000rpm
- Käyttöjärjestelmä: Xubuntu versio 12.04 32-bittinen
Metapaketin tekeminen
Harjoituksen tekeminen aloitettiin asentamalla pakettityökalu equivs. Aloitin asennuksen päivittämällä Ubuntun pakettivarastot komennolla:
$sudo apt-get update
Pakettivarastojen päivitys kesti muutamia sekunteja.
Asensin equivs ohjelman komennolla:
$sudo apt-get install equivs
Asennus kesti parikymmentä sekuntia.
Siirryin omaan kotihakemistooni ja tein metapaketti nimisen kansion työskentelyä varten:
$cd
$mkdir metapaketti
$cd metapaketti
Seuraavaksi tein metapaketin asetustiedoston pohjan equivs-control komennolla:
$equivs-control eliimatt-metapaketti.cfg
Siirryin editoimaan metapaketin asetustiedostoa nano editorilla:
$nano eliimatt-metapaketti.cfg
Lisäsin Package, Version, Depends ja Description kenttiin paketin luomiseen tarvittavat tiedot ja poistin
kommentinmerkin # näiden rivien alusta. Package kenttään tuli paketin nimi; Version kenttään versionumero; Depends kenttään metapaketissa asennettavat paketit ja Description kenttään kuvaus paketin sisällöstä. Valitsin tähän metapakettiin asennettaviksi ohjelmiksi graafisen diff työkalun meld, tekstieditorin geany sekä linja-analysaattorin wireshark. Tutkin asetustiedoston sisältöä grep komennon avulla, jolla sain
suodatettua pois kaikki kommenttirivit:
$grep -v '^#' eliimatt-meta.cfg
Paketin asetustiedoston sisältö oli seuraava:
Section: misc
Priority: optional
Standards-Version: 3.9.2
Package: eliimatt-metapaketti
Version: 0.1
Depends: meld,geany,wireshark
Description: eliimatt's basic tools
long description and info
.
second paragraph
Tein metapaketin komennolla:
$equivs-build eliimatt-metapaketti.cfg
Lopputuloksena sain eliimatt-metapaketti_0.1_all.deb paketin.
Seuraavaksi asensin gdebi ja lintian työkalut paketin testaamista varten:
$sudo apt-get install gdebi lintian
Testasin ensiksi paketin oikeellisuutta lintian työkalulla komennolla:
$lintian eliimatt-metapaketti_0.1_all.deb
Lintian ilmoitti, että paketin ylläpitäjän sähköpostiosoite ei ole validi:
Muutin nano editorilla asetustiedoston Maintainer kenttään nimen sekä oikean sähköpostiosoitteen ja päivitin
Version kenttään 0.2 uudeksi versionumeroksi. Tein uuden version paketista equivs-build komennolla
ja testasin uutta pakettia lintian komennolla:
$nano eliimatt-metapaketti.cfg
$equivs-build eliimatt-metapaketti.cfg
$lintian eliimatt-metapaketti_0.2_all.deb
Tällä kertaa lintian tarkistus meni läpi ilman huomatuksia. Seruraavaksi kokeilin asentaa metapaketin gdebi komennolla:
$gdebi eliimatt-metapaketti_0.2_all.deb
Asennus onnistui ja ohjelmat ilmestyivät käynnistysvalikkoon. Käynnistin sieltä wireshark ohjelman ja totesin sen latautuvan:
Metapaketin digitaalinen allekirjoittaminen
Seuraavaksi päätin tehdä metapaketilleni digitaalisen allekirjoituksen. Aloitin tekemällä itselleni julkisen ja yksityisen avaimen parin gpg työkalulla:
$gpg --gen-key
Valitsin avaimen tyypiksi RSA and RSA, avaimen pituudeksi 2048 bittiä ja avaimen voimassaoloajaksi 10 vuotta.
Annoin avainparin nimeksi ja sähköpostiosoitteeksi samat kuin paketin asetustiedostossa. Komenttirivin jätin tyhjäksi.
Seuraavaksi muutin paketin asetustiedostosta versionumeroksi 0.3 ja tein uuden paketin käyttäen equivs-build työkalun
full asetusta (-f):
$nano eliimatt-metapaketti.cfg
$equivs-build -f eliimatt-metapaketti.cfg
Testasin vielä uutta versiota lintian työkalulla ja asensin sen gdebi työkalulla:
$lintian eliimatt-metapaketti_0.3_all.deb
$gdebi eliimatt-metapaketti_0.3_all.deb
Pakettivaraston tekeminen
Aloitin pakettivaraston tekemisen asentamalla reprepro työkalun.
$sudo apt-get install reprepro
Pakettivarasto tehtiin oman käyttäjätunnukseni public_html hakemistoon. Olin jo aikaisemin asentanut Apache palvelimen ja ottanut käyttöön käyttäjäkohtaiset public_html hakemistot, joten aloitin tekemällä kansion pakettivarastolle:
$cd
$cd public_html
$mkdir -p metapaketit/conf
Seuraavaksi tein pakettivaraston asetustiedoston komennolla:
$nano repository/conf/distributions
Tiedoston sisällöksi tuli:
Codename: precise
Components: main
Suite: precise
Architectures: i386 amd64 source
Sana precise viittaa Ubuntu versioon 12.04 Precise Pangolin. Seuravaksi tein DEB paketeille oman kansion ja kopioin oman metapakettini sinne:
$mkdir eliimatt-meta
$cp ../metapaketti/eliimatt-metapaketti_0.3_all.deb eliimatt-meta/
Lisäsin metapaketin pakettivarastoon komennolla:
$reprepro -VVVV -b metapaketit/ includedeb precise eliimatt-meta/eliimatt-*.deb
Pakettivaraston käyttöönotto
Testasin pakettivaraston toimivuutta lisäämällä oman pakettivarastoni APT:n pakettilähteeksi komennolla:
$sudoedit /etc/apt/sources.list.d/repository.list
Asetustiedostoon lisättiin rivi:
deb http://192.168.xxx.xxx/~xxx/metapaketit precise main
HTTP-osoite viittaa tietokoneen omaan IP-osoitteeseen ja käyttäjätunnukseeni, jonka julkisessa public_html kansiossa pakettivarasto sijaitsee. Seuraavaksi päivitin pakettivarastot komennolla:
$sudo apt-get update
Lopuksi kokeilin asentaa oman metapakettini apt-get komennolla:
$sudo apt-get install eliimatt-metapaketti
Asennus onnistui ja totesin pakettivarastoni toimivan.
Käytetyt ohjelmistot
Geany http://www.geany.org/
Meld http://meldmerge.org/
Wireshark http://www.wireshark.org/
Lähteet
DebianSick 2011. Creating metapackages with equivs.
http://www.debian-administration.org/users/DebianSick/weblog/1
Cowie, Jon 2011. Creating your own Signed APT Repository and Debian Packages
http://blog.mycrot.ch/2011/04/26/creating-your-own-signed-apt-repository-and-debian-packages/
Karvinen, Tero 2011a. Create deb metapackage in 5 minutes.
http://terokarvinen.com/2011/create-deb-metapackage-in-5-minutes
Karvinen, Tero 2011b. Update All Your Computers with a .DEB Repository.
http://terokarvinen.com/2011/update-all-your-computers-with-a-deb-repository
Karvinen, Tero 2012. Linux palvelimena ICT4TN003-4 kurssin kotisivu.
http://terokarvinen.com/2012/aikataulu-linux-palvelimena-ict4tn003-4-ja-ict4tn003-6-syksylla-2012
PurpleFloyd 2009. Signing .deb packages.
http://purplefloyd.wordpress.com/2009/02/05/signing-deb-packages/
About
Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti.
http://www.gnu.org/licenses/gpl.html
Pohjana Tero Karvisen Linux-kurssi, www.iki.fi/karvinen
Avainsanat: DEB, metapaketti, paketinhallinta, pakettivarasto, repository