Ero sivun ”Epäviralliset pakettivarastot” versioiden välillä
Siirry navigaatioon
Siirry hakuun
Epäviralliset pakettivarastot (muokkaa)
Versio 12. heinäkuuta 2009 kello 00.28
, 12. heinäkuuta 2009varasto
p (siirsi sivun Epäviralliset pakettilähteet ohjauksen Epäviralliset pakettivarastot päälle: Meillä on pakettivarasto-artikkeli joten käytetään tätä muotoa) |
Pb (keskustelu | muokkaukset) p (varasto) |
||
Rivi 1: | Rivi 1: | ||
Jakelupaketin omista [[ | Jakelupaketin omista [[Pakettivarasto|pakettivarastoista]] ei aina löydy kaikkia tarvittavia ohjelmia, jolloin ratkaisuksi tarjotaan usein epävirallisen pakettivaraston käyttämistä. Vieraiden pakettien asentaminen saattaa kuitenkin vaarantaa [[tietoturva]]a tai järjestelmän toimintaa. | ||
==Edut== | ==Edut== | ||
Koska | Koska pakettivaraston paketit ovat [[paketinhallinta|paketinhallinnan]] haluamassa muodossa, mahdollisesti suoraan käytettävänä pakettiarkistona, niiden käyttäminen on helppoa suoraan normaalista paketinhallinnasta. Riippuvuuksista ja päivityksistä pidetään mahdollisesti huolta kuten [[jakelu]]n omienkin pakettien kohdalla. | ||
Jos | Jos pakettivaraston ylläpitäjät huolehtivat tietoturvasta, varasto on sopivassa muodossa ja se on lisättynä varastolistaan, tietoturvapäivitykset asentuvat puoliautomaattisesti. | ||
Näilä perusteilla epävirallisen | Näilä perusteilla epävirallisen pakettivaraston käyttäminen on käytännöllisempää ja turvallisempaa kuin vastaavan paketin asentaminen [[lähdekoodi]]sta tai muuten paketinhallinnan ohi – kunhan pakettivaraston ylläpitäjät huolehtivat tietoturvasta ja tekevät paketin jakelun käytäntöjen mukaan. | ||
==Vaarat== | ==Vaarat== | ||
Rivi 13: | Rivi 13: | ||
===Epäyhteensopivuus=== | ===Epäyhteensopivuus=== | ||
Jos | Jos pakettivaraston ylläpitäjä tekee paketteja useammalle jakelulle, kaikkien tuettujen jakeluiden tuntemus ei välttämättä ole riittävän hyvä eikä aika välttämättä riitä pakettien räätälöintiin. Tällöin kiusaus on suuri olettaa jakeluiden käyttäytyvän oman jakelun lailla ja pienet eroavaisuudet voivatkin rikkoa paketin toiminnan. | ||
Tavallisimmat epäyhteensopivuusongelmat ovat eri [[kirjasto|ohjelmakirjastojen]], niiden eri versioiden tai versioiden erilaisen numeroinnin käyttö. Tämä saattaa aiheuttaa riippuvuusongelmia (vrt <!--[[wikipedia:fi:DLL hell|-->DLL hell<!--]]-->). Pahimmassa tapauksessa jakelun oma ohjelmakirjasto korvaantuu epävirallisen | Tavallisimmat epäyhteensopivuusongelmat ovat eri [[kirjasto|ohjelmakirjastojen]], niiden eri versioiden tai versioiden erilaisen numeroinnin käyttö. Tämä saattaa aiheuttaa riippuvuusongelmia (vrt <!--[[wikipedia:fi:DLL hell|-->DLL hell<!--]]-->). Pahimmassa tapauksessa jakelun oma ohjelmakirjasto korvaantuu epävirallisen pakettivaraston epäyhteensopivalla versiolla. | ||
Väärillä oletuksilla tehty paketti saattaa rikkoa tiedostoja, joita asennusskriptit yrittävät muokata, tai kokonaan korvata tiedostoja omilla versioilla. Tähän on jakeluilla tarkkaan mietityt käytännöt, joista ulkopuolinen paketoija ei välttämättä ole riittävästi tietoinen. Paketoija ei myöskään tiedä mahdollisista uusista erikoisjärjestelyistä. | Väärillä oletuksilla tehty paketti saattaa rikkoa tiedostoja, joita asennusskriptit yrittävät muokata, tai kokonaan korvata tiedostoja omilla versioilla. Tähän on jakeluilla tarkkaan mietityt käytännöt, joista ulkopuolinen paketoija ei välttämättä ole riittävästi tietoinen. Paketoija ei myöskään tiedä mahdollisista uusista erikoisjärjestelyistä. | ||
Epäviralliset | Epäviralliset pakettivarastot saattavat myös aiheuttaa järjestelmän päivityksen epäonnistumisen, mikäli epäviralliset paketit tai näiden [[Paketinhallintajärjestelmä#Riippuvuudet|riippuvuudet]] ovat ristiriidassa järjestelmän virallisten tai toisten epävirallisten pakettivarastojen pakettien kanssa. Tästä syystä onkin tärkeä varmistaa, etteivät eri epäviralliset pakettivarastot tarjoa samoja paketteja. Jos jokin paketti on asennettu yhdestä epävirallisesta varastosta ja sen riippuvuudet toisesta, on ennen pitkää hyvin todennäköistä, että päivitykset epäonnistuvat rikkinäisten riippuvuuksien vuoksi. Jos käytät yhtä (esimerkiksi epävapaita multimediapaketteja tarjoavaa) epävirallista pakettivarastoa, ei tämän lähteen tarjoamia paketteja tai niiden riippuvuuksia kannata asentaa (edes manuaalisesti) muualta kuin tästä lähteestä tai järjestelmän virallisista varastoista, mikäli haluaa päivitysten onnistuvan. | ||
=== Huono ylläpito === | === Huono ylläpito === | ||
Pakettivaraston ylläpitäjät eivät välttämättä huolehdi tietoturvasta yhtä tarkkaan kuin oma jakelu. Mahdollisesti tietoturvakorjaukset tehdään uusiin versioihin, jotka eivät sovi vanhempaan jakelun versioon. | |||
Näin tietoturvakorjaukset jäävät asentamatta tai vieras paketti pakottaa päivittämään muuten hyvin toimivaa jakelua uuteen. | Näin tietoturvakorjaukset jäävät asentamatta tai vieras paketti pakottaa päivittämään muuten hyvin toimivaa jakelua uuteen. | ||
Pahimmassa tapauksessa itse paketti on huonosti tehty, niin että se asentuessaan rikkoo järjestelmän. Asennusskriptit voivat yleensä vapaasti muuttaa järjestelmää ja pieni kirjoitusvirhe saattaa olla kohtalokas. | Pahimmassa tapauksessa itse paketti on huonosti tehty, niin että se asentuessaan rikkoo järjestelmän. Asennusskriptit voivat yleensä vapaasti muuttaa järjestelmää ja pieni kirjoitusvirhe saattaa olla kohtalokas. | ||
Yleensä, kun | Yleensä, kun pakettivarasto lisätään paketinhallintajärjestelmään, tästä varastosta saatetaan asentaa mitä tahansa paketteja, ei pelkästään sitä, jonka takia lähde lisättiin. Tämä suurentaa ongelmia entisestään, ellei muitten pakettien asentamista tästä lähteestä erikseen estetä. | ||
=== Tietoturvaongelmat === | === Tietoturvaongelmat === | ||
Rivi 34: | Rivi 34: | ||
Sen lisäksi, että paketti sisältää ylläpitäjän ([[root]]in) oikeuksin ajettavaa ohjelmakoodia, johon on helppo tarkoituksella upottaa [[haittaohjelmat|haittaohjelmia]], paketti voi sisältää tahattomia tietoturva-aukkoja. | Sen lisäksi, että paketti sisältää ylläpitäjän ([[root]]in) oikeuksin ajettavaa ohjelmakoodia, johon on helppo tarkoituksella upottaa [[haittaohjelmat|haittaohjelmia]], paketti voi sisältää tahattomia tietoturva-aukkoja. | ||
Ei siis riitä, että luottaa paketoijan ja | Ei siis riitä, että luottaa paketoijan ja pakettivaraston ylläpitäjän hyvään tahtoon. Myös tietoturvaosaaminen ja viitseliäisyys sekä itse palvelimen tietoturvataso ovat ratkaisevia. Myös pakettien mahdollisten tietoturva-aukkojen korjaaminen ja pakettien päivittäminen pitää olla kunnossa, jottei tietoturva vaarantuisi. | ||
== Erityyppiset epäviralliset lähteet == | == Erityyppiset epäviralliset lähteet == | ||
Rivi 51: | Rivi 51: | ||
=== Backports === | === Backports === | ||
Koska [[Debian]]-jakelun vakaa julkaisu usein on vanha, jotkut Debian-kehittäjät loivat epävirallisen | Koska [[Debian]]-jakelun vakaa julkaisu usein on vanha, jotkut Debian-kehittäjät loivat epävirallisen pakettivaraston, josta tarjotaan ohjelmien uudempia versioita paketoituina tähän vanhaan jakeluun. Tällainen järjestely takaa varmemmin yhteensopivat paketit kuin ulkopuolisen tahon paketoimat uudemmat versiot. Testaus on kuitenkin vähäisempää kuin virallisten pakettien osalta ja sikäli kuin sovittaminen vanhaan jakeluun on vaikeaa, tämä voi aiheuttaa ongelmia myös itse paketeissa. | ||
Myös [[Ubuntu]]lla on backports-järjestely. | Myös [[Ubuntu]]lla on backports-järjestely. | ||
Rivi 61: | Rivi 61: | ||
=== "contrib", "universe", "community", "extras" === | === "contrib", "universe", "community", "extras" === | ||
Monella jakelulla on siihen kiinteästi kuuluvien pakettien lisäksi laajempi pakettivarasto, jossa on vähemmän huolellisesti testattua ohjelmistoa, jota ei muodollisesti tueta, mahdollisesti myös pakettivarasto, joihin käyttäjät voivat lisätä itse tekemiään paketteja. Tätä pakettivarastoa | Monella jakelulla on siihen kiinteästi kuuluvien pakettien lisäksi laajempi pakettivarasto, jossa on vähemmän huolellisesti testattua ohjelmistoa, jota ei muodollisesti tueta, mahdollisesti myös pakettivarasto, joihin käyttäjät voivat lisätä itse tekemiään paketteja. Tätä pakettivarastoa varastolistaan lisättäessä kannattaa selvittää sen asema ja miten pitkälle siihen kannattaa luottaa. | ||
Debianissa ''contrib'' tarkoittaa, että paketit riippuvat ei-vapaista osista. Koska Debian on vapaa käyttöjärjestelmä, contrib-paketit eivät voi virallisesti olla sen osa, vaikka ne muuten käsitelläänkin samalla tavalla kuin virallisia paketteja. contrib-paketteja käytettäessä kannattaa pitää mielessä, että niiden asentaminen saattaa tuoda koneelle kolmannen osapuolen suljettua koodia (tämä selviää paketin riippuvuuksia ja asennusskriptejä tutkimalla, usein jo paketin kuvauksesta). | Debianissa ''contrib'' tarkoittaa, että paketit riippuvat ei-vapaista osista. Koska Debian on vapaa käyttöjärjestelmä, contrib-paketit eivät voi virallisesti olla sen osa, vaikka ne muuten käsitelläänkin samalla tavalla kuin virallisia paketteja. contrib-paketteja käytettäessä kannattaa pitää mielessä, että niiden asentaminen saattaa tuoda koneelle kolmannen osapuolen suljettua koodia (tämä selviää paketin riippuvuuksia ja asennusskriptejä tutkimalla, usein jo paketin kuvauksesta). | ||
Rivi 67: | Rivi 67: | ||
=== Ulkopuoliset tahot === | === Ulkopuoliset tahot === | ||
Myös kokonaan ulkopuoliset saattavat tarjota | Myös kokonaan ulkopuoliset saattavat tarjota pakettivarastoja, esimerkiksi niin, että niitä on tarvittu sisäiseen käyttöön ja myöhemmin keksitty tarjota myös yleiseen jakoon. Tällaisen pakettivaraston luotettavuutta on arvioitava tapaus tapaukselta. | ||
Joskus tällainen ulkopuolinen | Joskus tällainen ulkopuolinen pakettivarasto kehittyy uudeksi, ainakin alkuvaiheessa yhteensopivaksi, itsenäiseksi jakeluksi. | ||
<!-- vrt Ximian, Redhat-kloonit --> | <!-- vrt Ximian, Redhat-kloonit --> | ||
Rivi 82: | Rivi 82: | ||
Tärkeä ryhmä suljetun koodin ohjelmia ovat erilaiset laiteajurit. Joillekin laitteille, varsinkin [[näytönohjaimet|näytönohjaimille]] ja [[WLAN|wlan]]-korteille, on vain laitevalmistajan tekemä suljettu ajuri. Koska laiteajuri on osa [[kernel|Linux-ydintä]], sen toiminta on keskeistä koko järjestelmän toimivuudelle ja turvallisuudelle. | Tärkeä ryhmä suljetun koodin ohjelmia ovat erilaiset laiteajurit. Joillekin laitteille, varsinkin [[näytönohjaimet|näytönohjaimille]] ja [[WLAN|wlan]]-korteille, on vain laitevalmistajan tekemä suljettu ajuri. Koska laiteajuri on osa [[kernel|Linux-ydintä]], sen toiminta on keskeistä koko järjestelmän toimivuudelle ja turvallisuudelle. | ||
Suljetut laiteajurit toimitetaan useimmiten kahdessa osassa: varsinainen ajuri ja sovituskoodi ("wrapper"), jolla ajurin saa sopimaan kulloinkin käytettävään | Suljetut laiteajurit toimitetaan useimmiten kahdessa osassa: varsinainen ajuri ja sovituskoodi ("wrapper"), jolla ajurin saa sopimaan kulloinkin käytettävään ytimeen. Näin ei tarvitse käyttää juuri samaa ytimen versiota kuin mille ajuri on käännetty. Ytimen muutokset saattavat kuitenkin rikkoa yhteensopivuuden. | ||
Laitevalmistajan tekemä asennuspaketti on yleensä saatavissa suoraan laitevalmistajan www-sivuilta, mutta varsinkin jos käyttää jakelun paketoimaa ydintä, kannattaa ajuritkin asentaa jakelun paketista tai jakelun virallisia ohjeita noudattaen, jotta hyötyisi jakelun mahdollisesti tekemästä sovitustyöstä. | Laitevalmistajan tekemä asennuspaketti on yleensä saatavissa suoraan laitevalmistajan www-sivuilta, mutta varsinkin jos käyttää jakelun paketoimaa ydintä, kannattaa ajuritkin asentaa jakelun paketista tai jakelun virallisia ohjeita noudattaen, jotta hyötyisi jakelun mahdollisesti tekemästä sovitustyöstä. | ||
Rivi 88: | Rivi 88: | ||
== Vaihtoehdot == | == Vaihtoehdot == | ||
Riippumatta siitä löytyykö allaolevista tilanteeseen sopivaa vaihtoehtoja, vieraista | Riippumatta siitä löytyykö allaolevista tilanteeseen sopivaa vaihtoehtoja, vieraista varastoista ei pidä asentaa mitään ylimääräistä. Jos asennettava ohjelma vaatii muita vieraita paketteja, esimerkiksi ohjelmakirjastoja, kannattaa ehdottomasti varmistaa, ettei niiden asentaminen johda kierteeseen, jossa järjestelmän vakaus ja [[paketinhallintajärjestelmä]]n toimivuus vaarannu. | ||
=== Oman jakelun lähdekoodista kääntäminen === | === Oman jakelun lähdekoodista kääntäminen === | ||
Rivi 105: | Rivi 105: | ||
=== Vieraasta lähdekoodista kääntäminen === | === Vieraasta lähdekoodista kääntäminen === | ||
Perinteinen tapa asentaa uusia ohjelmia | Perinteinen tapa asentaa uusia ohjelmia [[Unix]]eihin on [[kääntäminen|kääntää]] ne [[lähdekoodi]]sta. Nykyiset standardit ja työkalut helpottavat ohjelmien kirjoittamista yhteensopivasti ja GNU/Linux on varteenotettava ympäristö Unix-maailmassa. Tästä syystä ohjelmat kääntyvät ja toimivat yleensä ilman suurempia ongelmia ainakin useimmissa PC-ympäristöissä. | ||
Hyvinkäyttäytyvä ohjelma asentuu oletuksena hakemiston /usr/local (tai mahdollisesti /opt), jossa se ei häiritse paketinhallinnan piirissä olevia ohjelmia. Ohjelmasta voi myös kohtuullisen helposti tehdä oman | Hyvinkäyttäytyvä ohjelma asentuu oletuksena hakemiston /usr/local (tai mahdollisesti /opt), jossa se ei häiritse paketinhallinnan piirissä olevia ohjelmia. Ohjelmasta voi myös kohtuullisen helposti tehdä oman jakelun paketin (mahdollisesti jopa pelkällä make-käskyn valitsimella) tai sen voi asentaa [[CheckInstall]]-työkalulla tai vastaavalla, jolloin sen poistaminen myöhemmin on helppoa. | ||
Lähdekoodista käännettäessä yhteensopivuusongelmat ovat vähäisempiä kuin valmiiksi käännettyä ohjelmaa asennettaessa, mutta niitä voi esiintyä. Samaten tietoturvaongelmat ovat yleensä pienemmät, mutta julkisestikin esillä olevaan koodiin voi piilottaa troijanhevosia ja koodi voi olla huonolaatuista. On myös huomattava, että esimerkiksi suljettuihin laiteajureihin saattaa sisältyä itse ajuri valmiiksi käännettynä suljettuna koodina (katso yllä) ja se, mitä käännetään, onkin vain sovituskoodia. | Lähdekoodista käännettäessä yhteensopivuusongelmat ovat vähäisempiä kuin valmiiksi käännettyä ohjelmaa asennettaessa, mutta niitä voi esiintyä. Samaten tietoturvaongelmat ovat yleensä pienemmät, mutta julkisestikin esillä olevaan koodiin voi piilottaa troijanhevosia ja koodi voi olla huonolaatuista. On myös huomattava, että esimerkiksi suljettuihin laiteajureihin saattaa sisältyä itse ajuri valmiiksi käännettynä suljettuna koodina (katso yllä) ja se, mitä käännetään, onkin vain sovituskoodia. | ||
Rivi 119: | Rivi 119: | ||
Jollei keksi helppoa ja turvallista tapaa asentaa jokin kaivattu paketti, kannattaa miettiä onko sen tarve todellinen; ehkä omasta jakelusta löytyisi riittävän hyvä korvike? Ehkä haluttu ohjelma löytyykin eri nimellä? Löytyykö haluttu versio lähdekoodina omalle jakelulle sovitettuna? | Jollei keksi helppoa ja turvallista tapaa asentaa jokin kaivattu paketti, kannattaa miettiä onko sen tarve todellinen; ehkä omasta jakelusta löytyisi riittävän hyvä korvike? Ehkä haluttu ohjelma löytyykin eri nimellä? Löytyykö haluttu versio lähdekoodina omalle jakelulle sovitettuna? | ||
Jos tarve syntyy toisen epävirallisesta | Jos tarve syntyy toisen epävirallisesta varastosta asennettavan paketin riippuvuuksista kannattaa miettiä erityisen vakavasti, ovatko riippuvuudet oikein määritelty. Ehkä kaivattu paketti löytyykin eri nimellä omasta jakelusta? Ehkä alkuperäisen paketin saisi asennettua helpomminkin? Pääsisikö riippuvuudesta kääntämällä jokin osa uudestaan? Vieraiden kirjastojen asentaminen oman jakelun vastaavien tilalle tai rinnalle aikaansaa helposti monimutkaisia ongelmia. Alkuperäistä ongelmaa kannattaa vielä miettiä tarkkaan. | ||
=== Asentaminen eri käyttäjänä === | === Asentaminen eri käyttäjänä === | ||
Rivi 135: | Rivi 135: | ||
Tässä wikissä epävirallisista pakettilähteistä pyritään varoittamaan tällaisella laatikolla: | Tässä wikissä epävirallisista pakettilähteistä pyritään varoittamaan tällaisella laatikolla: | ||
{{Epävirallinen pakettilähde}} | {{Epävirallinen pakettilähde}} | ||
[[Luokka:Tietoturva]] | [[Luokka:Tietoturva]] | ||
[[Luokka:Paketinhallinta]] | [[Luokka:Paketinhallinta]] |