[ << ]
[ < ]
[ 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 |
# 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
# 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
|
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 ]
[ > ]
[ >> ]
The contents of this document, unless otherwise expressly stated, are licensed under the CC-BY-SA-2.5 license. The Gentoo Name and Logo Usage Guidelines apply.
|