Gentoo Logo

Disclaimer : This handbook has been replaced by a newer version and is not maintained anymore.


[ << ] [ < ] [ Home ] [ > ] [ >> ]


1. Johdanto Portageen

Content:

1.a. Johdanto Portageen

Portage lienee Gentoon merkittävimpiä keksintöjä. Koska se on niin mukautuva ja sisältää paljon toimintoja, monet pitävät sitä Linux-järjestelmien parhaana ohjelmistonhallintatyökaluna.

Portage on kirjoitettu Pythonilla ja Bashilla. Se on molempien skriptauskielten käyttäjien käytettävissä.

Useimmat käyttäjät hyödyntävät Portage emergen läpi. Tässä kappaleessa ei aiota toistaa tietoja, jotka on saatavilla emergen man-sivulta. Täysimittainen listaus emergen mahdollisuuksista on vain man-sivulla:

Code Listing 1.1: Emerge man-sivun tarkastelu

$ man emerge

1.b. Portagepuu

Ebuildit

Kun ohjeessa puhutaan paketeista, sillä useimmiten tarkoitetaan ohjelmia, jotka ovat Gentoon käyttäjien saatavilla Portagepuun kautta. Portagepuu on kokoelma ebuildeja, tiedostoja, jotka sisältävät Portagen tarvitsemat ohjelman ylläpito-ohjeet (asennukseen, hakemiseen, jne.). Nämä sijaitsevat oletusarvoisesti hakemistossa /usr/portage.

Kun Portagelta kysytään ohjelmiin liittyviä toimintoja, se käyttää järjestelmän ebuildeja pohjatietonaan. On tärkeää, että ebuildit päivitetään tarpeeksi säännöllisesti, että Portage tietäisi uusista ohjelmista, turvallisuuspäivityksistä ja niin edelleen.

Portagepuun päivitys

Portagepuuta päivitetään tyypillisesti rsyncillä. Rsync on nopea ja tehokas tiedostojensiirtokäytäntö. Kun käyttää emergeä apuna, päivitys on helppoa:

Code Listing 2.1: Portagepuun päivitys

# emerge --sync

Jos rsyncin käyttö ei onnistu palomuurin takia, voi Portagepuun silti päivittää päivittäisistä otostarrapalloista. Komento emerge-webrsync hakee ja asentaa tuoreimman otoksen järjestelmään:

Code Listing 2.2: Emerge-webrsyncin suoritus

# emerge-webrsync

1.c. Ohjelmiston ylläpito

Ohjelmien etsiminen

Portagepuuta voi hakea läpi emergen hakutoiminnoilla. Oletuksena komento emerge --search hakee paketit, joiden nimissä on annettu hakutermi.

Esimerkiksi näin etsittäisiin paketteja, joiden nimessä esiintyy pdf:

Code Listing 3.1: Pdf-pakettien haku

$ emerge --search pdf

Haun saa myös käymään läpi pakettien kuvaukset valitsimella --searchdesc (lyhyesti -S):

Code Listing 3.2: Pdf:iin liittyvien pakettien haku

$ emerge --searchdesc pdf

Tulosteessa on paljon tietoja. Kentät on selkeästi otsikoitu, joten emme selitä niistä sen enempää:

Code Listing 3.3: Ote emerge searchin tulosteesta

*  net-print/cups-pdf
      Latest version available: 1.5.2
      Latest version installed: [ Not Installed ]
      Size of downloaded files: 15 kB
      Homepage:    http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
      Description: Provides a virtual printer for CUPS to produce PDF files.
      License:     GPL-2

Ohjelmien asentaminen

Sopivia ohjelmia on hyvin helppo asentaa tarvitessa, käytetään vain komentoa emerge ja paketin nimeä. Esimerkiksi gnumeric asennettaisiin näin:

Code Listing 3.4: Gnumericin asennus

# emerge gnumeric

Monet ohjelmat tosin tarvitsevat toisia ohjelmia tai kirjastoja toimiakseen; tällaista asennettaessa saattaa asentua useita riippuvuuksia mukana. Näistä ei kuitenkaan yleensä tarvitse huolehtia, sillä Portage osaa hoitaa riippuvuudet hyvin. Tarkastellaksesi mitä Portage aikoo asentaa jonkin paketin ohella, käytä valitsinta --pretend. Esimerkiksi:

Code Listing 3.5: Gnumericin asennuksen tarkastelu

# emerge --pretend gnumeric

