Käsikirja
2 FreeBSD Käyttöjärjestelmä
2.6 Ohjelmien asentaminen ja päivittäminen
3 Asennetut palvelinohjelmistot ja niiden käyttäminen
2.6 Ohjelmien asentaminen ja päivittäminen
Pakettijärjestelmän käyttö
Ohjelmat Unix ja Linux ympäristössä
Unixin/Linux levitys tapahtuu yleensä eritavalla kuin Windows maailmassa, jossa kaikki ohjelmat asennetaan exe paketeista jotka purkavat itse itsensä. Unix / Linux puolella käytetään kolmea erilaista vaihtoehtoa ohjelmien levittämiseen. Pakettien hallinta eli paketti manageri, Lähdekoodi ja joskus valmiit binäärit.
Huonoja hyviä puolia Unixin paketointi systeemistä:
- Ohjelmien asentaminen helppoa
- Porteista asennettaessa optimaalisuus ja järjestelmän ajan tasalla pito
- Hieman sekava aloittelijoille varsinkin asennettaessa paketteja vanhalla tavalla tai poistettaessa paketteja
Mitä ne paketit itse asiassa ovat?
Paketit ovat ohjelmia jotka ovat valmiiksi pakattu johonkin tiedostoon, jonka paketti manageri purkaa kiintolevylle kun paketti asennetaan. Käytännössä tämä merkitsee sitä, että ohjelmien asentamiseen käytetään aina samaa komentoa. Lisäksi FreeBSD sisältää portti paketti järjestelmän, jota mm Gentoo Linux on kopioinut omassa järjestelmässään. Paketit sisältävät usein joukon riippuvuuksia toisiin paketteihin, joka voi tuntua ensiksi hieman vaikealta.
Mikä on riippuvuus?
Riippuvuus syntyy paketissa yleisesti siitä, että paketin sisältämä ohjelma tarvitsee jotain toista ohjelmaa tai kirjastoa toimiakseen oikein. Nopea esimerkki tästä voisi olla vaikka k3b, joka on graafinen ohjelma ja sisältää monia muitakin riippuvuuksia. K3b on graafinen neron kaltainen cd-poltto ohjelma, joka käyttää GUI:n alla cdrecord ohjelmaa. Itse asiassa k3b onkin vain cdrecordin graafinen käyttöä helpottava sovellus. Täten k3b:tä ei voida asentaa ennen kuin cdrecord on asennettu järjestelmään.
Porttipakettijärjestelmä?
Portti paketti järjestelmä on näin nopeasti sanottuna kasa erilaisia komento jonoja, jotka osaavat kääntää ohjelman itse , tehdä siitä paketin ja asentaa sen kaikkine riippuvuuksineen. Etuna järjestelmässä on se, että ohjelmat voidaan tehdä suoraan koneellesi sopiviksi. Näin ne toimivat nopeammin ja tuovat sinulle lisää suorituskykyä. Portti järjestelmään on tehty työkalu nimeltä portupgrade, jolla voit pitää järjestelmäsi ohjelmat todella helposti ajan tasalla.
Huonoja- ja hyviäpuolia pakettijärjestelmästä
- Pakettijärjestelmä on nopea
- Helppo käyttää
- Vähän ongelma tilanteita
Hyviäpuolia porttijärjestelmästä
- Helppo pitää ajantasalla
- Uusimmat ohjelmat löytyvät nopeasti
- Helppo käyttöinen
- Lisää suorituskykyä ohjelmille optiomoimalle ne järjestelmälle
- Ohjelman löytäminen on helppoa portti puusta
Huonojapuolia porttijärjestelmästä
- Ongelma tilanteet mikäli joku portti on rikki (voidaan korvata yleensä)
- Vaatii paljon suorituskykyä käännettäessä sovellusta
- Vaatii nettiyhteyden!
Ennen kuin aloitetaan käyttämään pakettijärjestelmää tärkeitä huomioita
Tiedä mitä asennat kun asennat ohjelman järjestelmääsi. Samalla asennetaan myös suuri määrä erilaisia kirjastoja. Joten maltti on valttia tässä asiassa, mikäli haluat pitää järjestelmässäsi siisitänä. Turhaa sinne levylle asentamaan kaikkea tarpeetonta, kun suunnitelet asentavasi sovelluksen tustustu sovellukseen etukäteen esimerkiksi sovelluksen netti sivulta ja harkitse asennusta kaksi kertaa. Varsinkin palvelimet on hyvä pitää siisteinä turhista sovelluksista yms.
Muista myös ne oikeudet pkg_add ja pkg_delete komento vaativat suorittamista pääkäyttäjänä, koska peruskäyttäjänä ei ole oikeuksia kirjoittaa /usr/ hakemistoon!
Pakettijärjestelmän käyttö pkg_add
Mikäli haluat asentaa jonkun fyysisen paketin, jonka olet ladannut systeemisi levylle "pkg_add paketti" voit suorittaa asennuksen. Tällöin ohjelma kertoo sinulle kaikista tarvittavista riippuvuuksista, mikäli niitä on. (Ohjelma ei ennen, kuin kaikki riippuvuudet on täytetty).
Uudempi ja parempi tapa asentaa paketteja järjestelmääsi pkg_add komennolla.
-r | Ohjelma hakee järjestelmääsi ohjelman suoraan netistä täyttäen kaikki riippuvuudet itse. |
-f | Pakota asentamaan paketti (ohittaa riippuvuudet) "älä käytä tästä tulee ongelmia rikkinäisiä ohjelmia yms" |
-i | Poista asennus scripit käytöstä (Voi aiheuttaa ongelmia asennetun ohjelman toimintaan.) |
Lista jo järjestelmääsi asennetuista ohjelmista
pkg_info komenolla saadaan kätevästi tietoja paketeista asennetuista ohjelmista
-a | Näytä kaikkien pakettien kaikki tiedot |
-v | Paketin koko tiedot "näyttää kuvauksen, riippuvuudet, tiedostot joita paketti on luonut koneellesi." (huom tämä parametri vaatii paketin nimeä esim. pkg_info -v gimp-gnome-2.0.0_2,1) |
-D | Näytä asennuksen viestit (vaatii paketin nimen) |
-d | Näytä paketin kuvauksen tiedot (vaatii paketin nimen) |
-s | Näyttää paketin käyttämän tilamäärän kun se on asennettuna järjestelmään kilotavuina (mb 1024 kt) (vaatii paketin nimen) |
-r | Näytä paketit jotka tarvitsevat sovellusta koneellasi |
Vinkki: mikäli haluat etsiä jotain tiettyä pakettijärjestelmästäsi voit kokeilla pkg_info |grep ohjelma . grep komento "etsii" merkki jonoa tulevasta listauksesta ja tulostaa vain ne rivit ohjelma merkki jono täsmäsi. "ei sana kirjain tarkka haku" eli voit voit hakea esim pkg_info |grep gimp jolloin saat kaikki paketit joissa esiintyy gimp sana. Lisää grep:in käytöstä grepi:stä kertovasta ohjeesta.
Paketin poistaminen (toimii myös porteista käännetyille paketeille) pkg_delete.
Huomioitavaa pakettejen poistamisesta. !Lue koko kappale ennen kuin alat toimimaan! suosittelen katsomaan pkg_info -r poistettava_paketti kuinka paljon ala riippuvuuksia paketissa on. mikäli alariippuvuuksilla ei ole mitään tärkeitä riippuvuuksia sinulle tärkeisiin ohjelmiin voit poistaa riippuvuuden ylhäältä alas päin huoletta..
Ohjelman poistossa yleensä kannattaa huomioida:
- Tarvitseeko joku toinen sovellus kyseistä ohjelmaa.
- Entä riippuudet (Voitko poistaa riippuvuuksia joita nykyinen pakettisi tarvitsee)
- Käynnistys scriptat "mikäli ohjelmaa ajatetaan automaattisesti"
Kun olet päättynyt poistaa jonkun paketin koneeltasi. voit tehdä sen pkg_delete paketin-nimi-kokonaan. Eli esimerkiksi
esimerkki. pkg_delete wget-1.8.2_6
Huom. pkg_delete wget ei toimisi!! järjestelmä tarvitsee nimen kokonaan toisin kuin asennettaessa paketteja "pkg_add -r" komennolla. Eli Sinne tulee nyt myös tuo versio numero perään. Niin järjestelmä tietää mitä pakettia ollaan poistamassa.
pkg_delete komentoa käytetään jonkin yksittäisen paketin tai useampien pakettejen poistamiseen.
pkg_delete komennon lisäparametreja (tarvitaan todella harvoin yleensä ovat vaarallisia käyttää)
-a | Tämä poistaa kaikki paketit järjestelmästäsi .. (poistaa kaiken paitsi itse perusjärjestelmän) |
-i | Kysyy käyttäjältä ennen paketin poistamista |
-D | Mikäli paketti sisältää poisto komentojonon älä suorita sitä |
-n | Älä todellisuudessa poista pakettia vaan raportoi poistoon liittyvät komennot "mitä tapahtuu komentoina kun paketti poistetaan" |
-r | Poistaa paketin ja kaikki paketit jotka tarvitsevat kyseistä pakettia riippuvuutena |
Varoituksia: pkg_delete -a tekee aika sileää jälkeä nopeasti ohjelmistasi, pkg_delete -r komentoa käytettäessä täytyy olla todella varovainen. mikäli nappaat jonkun esimerkiksi paketin jolla on paljon riippuvia. Kaikki paketit hierarkiassa tulevat POISTETTAVAKSI alhaalta ylös!
Joten varovaisuutta.
Porttijärjestelmän käyttö
Portti järjestelmän asentaminen ja päivittäminen
Mikäli et ole asentanut portti järjestelmää tai sinulla on jo järjestelmä koneessasi tai sinulla on jo vanhentunut listaus käytössäsi "lista päivittyy kokoajan netissä". Suosittelen sinua tekemään päivitystiedoston porttaus listalle. niin saat viimeisimmän listan.
Pikaohje portti listan hakemiseen ja päivittämiseen
Asennetaan cvsup
Asenna cvsup, paketista jos sinulla ei ole portti listaa asennettuna /usr/ports hakemistossa.
paketista: pkg_add -r cvsup-without-gui
kirjoita: rehash jotta järjestelmäsi osaa hakea cvsup:ia (päivittää järjestelmän hakemistoista löytyvien ohjelmien sisällön)
portti-listasta: cd /usr/ports/net/cvsup-without-gui && make install && make distclean
mikäli ongelmia ei ollut ei tullut erroreita ja pkg_info:lla katsottuna löydät listasta työkalun cvsup-with-gui
kirjoita: rehash jotta järjestelmäsi osaa hakea cvsup:ia kirjottaessa cvsup (päivittää dirrejen sisällön)
cvsup /usr/share/exsamples/cvsup/ports-supfile -h cvsup.fi.freebsd.org
Suosittelen sinua kuitenkin lukemaan cvsup kappaleen läpi, jossa neuvotaan cvsup tiedostojen tekeminen. Lue lisäksi binäärejen optimoinnista kappale (make.conf).
Porttipuu ja porttien asentaminen
Kuinka etsin ohjemaa porttipuusta?
voit kysyä järjestelmältä: whereis ohjelma. jolloin järjestelmä kertoo sinulle ohjelman sijainnin joko asennetun tai porttipuun sijainnin. Voit myös mennä /usr/ports ja etsiä haluamaasi ohjelmaa seuraavalla komennolla "make search key=hakuehto" tämä komento edellyttää sinulta kuitenkin sitä että olet "/usr/ports" hakemistossa.
Miten portit ovat järjesteltynä porttipuussa?
Portit porttipuussa ovat järjesteltynä niiden kategorian mukaan. Esim. irc:een käyttöön liittyvät portit löytyvät /usr/ports/irc/ kansiosta tai sähköpostiin liittyvät portit /usr/ports/mail/.
Kuinka asennan portin?
make komentoa portin kohdalla käytetään kääntämään kyseinen portti binaariksi. (kääntää ja asentaa kaikki ohjelman riippuvuudet)
make install komentoa käytetään asentamaan ohjelma (voit käyttää myös make install jolloin ohjelma kääntyy ja asennetaan paikoilleen.)
Kuinka siivoan käännetyt portit?
make clean siivoaan hakemiston riippuvuuksineen puhtaaksi, josta porttisi käännettiin. (ei poista distfileä)
make distclean poistaa myös lähdekoodin, jota kääntämisessä käytettiin.
Ohjelman poisto porttipuun, portista?
"make deinstall" Komento poistaa asennetun ohjelman, mikäli olet asentanut sen porttipuusta.
Suosittelen käyttämään pkg_delete komentoa.
Porttipuussa olevat tiedostot
Makefile | Asennus komentojono |
pkg-desc | Kuvaus ohjelmasta |
pkg-plist | Minne asennetaan mitäkin kun ohjelma asennetaan.
Joskus pkg-plist sisältää pkg-plist.alpha esim."Minne alpha koneilla tiedostot asennetaan" |
distinfo | Tietoja lähdekoodista jonka komentojono hakee (aitouden varmistus MD5 avaimella ja koonperusteella) paketista |
README.html | Tietoa portista netistä. (voit katsella esim. lynx README.html) |
Ohjelmiston päivittäminen porttipuusta portupgrade työkalulla
Mitä tarvitset?
Tarvitset portupgrade työkalun, jolla päivitys onnistuu helposti ja vaivatta.
Kuinka Asennan portupgrade työkalun?
Porteista:
mene cd /usr/ports/sysutils/portupgrade
Asennuksen käynnistys : make install && make distclean
Tämän jälkeen kirjoitat: rehash (päivität systeemisi "ohjelma listan")
Paketeista:
pkg_add -r portupgrade
rehash
Kuinka käytän portupgrade työkalua?
Portupgraden toiminta perustuu siihen, että se vertaa asennetun paketin versioita porttilistan tai paketin asennettavan paketin versioon, mikäli porttilistassa oleva portti on uudempi kuin nykyinen asennettu paketti voidaan rakentaa ohjelma uudelleen lähdekoodista ja korvata vanha.
Yleisimmät parametrit:
--help | Näyttää avut |
-h |
-a | Tee kaikille paketeille jotka ovat asennettu |
--all |
-A komento | Aja määritetty komento pääkäyttäjän jokaisen asennuksen jälkeen |
--afterinstall komento |
-b | Pidä varmuuskopiot vanhoista versioista. Vanhat paketit säilytetään väliaikaishakemistossa. Selvitä PKG_TMPDIR ja TMPDIR käyttöympäristömuuttujat. |
--backup-packages |
-C | Tee make clean jokaisen asennuksen jälkeen (tämä on oletuksena päällä vaikka et käyttäisikään tätä parametria) |
--cleanup |
-D | Poistaa vialliset "distfilesit" ja yrittää uudelleen jos tarkastus epäonnistuu. Määrittää kaksi kertaa, "make distclean" komennon ennen kuin noutaa tai rakentaa porttia. |
--distclean |
-f | Pakota päivittämään vaikka porttipaketti olisikin vanhempi kuin nykyinen asennettu. |
--force |
-F | Hakee porttien "distfilet" elikkä lähdekoodit, joita portti tarvitsee kääntyäkseen. |
--fetch-only |
-i | Interaktiivinen tila esittää kysymyksiä ennen jokaista päivitystä "päivitetäänkö seuraava ohjelma" |
--interactive |
-k | Pakota päivittämään, vaikka jokin päivitettävän paketin rakentaminen epäonnistuu. (päivitys jatkuu vaikka rakennus epäonnistuu. Ei riko paketteja) . Ohitetaan vain paketti jota ei voida päivittää. |
--keep-going |
-l tidosto | Tallennetaan tulokset tiedostoon mitä tehtiin. |
--results-file tiedosto |
-m | Määritä argumentit jotka lisätään joka käännössä komentoriviltä |
--make-args |
-n | Älä todellisuudessa asenna tai päivitä yhtään pakettia. Näytä vain mitä saatiin tehtyä. |
--noexecute |
-N | Asenna uusipaketti, "kun pakettia ei ole asennettu" kaikki tarvittavat paketit päivitetään (eli suomeksi mikäli sinulla on esim. apache joka on poistettu ja haluat päivittää ja uudelleen asentaa ohjelman kirjoitat portupgrade -No apache tällöin apache paketti asennetaan uutena pakettina ja sen vanhan riippuvuudet päivitetään. |
--new |
-o | Määritä päivitettävä paketti tai paketteja |
--origin |
-r | Rekursiivinen (päivittää myös paketin riippuvuudet) |
--recursive |
-R | Rekursiivinen ylhäätä päin |
--upward-recursive |
-s | Suorittaa komennot sudolla |
--sudo |
-v | Näytä tietoja |
--verbose |
-w | Älä suorita make clean komentoa ennen jokaista kääntöä |
--noclean |
-W | Älä suorita make clean komentoa asennuksen jälkeen |
--nocleanup |
-y | Vastaa kaikkiin komentoihin kyllä |
--yes |
-P | Käytä paketteja porttejen sijasta jos on mahdollista, mikäli haluat määrittää työkalun käyttämään vain paketteja määritä -PP tällöin syrjäytät portit | ^M
--use-packages | ^M
Vinkki : portupgraden käyttäminen voi tuntua hankalalta jota se ei kuitenkaan ole. Itse olen yleensä käyttänyt "portupgrade -arRvk" komentoa päivittämiseen. (katso parametrit listasta, voit joskus tarvita muitakin kuin -arRvk) parametreja.
Mitä jos jokin menee pieleen, eikä päivitys käynnisty?
Joskus päivittäminen ei käynnisty johtuen, paketti listan olemisesta jäljessä edellisestä päivityksestä. Tällöin järjestelmä yleensä pyytää sinut ajamaan pkgdb -F komentoa . Kyseisellä käskyllä editoidaan "pkg tietokantaa, jossa ohjelmapakettien nimet löytyvät". Yleensä portupgrade tarjoaa sinulle viimeisellä rivillään pkgdb komentoa jolla voit eheyttää tietokantasi.
"pkgdb"
-a | Automaattinen korjaus jolloin -F on määritetty (korjaa vain eroavaisuudet paketeista esim. versiot) |
-F | Korjaa tietokanta interaktiivisesti (kysyy kysymyksiä) |
-u | Päivittää ja luo pakettitietokanta tiedoston pkgdb.db $PKG_DBDIR polkuun, joka sijaitsee oletuksena /var/db/pkg hakemistossa vakiona. |
-v | Näytä tietoja |
Vinkki:
ctlr+d voi auttaa joskus kun paketin vanha riippuvuus halutaan poistaa. Lue kuitenkin tarkasti kysymykset joita pkgdb sinulle esittää. "Voit vastata kysymyksiin yleensä myöntävästi"
"portsclean" Porttipuun siivoamistyökalu. Tällä ohjelmalla puhdistat kääntämisessä käytetyt tiedostot pois. Ne vievät koneestasi usein hyvinkin paljon levytilaa, esim. "Openoffice 1.1" 4 gt, valmis binaari 120 mt ja lähdekoodi noin 100 mt.
-C | Poista kaikki porttipuun kääntötiedostot. |
-D | Poistaa myös "distfilet" porteista (lähdekoodin paketin, jonka portti kääntää binaariksi") |
-i | Interaktiivinen tila (kyselee ennen poistoa poistetaanko kyseisen hakemiston tietoja) |
-n | Älä poista mitään "oikeasti" (virtuaalinen poisto) |
|