Ero sivun ”Paketinhallintajärjestelmä” versioiden välillä
Siirry navigaatioon
Siirry hakuun
Riippuvuudet, päivitys ja paketin sisältö
p (debianissa dpkg) |
LP (keskustelu | muokkaukset) (Riippuvuudet, päivitys ja paketin sisältö) |
||
Rivi 1: | Rivi 1: | ||
'''Paketinhallintajärjestelmä''' on ohjelmisto, jolla tietyn järjestelmän ohjelmapaketteja voidaan käsitellä standardilla tavalla ja siten helpottaa ohjelmistojen asennusta, poistoa, riippuvuuksien hallintaa ym. Eri [[ | '''Paketinhallintajärjestelmä''' on ohjelmisto, jolla tietyn järjestelmän ohjelmapaketteja voidaan käsitellä standardilla tavalla ja siten helpottaa ohjelmistojen asennusta, poistoa, riippuvuuksien hallintaa ym. Eri [[Jakelu|jakeluilla]] on tähän eri menetelmät. | ||
Paketinhallinnan välttämätön tehtävä on selvittää riippuvuudet. Edistyneemmät paketinhallinnat osaavat itse ne myös täyttää ilman että käyttäjän on tarvetta puuttua asiaan. Modernit paketinhallintaratkaisut myös hakevat ohjelman Internetistä käyttäjän puolesta ja käyttäjän tarvitsee vain kertoa minkä nimisen ohjelman haluaa asentaa. Ohjelman on sisällyttävä paketinhallinan tuntemiin tietokantoihin, jotta se osataan hakea itse. | Paketinhallinnan välttämätön tehtävä on selvittää riippuvuudet. Edistyneemmät paketinhallinnat osaavat itse ne myös täyttää ilman että käyttäjän on tarvetta puuttua asiaan. Modernit paketinhallintaratkaisut myös hakevat ohjelman Internetistä käyttäjän puolesta ja käyttäjän tarvitsee vain kertoa minkä nimisen ohjelman haluaa asentaa. Ohjelman on sisällyttävä paketinhallinan tuntemiin tietokantoihin, jotta se osataan hakea itse. | ||
==Eri jakeluiden järjestelmät== | |||
* [[Redhat]]-pohjaisissa järjestelmissä kuten [[Fedora]]ssa, [[Mandriva]]ssa ja [[openSUSE]]ssa paketinhallintajärjestelmä on yleensä [[RPM]]. Verkkoasennusmahdollisuuden tarjoava työkalu vaihtelee jakeluittain. | * [[Redhat]]-pohjaisissa järjestelmissä kuten [[Fedora]]ssa, [[Mandriva]]ssa ja [[openSUSE]]ssa paketinhallintajärjestelmä on yleensä [[RPM]]. Verkkoasennusmahdollisuuden tarjoava työkalu vaihtelee jakeluittain. | ||
Rivi 10: | Rivi 12: | ||
==Ohjelmien asentaminen== | ==Ohjelmien asentaminen== | ||
Katso artikkeli [[Ohjelmien asentaminen]], jossa on tarkempaa tietoa ohjelmien asentamisesta käytännössä. | 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ä [[kirjasto|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 [[kernel]]iä, [[Libc|C-kirjastoa]] tai [[komentorivi|komentotulkkia]] ei yleensä luetella riippuvuuksissa, ellei paketti kaipaa niistä tiettyä versiota (mitä perusosiksi lasketaan vaihtelee jakelusta toiseen). | |||
Riipuvuuksia 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ähdekoodi]]sta [[kääntäminen|kääntämiseen]] (''build-dep'') tai pakettia asennettaessa (''pre-depends''). | |||
Yllä [[Debian]]-sukuisten [[jakelu]]iden 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 <tt>--force-depends</tt> 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 tyydittämiseen eikä huomaa milloin näin asennettu ohjelma kilpailee jostakin resurssista toisen paketin kanssa. Paketinhallinnan ohi asenenttaaessa 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 [[wikipedia:fi:TCP|tcp]]- tai [[wikipedia:fi:UDP|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ä. Poikkeuksena tähän on [[Ubuntu]], joka antaa käyttää Debianin pakettivarastoa suoraan valikoiman laajentamiseksi. | |||
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 tiedon päivityksistä jakelun palvelimilta (kunhan ''lähteet'' on oikein asennettu) ja tarjoaa mahdollisuuden uusien ohjelmaversioiden asentamiseen. Jakelusta riippuen jakelun tiettyyn versioon tulee vain [[tietoturva]]pä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 (<tt>apt-get update; apt-get upgrade</tt> 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ä (<tt>aptitude update; aptitude upgrade; aptitude dist-upgrade</tt>, kunhan lähteissä on uusi jakelun versio), mutta yleensä päivityksessä on kommervenkkejä, esimerkiksi siinä, että ohjelmien säätötiedojen 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ättömää sukulaista autettaessa on hankalaa. | |||
Usein jostakin ohjelmasta haluaa uudemman version kuin mitä käytetystä jakelun versiosta löytyy. Tällöin sen voi joka asentaa saman jakelun testattavasta haarasta (''testing'' tai ''per-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 [[tarball|tervapallona]]), asennuksen yhteydessä ajettavista [[skripti|skripteistä]] sekä pakettia koskivasta tiedoista kuten 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äliaikaistiedostoon, myös tavallisilla unix-kaluilla, kuten [[tekstieditori|editoreilla]] ja [[tar]]:lla. | |||
Yleensä paketeilla tarkoitetaan binääripaketteja, mutta jakeluiden ohjelmat ovat myös saatavissa lähdekoodimuodossa. [[Gentoo]]ssa 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). Myös näitä paketteja voi käsitellä paketinhallintatyökaluilla, esimerkiksi niin että purkaa paketin, tekee haluamansa muutokset ja paketoi sen uudestaan. | |||
==Katso myös== | ==Katso myös== |