Kun Portagella asentaa pakettia, se hakee lähdekoodit Internetistä (jos tarpeen) ja tallentaa ne oletusarvoisesti hakemistoon /usr/portage/distfiles. Tämän jälkeen se purkaa, kääntää ja asentaa paketin. Jos halutaan Portagen vain hakevan paketin asentamatta sitä, pitää antaa valitsin --fetchonly komennolle emerge:

Code Listing 3.6: Gnumericin lähdekoodin lataus

# emerge --fetchonly gnumeric

Asennettujen ohjelmien dokumentit

Monet paketeista sisältävät myös dokumentaationsa. Joskus tätä varten on valinnainen doc-USE-asetus. USE-asetuksen voi tarkistaa komennolla emerge -vp <paketti>.

Code Listing 3.7: doc-asetuksen tarkastelu

(alsa-lib on vain hyvä esimerkki.)
# emerge -vp alsa-lib
[ebuild  N    ] media-libs/alsa-lib-1.0.14_rc1  -debug 698 kB

USE-asetusta on järkevintä käyttää pakettikohtaisesti tiedostossa tai hakemistossa /etc/portage/package.use. Järjestelmänlaajuisena asetuksena se voi aiheuttaa ongelmia riippuvuuksien kanssa. Käsikirjan USE-asetuskappaleessa on lisää USE-asetuksista.

Kun paketti on asennettu, sen dokumentaatio yleensä löytyy hakemiston /usr/share/doc paketin nimeä vastaavasta alihakemistosta. Kaikki paketin asennetut tiedostot näkee myös equery-työkalulla, joka kuuluu pakettiin app-portage/gentoolkit (ks. Gentoolkit documentation).

Code Listing 3.8: Paketin dokumentaation etsintä

# ls -l /usr/share/doc/alsa-lib-1.0.14_rc1
total 28
-rw-r--r--  1 root root  669 May 17 21:54 ChangeLog.gz
-rw-r--r--  1 root root 9373 May 17 21:54 COPYING.gz
drwxr-xr-x  2 root root 8560 May 17 21:54 html
-rw-r--r--  1 root root  196 May 17 21:54 TODO.gz

(Vaihtoehtoisesti equeryllä:)
# equery files alsa-lib | less
media-libs/alsa-lib-1.0.14_rc1
* Contents of media-libs/alsa-lib-1.0.14_rc1:
/usr
/usr/bin
/usr/bin/alsalisp
...ja niin edelleen

Ohjelmien poistaminen

Paketit poistetaan järjestelmästä komennola emerge --unmerge. Tämä käskee Portagen poistamaan kaikki paketin asentamat tiedostot paitsi asetustiedostot, joita on muutettu asennuksen jälkeen. Asetustiedostojen säilyttäminen helpottaa ohjelman käyttämistä, jos se asennetaan joskus uudelleen.

On kuitenkin erittäin tärkeää huomata, että Portage ei tarkasta onko poistettava paketti tarpeellinen jollekin muulle paketille. Se varoittaa kuitenkin, jos poistetaan pakettia, joka on tarpeellinen koko järjestelmälle.

Code Listing 3.9: Gnumericin poistaminen

# emerge --unmerge gnumeric

Pakettia poistettaessa, sen mukana asennetut riippuvuudet eivät poistu. Portage osaa hakea kaikki riippuvuudet jotka voisi poistaa emergen komennolla --depclean, tästä kerromme lisää myöhemmin.

Järjestelmän päivittäminen

Jotta järjestelmä pysyisi kunnossa (ja tietoturvakin ajan tasalla), sitä pitää päivittää säännöllisesti. Koska Portage tarkistaa päivitykset Portagepuun ebuildeista, täytyy ensimmäisenä päivittää Portagepuu. Kun Portagepuu on päivitetty, järjestelmän voi päivittää komennolla emerge --update world. Seuraavassa komennossa käytetään myös valitsinta --ask, joka kysyy ennen muutosten tekemistä:

Code Listing 3.10: Järjestelmän päivittäminen

# emerge --update --ask world

Tällä komennolla Portage etsii uudet versiot ohjelmista, jotka on asennettu. Tämä kuitenkin vaikuttaa vain ohjelmiin, jotka on erikseen pyydetty asennettaviksi (so. ohjelmat tiedostossa /var/lib/portage/world), ei niiden kaikkiin riippuvuuksiin. Jos tarvitaan päivittää jokainen paketti järjestelmässä, pitää lisätä valitsin --deep:

Code Listing 3.11: Koko järjestelmän päivittäminen

# emerge --update --deep world

Koska tietoturvapäivitykset usein osuvat paketteihin, joita ei ole erikseen asennettu koneelle, vaan vain muiden ohjelmien riippuvuuksina, tämän komennon käyttöä aika ajoin suositellaan vahvasti.

