Gentoo Logo

Disclaimer : Dit document is niet juist en is niet meer onderhouden.


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


1. Een introductie van Portage

Inhoud:

1.a. Welkom bij Portage

Portage is waarschijnlijk Gentoo's meest opmerkelijke innovatie in softwarebeheer. Met zijn hoge flexibiliteit en zijn enorme hoeveelheid aan mogelijkheden wordt het vaak gezien als de beste softwarebeheertool die voor Linux beschikbaar is.

Portage is geheel geschreven in Python en Bash en is daardoor heel zichtbaar voor gebruikers omdat het beide script talen zijn.

De meeste gebruikers zullen met Portage werken via de emerge tool. Dit hoofdstuk is niet bedoeld om de beschikbare informatie uit de emerge handleiding te herhalen. Voor een complete lijst met emerge's mogelijkheden, lees de handleiding:

Codevoorbeeld 1.1: De emerge handleiding lezen

$ man emerge

1.b. De Portageboom

Ebuilds

Als we over pakketten praten, bedoelen we meestal softwaretitels die beschikbaar zijn via de Portageboom. De Portageboom is een verzameling van ebuilds, bestanden die alle informatie bevatten die Portage nodig heeft (om te installeren, te zoeken, uit te lezen, ...). Deze ebuilds staan standaard in /usr/portage.

Op het moment dat u Portage vraagt een taak met betrekking tot softwaretitels uit te voeren, zal het de ebuilds op uw systeem als basis gebruiken. Daarom is het belangrijk dat u regelmatig de ebuilds op uw systeem vernieuwt zodat Portage weet over nieuwe software, beveiligingsupdates, etc.

De Portageboom updaten

De Portageboom wordt meestal bijgewerkt met rsync, een snel werkend bestandsoverdrachtprogramma. Bijwerken is zeer simpel omdat het emerge commando een front-end voor rsync biedt:

Codevoorbeeld 2.1: De Portageboom bijwerken

# emerge --sync

Indien u door firewall-beperkingen geen rsync kunt gebruiken, kunt u nog steeds de Portageboom updaten door onze dagelijks gegenereerde Portageboom snapshots te gebruiken. De emerge-webrsync tool haalt deze automatisch op en installeert deze meteen:

Codevoorbeeld 2.2: Emerge-webrsync draaien

# emerge-webrsync

1.c. Software beheren

Zoeken naar software

Om door de Portageboom naar softwaretitels te zoeken, kunt u de in emerge ingebouwde zoekfunctie gebruiken. Standaard geeft emerge --search de naam terug van de pakketten waarbij de titel (volledig of deels) overeenkomt met de opgegeven zoekterm.

Om bijvoorbeeld te zoeken naar alle pakketten met "pdf" in hun naam:

Codevoorbeeld 3.1: Zoeken naar pdf-genaamde pakketten

$ emerge --search pdf

Indien u ook door de beschrijvingen wil zoeken, kunt u --searchdesc (of -S) gebruiken:

Codevoorbeeld 3.2: zoeken naar pdf-gerelateerde pakketten

$ emerge --searchdesc pdf

Als we kijken naar de resultaten, ziet u dat er veel informatie wordt weergegeven. De velden hebben een duidelijke naam dus daar gaan we niet verder op in:

Codevoorbeeld 3.3: Voorbeeld van de emerge --search resultaten

*  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

Software installeren

Wanneer u een softwaretitel gevonden hebt die u wilt installeren, kunt u dit simpel doen met emerge: voeg gewoon de pakket naam toe. Om bijvoorbeeld gnumeric in installeren:

Codevoorbeeld 3.4: gnumeric installeren

# emerge gnumeric

Omdat veel applicaties op elkaar steunen (afhankelijkheden), is het heel goed mogelijk dat enkele andere applicaties ook worden geïnstalleerd. Geen zorgen, Portage kan deze afhankelijkheden prima aan. Als u wilt weten wat Portage zou installeren als u vraagt een bepaald pakket te installeren, voeg --pretend toe:

