Gentoo Logo

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


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


3. Functionaliteiten van Portage

Inhoud:

3.a. De Portage Functies

Portage heeft verschillende functies die uw Gentoo-ervaring nog beter kunnen maken. Veel van deze functies zijn afhankelijk van softwaretools die onder andere de prestaties, de betrouwbaarheid en de veiligheid verbeteren.

Om bepaalde Portage-functies in of uit te schakelen moet de FEATURES variabele in /etc/make.conf gewijzigd worden. Deze bevat de verschillende feature keywords, gescheiden door een spatie. In enkele gevallen moet ook software geïnstalleerd worden waar de functie afhankelijk van is.

Niet alle functies die Portage ondersteunt, worden hier besproken. Raadpleeg voor een volledig overzicht de make.conf manpage:

Codevoorbeeld 1.1: De make.conf manpage raadplegen

$ man make.conf

Voer emerge --info uit om te achterhalen welke FEATURES standaard ingeschakeld zijn en zoek naar de FEATURES-variabele. Of gebruik grep om de FEATURES variabele eruit te filteren:

Codevoorbeeld 1.2: Uitvinden welke FEATURES momenteel ingeschakeld zijn

$ emerge --info | grep FEATURES

3.b. De compilaties verdelen

distcc gebruiken

distcc is een programma om te compileren bestanden te verdelen over meerdere, niet perse identieke, computers in een netwerk. De distcc client zendt alle nodige informatie naar de beschikbare distcc-servers (distccd) zodat deze delen van de broncode kunnen compileren voor de client. Het resultaat is een kortere compileertijd.

Meer informatie over distcc (en het met Gentoo laten werken) is te vinden in onze Gentoo Distcc Documentatie (Engelstalig).

Distcc installeren

Distcc wordt geleverd met een grafische schil om te kunnen zien welke taken door de computer worden verzonden om gecompileerd te worden. Als u Gnome gebruikt, dan kunt u 'gnome' in uw USE variabele opnemen. Als u geen Gnome gebruikt en toch graag de grafische schil wilt gebruiken zult u 'gtk' in de USE variabele op moeten nemen.

Codevoorbeeld 2.1: Distcc installeren

# emerge distcc

Portage ondersteuning activeren

Voeg distcc toe aan de FEATURES variabele in /etc/make.conf. Pas daarna de MAKEOPTS variabele aan naar eigen wens. Een vuistregel zegt "-jX" in te vullen, waarbij X het aantal CPU's is waarop distccd draait (inclusief de huidige host) plus een. Maar het zou kunnen zijn dat betere resultaten behaald worden met andere getallen.

Start nu distcc-config en vul de lijst met beschikbare distcc-servers in. Als simpel voorbeeld nemen we aan dat de beschikbare distcc-servers 192.168.1.102 (de huidige host), 192.168.1.103 en 192.168.1.104 (twee "remote" hosts) zijn:

Codevoorbeeld 2.2: Distcc configureren om drie distcc servers te gebruiken

# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"

Vergeet niet om zelf ook de distccd deamon te starten:

Codevoorbeeld 2.3: De distccd daemon starten

# rc-update add distccd default
# /etc/init.d/distccd start

3.c. Compileren met gebruik van cache

Over ccache

ccache is een snelle compiler cache. Wanneer een programma gecompileerd wordt, zal het de resultaten cachen zodat iedere keer dat hetzelfde programma opnieuw gecompileerd wordt, de compileertijd flink gereduceerd wordt. Over het algemeen kan dit resulteren in 5 tot 10 maal snellere compilaties.

Als u geïnteresseerd bent in de ins en outs van ccache, bezoek dan de ccache homepage (Engelstalig).

Ccache installeren

Voer emerge ccache uit om ccache te installeren:

Codevoorbeeld 3.1: Ccache installeren

# emerge ccache

Portage-ondersteuning activeren

Open /etc/make.conf en voeg ccache toe aan de FEATURES variabele. Voeg daarna een nieuwe variabele toe met de naam CCACHE_SIZE en geef deze de waarde "2G":