Jos joitain USE-asetuksia on muutettu, voi olla järkevää lisätä myös valitsin --newuse joukkoon. Tällöin Portage tarkastaa jos muutkoset vaativat pakettien uudelleenasennusta.

Code Listing 3.12: Koko järjestelmän täydellinen päivittäminen

# emerge --update --deep --newuse world

Metapaketit

Portagepuussa on joitain paketteja, joilla ei ole varsinaista sisältöä, vaan pikemminkin ne asentavat joukkoja paketteja. Esimerkiksi kde asentaa täyden KDE-ympäristön järjestelmään hakien tarpeelliset KDE-liittyvät paketit riippuvuuksina.

Tällaista pakettia poistaessa emerge --unmerge ei paljoa auta, sillä riippuvuudethan jäävät järjestelmään.

Portage osaa poistaa myös orpoutuneet riippuvuudet, mutta koska ohjelmat riippuvat toisistaan myös dynaamisesti, pitää koko järjestelmä päivittää ensin, mukaanlukien USE-asetuspohjaiset muutokset. Tämän jälkeen voi suorittaa emerge --depclean poistaakseen orvot riippuvuudet. Kun tämä on tehty, pitää uudelleenasentaa ohjelmat, jotka oli dynaamisesti linkitetty näihin poistettuihin, mutta jotka eivät tarvitse niitä enää.

Kaikki tämä onnistuu kätevästi kolmella komennolla:

Code Listing 3.13: Orpojen riippuvuuksien poisto

# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild

Revdep-rebuild kuuluu pakettiin gentoolkit: muista asentaa se ensin:

Code Listing 3.14: Gentoolkitin asentaminen

# emerge gentoolkit

1.d. Kun Portage antaa virheilmoituksia

Virheilmoitukset SLOTeista, Virtualeista, Brancheista, Architectureista ja Profileista

Kuten aiemmin sanottiin, Portage on hyvin tehokas ja siinä on paljon ominaisuuksia.

Portagessa samasta paketista voi olla useita versioita yhtä aikaa asennettuana. Kun muissa distroissa paketin nimissä ilmoitetaan versionumero (kuten freetype vs. freetype2), Portage käyttää tähän SLOTeja. Ebuildit kertovat ohjelmien SLOTin versioittain. Ebuildit, joissa on määritetty eri SLOTti, voidaan asentaa samaan aikaan järjestelmälle. Esimerkiksi freetypellä on ebuildeja joissa on määritelty SLOT="1" ja SLOT="2".

Lisäksi on joukoittain pakettia, jotka tekevät samaa asiaa, mutta eri toteutuksella. Esimerkiksi metalogd, sysklogd ja syslog-ng ovat kaikki järjestelmälokeja. Ohjelmat, jotka riippuvat tällaisesta toiminnallisuudesta, eivät voi valita riippuvuudekseen vaikkapa metalogd:tä, sillä muutkin toimisivat yhtä hyvin. Portage ratkaisee tämän virtuaaleilla: jokainen järjestelmäloki sisältää virtuaalin virtual/syslog, johon muut sovellukset voivat merkitä riippuvuuden.

Ohjelmisto Portagepuussa jaotellaan useisiin eri haaroihin. Oletusarvoisesti järjestelmään asennetaan vain paketteja, jotka Gentoon kehittäjien mielestä ovat stabiileja. Useimmat uudet ohjelmat liitetään aluksi testaushaaraan, joka tarkoittaa että niitä pitää testata, ennen kuin ne uskaltaa merkitä stabiileiksi. Vaikka näitä paketteja pystyy katselemaan Portagepuusta, niitä ei voi asentaa, ennen kuin ne on sijoitettu stabiiliin haaran.

Jotkut ohjelmat on tehty vain muutamille arkkitehtuureille, toiset vain eivät toimi joillain, tai tarvitsevat lisää testausta. Joissain tapauksissa ohjelman Portagepuuhun lisännyt kehittäjä ei pysty testaamaan ohjelman vakautta muilla alustoilla.

Gentoo-asennukset seuraavat tiettyjä profiilitietoja, joissa on luettelo tarvittavista järjestelmäpaketeista ja muutakin.

Blokatut paketit

Code Listing 4.1: Portagen virheilmoitus blokatusta paketista (--pretend-vaiheessa)

[blocks B     ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1)

Code Listing 4.2: Portagen varoitus blokatusta paketista asennettaessa

!!! Error: the mail-mta/postfix package conflicts with another package.
!!!        both can't be installed on the same system together.
!!!        Please use 'emerge --pretend' to determine blockers.