Codevoorbeeld 3.5: Doe alsof u gnumeric installeert

# emerge --pretend gnumeric

Als u Portage vraagt een pakket te installeren, zal het, indien nodig, de benodigde broncode van internet downloaden en standaard opslaan in /usr/portage/distfiles. Hierna zal het pakket worden uitgepakt, gecompileerd en geinstalleerd. Als u wilt dat Portage de broncode alleen downloadt zonder ze te installeren, voeg de --fetchonly optie toe aan het emerge commando:

Codevoorbeeld 3.6: Alleen de broncodes downloaden voor gnumeric

# emerge --fetchonly gnumeric

De documentatie bij een geïnstalleerd programma vinden

Veel pakketten komen met eigen documentatie. Soms wordt de doc USE vlag gebruikt om te bepalen of de documentatie wel of niet mee geïnstalleerd moet worden. U kunt controleren of een pakket een doc USE vlag heeft door emerge -vp <naam van het pakket> te gebruiken.

Codevoorbeeld 3.7: Controleren of er een doc USE vlag aanwezig is

(alsa-lib is hier natuurlijk gewoon een voorbeeld.)
# emerge -vp alsa-lib
[ebuild  N    ] media-libs/alsa-lib-1.0.9_rc3  +doc -jack 674 kB

U kunt de doc USE vlag voor het hele systeem aanzetten in het /etc/make.conf bestand, of dit per pakket aangeven in het /etc/portage/package.use bestand. Je kunt ook de map, /etc/portage/package.use, genaamd aanmaken en de zelfde lijst maken in een bestand in deze map. Het USE vlaggen hoofdstuk geeft meer uitleg over dit onderwerp.

Wanneer een pakket is geïnstalleerd, kunt u de documentatie meestal vinden in een submap in /usr/share/doc, genaamd naar het pakket. U kunt ook een lijst van alle geïnstalleerde bestanden opvragen met behulp van het equery programma, dat onderdeel is van de app-portage/gentoolkit pakket (Engelstalig).

Codevoorbeeld 3.8: De documentatie bij een pakket vinden

# ls -l /usr/share/doc/alsa-lib-1.0.9_rc3
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

(Alternatief: gebruik equery om de bestanden te vinden:)
# equery files alsa-lib | less
media-libs/alsa-lib-1.0.9_rc3
* Contents of media-libs/alsa-lib-1.0.9_rc3:
/usr
/usr/bin
/usr/bin/alsalisp
(Resultaten ingekort)

Software verwijderen

Als u een softwarepakket van uw systeem wilt verwijderen, gebruikt u emerge --unmerge. Dit vertelt Portage dat het alle bestanden van dat pakket moet verwijderen behalve de configuratie bestanden van die applicatie als u ze gewijzigd heeft na de installatie. De configuratie bestanden laten staan heeft het voordeel dat u direct verder kunt werken als u besluit het pakket opnieuw te installeren.

Echter, een grote waarschuwing is van toepassing: Portage zal niet controleren of het pakket dat u wilt verwijderen vereist is voor een ander pakket. Het zal echter wel waarschuwen als u een belangrijk pakket wilt verwijderen wat tot gevolg heeft dat het systeem niet meer kan draaien.

Codevoorbeeld 3.9: Gnumeric van het systeem verwijderen

# emerge --unmerge gnumeric

Als u een pakket van het systeem verwijdert, blijven de afhankelijkheden van dat pakket op uw systeem geïnstalleerd. Om Portage al deze afhankelijkheden te laten vinden, kun u de emerge --depclean functie gebruiken. We gaan het hier later over hebben.

Uw systeem updaten

