Paketinhallintajärjestelmä
Paketinhallintajärjestelmä on ohjelmisto, jolla tietyn järjestelmän ohjelmapaketteja voidaan käsitellä yhtenäisellä tavalla ja siten helpottaa ohjelmistojen asennusta, poistoa, riippuvuuksien hallintaa ym. Eri jakeluilla on tähän eri menetelmät.
Paketinhallinnan välttämätön tehtävä on selvittää riippuvuudet. Edistyneemmät paketinhallinnat osaavat itse myös täyttää ne ilman että käyttäjän on tarvetta puuttua asiaan. Nykyaikaiset paketinhallintaratkaisut hakevat ohjelman riippuvuuksineen Internetissä olevista pakettivarastoista käyttäjän puolesta ja käyttäjän tarvitsee vain kertoa minkä nimisen ohjelman haluaa asentaa. Ohjelman on sisällyttävä paketinhallinnan tuntemiin tietokantoihin, jotta paketinhallinta osaa hakea sen.
Eri jakeluiden järjestelmät
- Red Hat-pohjaisissa järjestelmissä kuten Fedora Linuxissa, Mageiassa ja openSUSEssa paketinhallintajärjestelmä on yleensä RPM. Verkkoasennusmahdollisuuden tarjoava työkalu vaihtelee jakeluittain.
- Debian-pohjaisissa järjestelmissä taas käytetään yleensä dpkg:tä sen edustaohjelmalla apt:llä tai jollain apt:n edustaohjelmalla (kuten aptitude tai synaptic).
- Gentoolla on Portage.
- Slackwarella on tgz (joka ei selvitä riippuvuuksia).
- Arch Linux, sekä siihen pohjautuvissa ja Frugalwaressa käyttävät pacmania tai edustaohjelmaa kuten Pamac.
- Monella erikoisjakelulla on omat paketinhallintajärjestelmänsä
Rosetta
Suosituimpien paketinhallintajärjestelmien tulkitsemisopas löytyy täältä Rosetta.
Ohjelmien asentaminen
Katso artikkeli Ohjelmien asentaminen, jossa on tarkempaa tietoa ohjelmien asentamisesta käytännössä, sekä artikkelit eri jakeluista ja työkaluista.
Paketinhallinnan toiminta
Riippuvuudet
Ohjelma tarvitsee toimiakseen esimerkiksi erinäisiä ohjelmakirjastoja ja apuohjelmia, ehkä myös esimerkiksi tietokantaohjelman tai muun palvelimen. Näitä kutsutaan ohjelman sisältävän paketin riippuvuuksiksi ja ne voidaan kuvata toimintoja tarjoavan paketin, toimintaa vastaavan virtuaalisen paketin tai kaivatun tiedoston nimellä ja mahdollisesti versionumerolla. Järjestelmän perusosia, kuten ydintä, C-kirjastoa tai komentotulkkia ei yleensä luetella riippuvuuksissa, ellei paketti kaipaa niistä tiettyä versiota (mitä perusosiksi lasketaan vaihtelee jakelusta toiseen).
Riippuvuuksia voi olla eri tasoisia: jos riippuvuus on sellainen, että paketti on käyttökelvoton ilman toista pakettia, .deb-paketissa käytetään depends-riviä, jos pakettia ei yleensä halua käyttää ilman toista pakettia, recommends-riviä, jos toinen paketti parantaa paketin käytettävyyttä (käsikirja, kielipaketit, graafiset edustaohjelmat), suggests-riviä.
Samoja resursseja käyttäviä ohjelmia tai toisiaan korvaavia ohjelmia kuvataan riveillä conflicts ja replaces ja toisen paketin toiminnallisuutta tarjoamista rivillä provides. Lisäksi voi kertoa, että jotakin pakettia tarvitaan paketin lähdekoodista kääntämiseen (build-dep) tai pakettia asennettaessa (pre-depends).
Yllä Debian-sukuisten jakeluiden tärkeimmät riippuvuuksien kuvaukset. Muissa paketinhallintajärjestelmissä on vastaavia ominaisuuksia, vaikkakin Debianin järjestelmä kuuluu monipuolisimpiin.
Kun on asentamassa jotakin ohjelmapakettia, jonka riippuvuudet eivät ole kunnossa, rpm, dpkg tai vastaava kuvailee ongelman eikä suostu asentamaan uutta pakettia. Käyttäjä joko asentaa tarvittavat apuohjelmat (tai käyttää valitsinta --force-depends tms., mikä hyvin harvoin on perusteltua). Edistyneemmät paketinhallinta- tai edustaohjelmat (apt, aptitude, synaptic, yum yms.) osaavat asentaa kaivatut riippuvuudet ja ratkaista monimutkaisempiakin riippuvuusongelmia. Ongelmatilanteissa eri työkaluja voi auttaa eri tavoilla antamalla niille vihjeitä tai valtuuksia ongelman ratkaisuun.
Jos asentaa ohjelmia paketinhallinnan ohi, paketinhallintajärjestelmä ei pysty hyödyntämään asennettuja ohjelmia riippuvuuksien tyydyttämiseen, eikä huomaa, milloin näin asennettu ohjelma kilpailee jostakin resurssista toisen paketin kanssa. Paketinhallinnan ohi asennettaessa kannattaa käyttää hakemistoja /opt tai /usr/local, jolloin paketinhallinnan kautta ja sen ohi asennetut ohjelmat eivät ylikirjoita toistensa tiedostoja. Jos paketinhallinnan ohi asennettu ohjelma käyttää jotakin muuta resurssia, verkkopalvelinten tapauksessa tcp- tai udp-porttia, kannattaa vähintään tehdä "dummy-paketti", joka kertoo tarjoavansa tätä toiminnallisuutta ja käyttävänsä tätä resurssia.
Muualta haetusta ohjelmasta voi myös tehdä aidon paketin, jonka voi asentaa paketinhallinnan kautta. Näin ainakin riippuvuudet ja ristiriidat tulee huomioiduiksi.
Toisen jakelun paketista ei yleensä kannata asentaa mitään, koska riippuvuudet on määritelty toisen jakelun käytäntöjen mukaan, mikä saattaa aiheuttaa ikävyyksiä.
Toisen jakelun pakettia voi hyödyntää jos osaa arvioida toimiiko se oikein omassa jakelussa, tarvittaessa niin, että sen purkaa ja kokoaa oman jakelun paketiksi (vrt alien). Yleensä on kuitenkin varmempaa asentaa vieras paketti paketinhallinnan ohi hakemistoon /opt tai /usr/local, joko lähdekoodista kääntämällä tai purkamalla ja käsin asentamalla. Perusohjelmisto kyllä löytyy minkä tahansa isomman jakelun omasta pakettitarjonnasta.
Päivitys
Paketinhallinta hakee haluttaessa tiedon päivityksistä jakelun palvelimilta (kunhan lähteet on oikein asennettu) ja tarjoaa mahdollisuuden uusien ohjelmaversioiden asentamiseen. Jakelusta riippuen jakelun tiettyyn versioon tulee vain tietoturvapäivityksiä tai myös ohjelmien uudempia versioita.
Yksittäisen ohjelman tai käytetyn jakeluversion päivitysten asentaminen paketinhalilnnan kauttaa vaatii yleensä vain muutaman klikkauksen tai yksinkertaisen komennon (apt-get update; apt-get upgrade tms.). Tällaisen päivittämisen voi tehdä automaattiseksi (katso cron), mutta parempaa on tehdä se käsin, koska päivityksessä voi (sinsänsä harvoin, jos käyttää virallisia vakaita paketteja) syntyä ongelmia.
Itse jakelun päivittäminen versiosta toiseen on hankalampaa. Periaatteessa se sujuu Debian-pohjaisissa samaten parilla käskyllä (aptitude update; aptitude upgrade; aptitude dist-upgrade, kunhan lähteissä on uusi jakelun versio), mutta yleensä päivityksessä on kommervenkkejä, esimerkiksi siinä, että ohjelmien asetustiedostojen muoto on voinut muuttua tavalla joka vaatii omien viritysten käsin muokkaamista. Päivitysohjeet kannattaa lukea sen varalta, että tarvitaan erikoisjärjestelyjä, yleensä niin että jokin paketti pitää päivittää käsin ennen muita. Vanhaa vakaata jakelun versiota yleensä tuetaan jonkin aikaa uuden ilmestyttyä, jotta päivityksen voi tehdä itselle sopivana aikana. Joillakin jakeluilla on erikseen pitkään tuetut versiot (ainakin Ubuntu ja Redhat).
Jakelun päivitys versiosta toiseen ja päivitysten julkaisutahti kannattaa ottaa huomioon jakelua valittaessa. Nopea päivitystahti tuo ohjelmista uudempia versioita käyttöön, mutta ainainen päivittäminen ja uusiin ominaisuksiin totuttelu on oma rumbansa, mikä esimerkiksi yrityskäytössä tai tietokonetta ymmärtämätöntä sukulaista autettaessa on hankalaa.
Usein jostakin ohjelmasta haluaa uudemman version kuin mitä käytetystä jakelun versiosta löytyy. Tällöin sen voi joko asentaa saman jakelun testattavasta haarasta (testing tai pre-release eli beta tai vastaava), ohjelman tekijän palvelimelta tai kolmannen tahon tekemästä paketista (kuten Debian backports). Näin asennettujen ohjelmien tietoturvapäivityksistä joutuu ainakin joissakin määrin huolehtimaan itse.
Paketin sisältö
Ohjelmapaketti koostuu yleensä itse tiedostoarkistosta (esimerkiksi tervapallona), asennuksen yhteydessä ajettavista skripteistä sekä pakettia koskevista tiedoista, joita ovat mm. paketin riippuvuudet ja tiedostojen tarkistussummat.
Paketin tietoja voi käsitellä paketinhallinnan työkaluilla ja usein myös, ainakin jos paketin purkaa näillä työkaluilla johonkin väliaikaishakemistoon, myös tavallisilla unix-kaluilla, kuten editoreilla ja tar:lla.
Yleensä paketeilla tarkoitetaan binääripaketteja, mutta jakeluiden ohjelmat ovat myös saatavissa lähdekoodimuodossa. Gentoossa tämä on normaalimuoto ja binääripaketteja on saatavissa vain osasta jakelua. Redhatissa lähdekoodit jaetaan srpm-muodossa, Debianissa kolmena tiedostona: muualta saatu lähdekoodi (.tar), Debianin tekemät muutokset (.diff) ja metatietotiedosto (.dsc). Lisätietoja Debian-paketeista löytyy artikkelista Deb-paketin tekeminen. Myös näitä paketteja voi käsitellä paketinhallintatyökaluilla, esimerkiksi niin että purkaa paketin, tekee haluamansa muutokset ja paketoi sen uudestaan.
Lähteet
Jotta paketinhallintajärjestelmä osaisi hakea paketteja Internetistä, järjestelmälle on kerrottava pakettilähteet. Asennuksen yhteydessä lähdeluetteloon on yleensä laitettu jakelun virallinen palvelin, mahdollisesti sen suomalainen toisiopalvelin. Lisäksi voi haluta myös epävirallisia tai huonommin tuettuja paketteja, joko jakelusta tai joskus siihen liittyvältä käyttäjäyhteisöltä.
Listaan voi laittaa jakelulle sopivalla tavalla paketteja tarjoavan kolmannen osapuolen (katso epäviralliset pakettilähteet), mutta pitää muistaa, että tällöin sen on mahdollista muuttaa järjestelmää mielivaltaisesti (ellei tarkoin säädä järjestelmää tämän estämiseksi). Vaikka tähän tahoon luottaisikin siinä mielessä, että se ei tarjoa troijanhevosia, huonosti tehty paketti voi rikkoa järjestelmän.
Katso myös
- Paketinhallinta-luokka
- Paketinhallinnan idean esittely Ubuntu tutuksi -wikirjassa
- Wikipedian artikkeli-paketinhallintajärjestelmästä