Ebuildeissa on tietoa riippuvuuksista. Riippuvuuksia on kahta luokkaa: asennusaikaisia ja ajonaikaisia, jotka määritellään vastaavasti muuttujissa DEPEND ja RDEPEND. Jos näissä on merkitty jotakin, jota ei voi asentaa, se johtaa blokkaamiseen.

Blokkaamisen voi ratkaista joko jättämällä paketin asentamatta tai poistamalla blokaavan paketin. Annetussa esimerkissä voi joko jättää postfixin asentamatta tai poistaa ssmtp:n ensin.

Joskus blokkaukset voivat olla versiokohtaisia, kuten <media-video/mplayer-bin-1.0_rc1-r2. Tällöin pelkkä päivitys saattaa ratkaista ongelman.

Joskus voi myös käydä niin, että kaksi asentamatonta pakettia blokkaavat toisensa. Tällaisessa tapauksessa pitää ottaa selvää miksi molempien asennus on tarpeellinen. Yleensä ongelma ratkeaa asentamalla vain toisen paketeista, mutta jollei, raportoi asiasta englanniksi Gentoon bugzillaan.

Peitetyt paketit

Code Listing 4.3: Portagen varoitus peitetystä paketista

!!! all ebuilds that could satisfy "bootsplash" have been masked.

Code Listing 4.4: Portagen selitys peitetystä paketista

!!! possible candidates are:

- gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
- lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
- sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
- dev-util/cvsd-1.0.2 (masked by: missing keyword)
- games-fps/unreal-tournament-451 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)

Jos pitää asentaa paketti, joka ei nykyiselle järjestelmälle ole saatavilla, tulee jokin virheilmoituksista. Tällöin kannattaisi kokeilla toista samanlaista pakettia, tai odottaa että tarvittava paketti tulee saataville. Pakettien peittämiselle on aina erittäin pätevä syy:

  • ~arch keyword tarkoittaa, että sovellusta ei ole vielä testattu tarpeeksi sen merkitsemiseksi stabiiliksi. Odottele muutamia viikkoja ja yritä uudelleen.
  • -arch keyword tai -* keyword tarkoittaa, että sovellus(versio) ei toimi tällä arkkitehtuurilla. Jos olet toista mieltä, kirjoita aiheesta sopiva englanninkielinen ilmoitus bugzillaan.
  • missing keyword tarkoittaa, ettei sovellusta ole testattu koko arkkitehtuurilla vielä. Pyydä arkkitehtuurin ylläpitoa testaamaan, tai kerro omista testituloksista englanniksi bugzillaan.
  • package.mask tarkoittaa, että paketti on viallinen, epästabiili, tai jotain pahempaa, ja kehittäjä on merkannut sen käyttökelvottomaksi.
  • profile tarkoittaa, että paketti ei sovi tämän järjestelmän profiiliin. Sovellus saattaa rikkoa tämän järjestelmän asennettuna, tai sitten se ei vain sovi käytettyyn profiiliin.

Puuttuvat riippuvuudet

Code Listing 4.5: Portagen varoitus puuttuvasta riippuvuudesta

emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-4.2-r4".