Om uw systeem in vorm te houden (en niet te vergeten de meest recente beveiligingsupdates te installeren), dient u het systeem regelmatig te updaten. Omdat Portage alleen de ebuilds in de Portageboom controleert, dient u eerst de Portageboom te updaten. Als dat klaar is, kunt u het systeem updaten met emerge --update world. In het volgende voorbeeld zullen we ook de --ask optie gebruiken, die portage een lijst met te updaten pakketten laat tonen, met de vraag of u verder wilt gaan of niet:

Codevoorbeeld 3.10: Uw systeem updaten

# emerge --update --ask world

Portage zal dan zoeken naar een nieuwere versie van de applicaties die u heeft geïnstalleerd. Het zal echter alleen de versies controleren van de applicaties die u specifiek hebt geïnstalleerd - niet de afhankelijkheden. Als u ieder pakket op uw systeem wil updaten, voeg het --deep argument toe:

Codevoorbeeld 3.11: Uw gehele systeem updaten

# emerge --update --deep world

Omdat beveiligingsupdates ook nogal eens voorkomen in pakketten die u niet expliciet zelf hebt geïnstalleerd (maar dus door het installeren van andere pakketten), is het aan te raden om af en toe dit commando te gebruiken.

Als u een van uw USE vlaggen recent heeft gewijzigd wilt u misschien ook --newuse toevoegen. Portage controleert dan of er nieuwe pakketten geïnstalleerd moeten worden of hercompilatie van reeds geïnstalleerde pakketten nodig is:

Codevoorbeeld 3.12: Een complete update uitvoeren

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

Mini pakketten

Sommige pakketten in de Portageboom hebben niet echt inhoud maar worden gebruikt om een verzameling van pakketten te installeren. Het kde pakket zal bijvoorbeeld de hele KDE-omgeving op uw systeem installeren door KDE-gerelateerde pakketten als afhankelijkheden op uw systeem te installeren.

Als u zo'n pakket wilt verwijderen, zal emerge --unmerge weinig zin hebben omdat de afhankelijkheden op uw systeem blijven staan.