Codevoorbeeld 3.2: CCACHE_SIZE instellen /etc/make.conf

CCACHE_SIZE="2G"

Om ccache-functies te controleren, kunnen er statistieken opgevraagd worden, maar omdat Portage een andere ccache map gebruikt dan de standaard ccache installatie, moet u de CCHACHE_DIR variabele gebruiken:

Codevoorbeeld 3.3: Ccache statistieken bekijken

# CCACHE_DIR="/var/tmp/ccache" ccache -s

De map /var/tmp/ccache is de standaard ccache lokatie voor Portage; wanneer u dit wilt veranderen, kunt u de variabele CCACHE_DIR toevoegen in /etc/make.conf.

Wanneer u echter ccache buiten Portage om gebruikt, wordt de standaard lokatie ${HOME}/.ccache gebruikt. Daarom moet u de variabele CCACHE_DIR ingeven wanneer u de (Portage-)ccache statistieken wilt zien.

Ccache gebruiken voor niet-Portage-compilaties

Om ccache te gebruiken voor niet-Portage-compilaties, dient /usr/lib/ccache/bin aan het begin van de PATH-variabele opgenomen te worden (voor /usr/bin). Dit kan bereikt worden door /etc/env.d/00basic aan te passen, omdat dit het eerste bestand is dat wordt gebruikt om de PATH variabele te definieren:

Codevoorbeeld 3.4: /etc/profile aanpassen

PATH="/usr/lib/ccache/bin:/opt/bin"

3.d. Ondersteuning voor binaire pakketten

Binaire pakketten maken

Portage ondersteunt de installatie van binaire pakketten. Hoewel Portage zelf niet voorziet in binaire pakketten (afgezien van de GRP-snapshots) kan Portage er wel mee omgaan.

Om een binair pakket te maken, kan voor reeds geïnstalleerde pakketten gebruik worden gemaakt van quickpkg. Als het pakket nog niet geïnstalleerd is, kan emerge met behulp van de --buildpkg of --buildpkgonly opties een binair pakket gemaakt worden.

Om van elk pakket dat geïnstalleerd wordt een binair pakket te maken, kan buildpkg aan de FEATURES-variabele toegevoegd worden.

Meer uitgebreide ondersteuning voor het maken van binaire pakketten kan worden verkregen met catalyst. Voor meer informatie over catalyst, lees de Catalyst Reference Manual (Engelstalig) en de Catalyst Veelgestelde Vragen (Engelstalig).

Binaire pakketten installeren

Hoewel Gentoo er geen biedt, kan er een centrale plaats aangemaakt worden waar de binaire pakketten opgeslagen worden. Om Portage hiervan op de hoogte te stellen, dient de variabele PORTAGE_BINHOST te verwijzen naar deze plek. Als bijvoorbeeld de binaire pakketten zich op ftp://buildhost/gentoo bevinden:

Codevoorbeeld 4.1: PORTAGE_BINHOST in /etc/make.conf instellen

PORTAGE_BINHOST="ftp://buildhost/gentoo"

Om een binair pakket te installeren moet de --getbinpkg optie na de --usepkg optie aan het emerge-commando meegegeven worden. De eerste vertelt emerge om het binaire pakket te downloaden van de eerder ingestelde server. De laatste vraagt emerge om eerst te proberen een binair pakket te installeren voordat de broncode gedownload en gecompileerd wordt.

Om bijvoorbeeld gnumeric met een binair pakket te installeren:

Codevoorbeeld 4.2: Het gnumeric binaire pakket installeren

# emerge --usepkg --getbinpkg gnumeric

Meer informatie over emerge's binaire pakket mogelijkheden kan gevonden worden in de manpage van emerge:

Codevoorbeeld 4.3: De emerge manpage lezen

$ man emerge

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


Print

View all

Upgedate op 30 augustus 2006

De originele versie van dit document was laatst geupdate om 12 april 2014

Korte inhoud: Ontdek de mogelijkheden die Portage heeft, zoals ondersteuning voor verdeeld compileren, ccache en meer.

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.