!!! Problem with ebuild sys-devel/gcc-3.4.2-r2
!!! Possibly a DEPEND/*DEPEND problem.

Sovellus, jota asennetaan, vaatii sovelluksen, jota ei ole saatavilla tähän järjestelmään. Selaa bugzillaa, josko tämä olisi tunnettu virhe, ja jollei ole, tee siitä vikailmoitus. Jollet käytä useampia versiohaaroja (testausta ja stabiilia) sekaisin, tämän virheen ei pitäisi esiintyä, ja se on siis ilmoitettava bugi.

Monimerkityksiset ebuildien nimet

Code Listing 4.6: Portagen varoitus monimerkityksisistä nimistä

!!! The short ebuild name "aterm" is ambiguous.  Please specify
!!! one of the following fully-qualified ebuild names instead:

    dev-libs/aterm
    x11-terms/aterm

Asennettava sovellus on saman niminen kuin joku toinenkin paketti. Tällöin sille pitää määritellä myös kategoria. Portage kertoo mahdolliset vaihtoehdot joista valita.

Edestakaiset riippuvuudet

Code Listing 4.7: Portagen varoitus edestakaisista riippuvuuksista

!!! Error: circular dependencies:

ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2

Asennettavista sovelluksista kaksi tai useampi riippuu toisistaan, eikä niitä voi asentaa. Tämä on todennäköisesti ongelma Portagepuussa. Koeta uudelleen-rsyncata ja asentaa uudelleen. Voit myös selata läpi bugzillaa, josko ongelma olisi tiedossa, ja ilmoitta, jollei ole.

Haku epäonnistui

Code Listing 4.8: Portagen varoitus epäonnistuneesta hausta

!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
(...)
!!! Some fetch errors were encountered.  Please see above for details.

Portage ei saanut haettua lähdekoodeja ja yrittää jatkaa asennusta ilman (jos mahdollista). Tämä virhe johtuu usein siitä, että peilipalvelimet eivät ole ajan tasalla, tai että ebuild osoittaa väärään paikkaan. Myös lähdekoodeja majoittavassa palvelimessa saattaa olla ongelmia.

Koeta uudelleen tunnin päästä nähdäksesi jos ongelma jatkuu.

Järjestelmäprofiilin suojaus

Code Listing 4.9: Portagen varoitus profiilisuojatuista paketeista

!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.

Yritetään poistaa pakettia, joka kuuluu järjestelmän välttämättömiin paketteihin. Tällainen paketti on merkitty profiiliin, eikä sitä pitäisi koskaan poistaa järjestelmästä.

Digestin varmennusvirheet

Joskus paketin asennus epäonnistuu seuraavalla virheilmoituksella:

Code Listing 4.10: Digest-virhe

>>> Verifying ebuild Manifests...

!!! Digest verification failed:
!!! /usr/portage/virtual/c++-tr1-memory/c++-tr1-memory-0.ebuild
!!! Reason: Failed on MD5 verification
!!! Got: cccc4738cc08ac3c67b14932c85d7cb2
!!! Expected: cccc4738cc08ac3c67b14932c85d7cb3

Tämä tarkoittaa, että Portage-puussa on jotain vialla, yleensä niin, että kehittäjä on tehnyt virheen paketin lisäämisessä puuhun.

Varmennusvirheen tapahtuessa ei kannata yrittää korjata ongelmaa itse. Komento ebuild foo digest ei korjaa ongelmaa, vaan tekee sen pahemmaksi.

Sen sijaan kannattaa odottaa tunti tai pari. Yleensä tällaiset virheet huomataan välittömästi, mutta korjauksen eteneminen puuhun asti saattaa kestää tovin. Odottaessa kannattaa selailla Bugzillasta, josko joku muu olisi huomannut ja ilmoittanut vian. Jollei, kannattaa tehdä uusi bugi-ilmoitus siitä.

Kun vika on korjattu, tarvitsee vain synkata puu uudestaan.

Important: Edes tämän vian sattuessa ei ole sallittua synkata puuta useampaa kertaa päivässä! Rsync-käytännön mukaan (se viesti emerge --syncin alussa) useasti päivässä synkkaavat käyttäjät bännätään. Kannattaa siis odottaa seuraavaan synkkauskertaan.


[ << ] [ < ] [ Home ] [ > ] [ >> ]


Print

View all

Page updated January 31, 2008

This translation is not maintained anymore

Summary: Tässä kappaleessa kerrotaan ohjelmistonhallinnasta muutamia yksinkertaisia juttuja, jotka kaikkien käyttäjien tulisi tietää.

Sven Vermeulen
Tekijä

Daniel Robbins
Tekijä

Chris Houser
Tekijä

Jerry Alexandratos
Tekijä

Seemant Kulleen
Gentoon x86-kehittäjä

Tavis Ormandy
Gentoon alpha-kehittäjä

Brad House
Gentoon AMD64-kehittäjä

Guy Martin
Gentoon HPPA-kehittäjä

Pieter Van den Abeele
Gentoon PPC-kehittäjä

Joe Kallar
Gentoon SPARC-kehittäjä

John P. Davis
Toimittaja

Pierre-Henri Jondot
Toimittaja

Eric Stockbridge
Toimittaja

Rajiv Manglani
Toimittaja

Jungmin Seo
Toimittaja

Stoyan Zhekov
Toimittaja

Jared Hudson
Toimittaja

Colin Morey
Toimittaja

Jorge Paulo
Toimittaja

Carl Anderson
Toimittaja

Jon Portnoy
Toimittaja

Zack Gilburd
Toimittaja

Jack Morgan
Toimittaja

Benny Chuang
Toimittaja

Erwin
Toimittaja

Joshua Kinard
Toimittaja

Grant Goodyear
Katselmoija

Gerald J. Normandin Jr.
Katselmoija

Donnie Berkholz
Katselmoija

Ken Nowack
Katselmoija

Lars Weiler
Contributor

Flammie Pirinen
Vastuullinen kääntäjä

Jouni Hätinen
Käännöksen laatutarkistaja

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.