Portage heeft de functionaliteit om zogenaamde wezen (programma's die zijn achtergebleven na het verwijderen van een ander programma) te verwijderen, maar omdat de beschikbaarheid van software dynamisch afhankelijk is, dient u eerst het gehele systeem te updaten, inclusief veranderingen die u heeft doorgevoerd door uw USE vlaggen aan te passen. Hierna kunt u emerge --depclean gebruiken om de wezen te verwijderen. Als dit klaar is, dient u de applicaties te herbouwen die gelinkt waren aan de nu verwijderde software titels.

Dit gebeurt met de drie volgende commando's:

Codevoorbeeld 3.13: Wezen verwijderen

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

revdep-rebuild wordt geleverd door het gentoolkit pakket; vergeet dit niet eerst te emergen:

Codevoorbeeld 3.14: Het gentoolkit pakket installeren

# emerge gentoolkit

1.d. Als Portage klaagt ...

Over SLOTs, virtuals, branches, architecturen en profielen

Zoals eerder gezegd, Portage is extreem krachtig en ondersteunt veel mogelijkheden die andere softwarebeheer tools niet hebben. Om dit te begrijpen zullen we enkele aspecten van Portage uitleggen zonder er te diep op in te gaan.

Met Portage kunnen verschillende versies van een enkel pakket gelijktijdig op het systeem staan. Terwijl andere distributies de gewoonte hebben hun pakketten te noemen naar de versie (zoals freetype en freetype2) gebruikt Portage een technologie genaamd SLOTs. Een ebuild stelt een bepaald SLOT voor zijn versie vast. Ebuilds met verschillende SLOTs kunnen gelijktijdig op het systeem staan. Het freetype pakket heeft bijvoorbeeld ebuilds met SLOT="1" en SLOT="2".

Er zijn ook pakketten die dezelfde functionaliteit bieden, maar op een andere manier geïmplementeerd zijn. metalog, sysklogd en syslog-ng zijn bijvoorbeeld allemaal systeemloggers. Applicaties die steunen op de beschikbaarheid van "een systeemlogger" kunnen bijvoorbeeld niet steunen op metalogd omdat andere systeemloggers net zo goed er op kunnen staan. Portage staat daarom virtuals toe: iedere systeemlogger biedt virtual/syslog zodat applicaties op virtual/syslog kunnen steunen.

Software in de Portageboom kan in verschillende branches zitten. Standaard accepteert uw systeem alleen pakketten die Gentoo stabiel acht. De meeste nieuwe softwaretitels zitten nadat ze worden toegevoegd in de testing branch, wat betekent dat er meer getest moet worden voordat ze stabiel worden bevonden. Hoewel u de ebuilds wel zult zien in de Portageboom, zal Portage ze niet updaten voordat ze in de stable branch worden gezet.

Bepaalde software is slechts beschikbaar voor enkele architecturen. Of de software werkt niet op andere architecturen of het moet verder getest worden of de ontwikkelaar die de software in de Portageboom heeft gezet kan niet controleren of de software op andere architecturen werkt.

Iedere Gentoo installatie volgt een bepaald profiel wat, onder andere, de lijst met voor het systeem noodzakelijke software bevat.

Blokkerende pakketten

Codevoorbeeld 4.1: Portage waarschuwing over blokkerende pakketten (met --pretend)

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

Codevoorbeeld 4.2: Portage waarschuwing over blokkerende pakketten (zonder --pretend)

!!! 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.

Ebuilds bevatten specifieke velden die Portage vertellen over zijn afhankelijkheden. Er zijn twee mogelijke afhankelijkheden: build afhankelijkheden, bepaald in DEPEND en run-time (draai) afhankelijkheden, bepaald in RDEPEND. Als een van deze afhankelijkheden uitdrukkelijk een pakket of virtual als niet compatibel markeert, volgt er een blokkade.

Om een blokkade op te lossen, kunt u kiezen om het pakket niet te installeren of het pakket wat problemen geeft te unmergen. In het gegeven voorbeeld kunt u kiezen om postfix niet te installeren of ssmtp eerst te verwijderen.

Het is ook mogelijk dat twee pakketten twee pakketten die u wilt installeren elkaar blokkeren. In dit uitzonderlijke geval kunt het beste kijken of u wel echt beide pakketten nodig heeft of ook met slechts één van de twee verder kunt. Zo niet, vul dan een bugrapport in op Gentoo's bugtracking systeem.

Verborgen pakketten

Codevoorbeeld 4.3: Portage waarschuwing over verborgen pakketten

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

Codevoorbeeld 4.4: Portage waarschuwing over verborgen pakketten - reden

!!! 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)
- media-video/ati-gatos-4.3.0 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)

Wanneer u een pakket wil installeren dat niet voor uw systeem beschikbaar is, zult u een foutmelding zien. U kunt een andere applicatie die wel voor u beschikbaar is installeren of wachten tot het pakket wel voor u beschikbaar komt. Er is altijd een reden waarom een pakket verborgen is:

  • ~arch keyword betekent dat de applicatie niet voldoende is getest om in de stabiele branch gezet te worden. Wacht een paar dagen of weken en probeer het opnieuw.
  • -arch keyword of -* keyword betekent dat de applicatie niet werkt op uw architectuur. Als u gelooft dat het pakket prima werkt, vul dan een bug in op onze bugzilla website. Doe dit alstublieft wel in het Engels.
  • missing keyword betekent dat de applicatie nog niet op uw architectuur is getest. Vraag het architectuur porting team om het te testen of test het pakket voor ze en vertel uw bevindingen op onze bugzilla website. Ook dit graag in het Engels.
  • package.mask betekent dat het pakket corrupt, onstabiel (of erger) bevonden is en daarom met opzet verborgen is, gebruik dit dus niet.
  • profile betekent dat het pakket niet geschikt bevonden is voor uw profiel. De applicatie kan uw systeem beschadigen als u het installeert of het is gewoon niet compatibel met het door u gebruikte profiel.

Afwezige afhankelijkheden

Codevoorbeeld 4.5: Portage waarschuwing over afwezige afhankelijkheden

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

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

De applicatie die u probeert te installeren steunt op een ander pakket dat niet beschikbaar is voor uw systeem. Controleer bugzilla of het bekend is en zo niet, meldt het dan alstublieft. Tenzij u branches combineert zou dit niet voor mogen komen en is dus een bug.

Overkoepelende ebuild naam

Codevoorbeeld 4.6: Portage waarschuwing over overkoepelende ebuild namen

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

    dev-libs/aterm
    x11-terms/aterm

De applicatie die u probeert te installeren heeft een naam die overeenkomt met andere pakketten. U dient de categorienaam ook op te geven. Portage zal u meerdere opties geven waaruit u kunt kiezen.

Circulaire afhankelijkheden

Codevoorbeeld 4.7: Portage waarschuwing over Circulaire afhankelijkheden

!!! 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

Twee (of meer) pakketten die u wilt installeren hangen af van elkaar en kunnen daarom niet geïnstalleerd worden. Dit is zeer waarschijnlijk een fout in de Portageboom. Resync na een tijdje en probeer het opnieuw. U kunt ook op bugzilla kijken of het een bekend probleem is, zo niet, vertel het ons dan alstublieft. Ook nu weer graag in het Engels.

Fetch faalde

Codevoorbeeld 4.8: Portage waarschuwing over fetch failed

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

Portage was niet in staat om de broncode van de gegeven applicatie te downloaden en zal (indien mogelijk) proberen door te gaan met andere applicaties te installeren. Deze fout kan ontstaan doordat een mirror nog niet volledig gesynchroniseerd is of omdat de ebuild naar de verkeerde locatie verwijst. De server waar de broncodes staan kan ook om een of andere reden down zijn.

Probeer het na een uur opnieuw om te zien of het probleem nog steeds bestaat.

Systeem profiel beveiliging

Codevoorbeeld 4.9: Portage waarschuwing over profiel-beveiligde pakketten

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

U heeft gevraagd om een pakket wat deel uitmaakt van de hoofd pakketten van uw systeem te verwijderen. Het staat in uw profiel als noodzakelijk en zou daarom niet van uw systeem verwijderd moeten worden.


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


Print

View all

Upgedate op 30 augustus 2006

De originele versie van dit document was laatst geupdate om 17 augustus 2014

Korte inhoud: Dit hoofdstuk legt de "simpele" stappen uit die een gebruiker in ieder geval moet kennen om de software op zijn systeem te onderhouden.

Sven Vermeulen
Author

Roy Marples
Author

Daniel Robbins
Author

Chris Houser
Author

Jerry Alexandratos
Author

Seemant Kulleen
Gentoo x86 Developer

Tavis Ormandy
Gentoo Alpha Developer

Jason Huebel
Gentoo AMD64 Developer

Guy Martin
Gentoo HPPA developer

Pieter Van den Abeele
Gentoo PPC developer

Joe Kallar
Gentoo SPARC developer

John P. Davis
Editor

Pierre-Henri Jondot
Editor

Eric Stockbridge
Editor

Rajiv Manglani
Editor

Jungmin Seo
Editor

Stoyan Zhekov
Editor

Jared Hudson
Editor

Colin Morey
Editor

Jorge Paulo
Editor

Carl Anderson
Editor

Jon Portnoy
Editor

Zack Gilburd
Editor

Jack Morgan
Editor

Benny Chuang
Editor

Erwin
Editor

Joshua Kinard
Editor

Tobias Scherbaum
Editor

Xavier Neys
Editor

Grant Goodyear
Reviewer

Gerald J. Normandin Jr.
Reviewer

Donnie Berkholz
Reviewer

Ken Nowack
Reviewer

Lars Weiler
Contributor

Dimitry Bradt
Translator

Donate to support our development efforts.

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