Gentoo Logo

1.  Wat zijn USE vlaggen?

Het idee achter USE vlaggen

Als u Gentoo (of een willekeurige andere distributie, of zelfs besturingssysteem) installeert, maakt u, afhankelijk van de bestemming ervan, keuzes. Een setup voor een server verschilt van een setup voor een workstation. Een spelletjes-pc verschilt van een 3D-rendering workstation.

Dit is niet alleen waar voor de keuzes qua pakketten die u wilt installeren, maar ook welke mogelijkheden een bepaald pakket moet hebben. Als u geen OpenGL nodig heeft, waarom zou u dan OpenGL willen installeren en OpenGL-ondersteuning in de meeste van uw pakketten bouwen? Als u geen KDE wilt gebruiken, waarom zou u pakketten willen compileren met KDE-ondersteuning terwijl ze perfect zonder werken?

Om u te helpen kiezen wat wel en wat niet te installeren en activeren, willen we u op een eenvoudige manier uw omgeving laten definiëren. Dit dwingt u een keuze te maken wat u echt wilt en maakt het voor Portage, ons pakketbeheersysteem, makkelijker om nuttige beslissingen te maken.

Definitie van een USE vlag

Voer de USE vlaggen in. Zo'n vlag is een sleutelwoord dat staat voor de ondersteunings- en afhankelijkheidsinformatie voor een bepaald concept. Als u een bepaalde USE-vlag definieert, zal Portage weten dat u ondersteuning voor het gekozen sleutelwoord wil. Natuurlijk verandert dit ook de afhankelijkheden van een pakket.

Laten we kijken naar een specifiek voorbeeld: het kde sleutelwoord. Als u dit sleutelwoord niet in uw USE variabele hebt, zullen alle pakketten met optionele KDE-ondersteuning zonder KDE-ondersteuning gecompileerd worden. Alle pakketten met een optionele KDE-afhankelijkheid zullen zonder de KDE-bibliotheken (als afhankelijkheid) geïnstalleerd worden. Als u het kde sleutelwoord wel gebruikt, zullen die pakketten wel met KDE-ondersteuning gecompileerd worden, en de KDE-bibliotheken zullen als afhankelijkheid geïnstalleerd worden.

Door de sleutelwoorden op de correcte wijze te kiezen, kunt u een systeem krijgen dat precies aan uw eisen voldoet.

Welke USE vlaggen bestaan?

Er zijn twee typen USE vlaggen: globale en lokale USE vlaggen.

  • Een globale USE vlag wordt door meerdere pakketten gebruikt, over het hele systeem. Dit is wat de meeste mensen als een USE vlag zien.
  • Een lokale USE vlag wordt gebruikt door één enkel pakket om pakket specifieke keuzes te maken.

Een lijst met beschikbare globale USE vlaggen kan online (Engelstalig) of lokaal in /usr/portage/profiles/use.desc worden gevonden.

Een lijst met beschikbare lokale USE vlaggen kan worden gevonden in /usr/portage/profiles/use.local.desc.

1.  USE vlaggen gebruiken

Permanente USE vlaggen vaststellen

In de hoop dat u overtuigd bent van het belang van USE vlaggen, zullen we u nu vertellen hoe u USE vlaggen definieert.

Zoals eerder vermeld, alle USE vlaggen zijn gedefinieerd binnen de USE variabele. Om het voor gebruikers makkelijker te maken om USE vlaggen te kiezen, bieden we een standaard USE-instelling. Deze instelling is een verzameling van USE vlaggen waarvan wij denken dat ze algemeen gebruikt worden door Gentoo-gebruikers. Deze standaardinstelling is vastgesteld in de make.defaults bestanden, die deel uitmaken van uw profiel.

Naar het profiel waarnaar u systeem luistert, wordt verwezen door de /etc/make.profile symlink. Ieder profiel werkt boven een ander, groter, profiel wat resulteert in een optelsom van alle profielen. Het bovenste profiel is het basis-profiel (/usr/portage/profiles/base).

Laten we een blik werpen op deze standaard instelling:

Codevoorbeeld 1.1: Cumulatieve make.defaults USE variabele voor het 2004.3 profiel

(Dit voorbeeld is de optelsom van de instelling in base, default-linux,
 default-linux/x86 en default-linux/x86/2004.3)
USE="x86 oss apm arts avi berkdb bitmap-fonts crypt cups encode fortran f77
     foomaticdb gdbm gif gpm gtk imlib jpeg kde gnome libg++ libwww mad
     mikmod motif mpeg ncurses nls oggvorbis opengl pam pdflib png python qt
     quicktime readline sdl spell ssl svga tcpd truetype X xml2 xmms xv zlib"

Zoals u kunt zien bevat deze variabele al een redelijk aantal sleutelwoorden. Verander geen make.defaults bestand om de USE variabele naar uw wens aan te passen: veranderingen worden ongedaan gemaakt zodra u Portage update!

Om deze standaard instelling aan te pasen, dient u sleutelwoorden toe te voegen of te verwijderen uit de USE variabele. Dit wordt globaal gedaan door de USE variabele in /etc/make.conf te definiëren. In deze variabele kunt u benodigde extra USE vlaggen toevoegen, of ongewenste USE vlaggen verwijderen. Dit laatste wordt gedaan door een min-teken ("-") voor het sleutelwoord te zetten.

Om bijvoorbeeld ondersteuning voor KDE en QT te verwijderen maar ondersteuning voor ldap toe te voegen, kan de volgende USE vastgesteld worden in /etc/make.conf:

Codevoorbeeld 1.1: Een voorbeeld USE instelling in /etc/make.conf

USE="-kde -qt ldap"

USE vlaggen voor individuele pakketten

Soms wilt u een bepaalde USE-vlag voor een (of een paar) applicaties vaststellen, maar niet voor het hele systeem. Om dit te bereiken, zult u de map /etc/portage moeten aanmaken (indien deze nog niet bestaat) en /etc/portage/package.use aanpassen.

Wanneer u bijvoorbeeld globaal geen ondersteuning wilt voor berkdb, maar u wilt wel dat mysql het ondersteunt, kunt u dit toevoegen:

Codevoorbeeld 1.1: /etc/portage/package.use voorbeeld

dev-db/mysql berkdb

U kunt natuurlijk ook expliciet USE vlaggen uit zetten voor een bepaalde applicatie. Bijvoorbeeld, indien u geen java ondersteuning in PHP wil:

Codevoorbeeld 1.1: /etc/portage/package.use tweede voorbeeld

dev-php/php -java

Tijdelijk USE vlaggen vaststellen

Soms wilt u slechts één keer een bepaalde USE instelling gebruiken. In plaats van twee keer /etc/make.conf aan te passen (instellen en weer er uit halen), kunt u ook de USE variabele als omgevingsvariabele instellen. Onthoud dat de veranderingen verloren gaan wanneer u deze applicatie remerget of update (expliciet of als deel van een systeem update)!

Als voorbeeld zullen we tijdelijk java uit de USE instelling halen tijdens de installatie van Mozilla.

Codevoorbeeld 1.1: USE als omgevings variabele gebruiken

# USE="-java" emerge mozilla

Automatische USE vlaggen

Sommige pakketten voegen automatisch USE vlaggen toe wanneer u deze niet expliciet uitschakeld. Een lijst van pakketten die automatisch USE vlaggen toevoegen is te vinden in /etc/make.profile/use.defaults en in de use.defaults bestanden van de onderliggende profielen.

Codevoorbeeld 1.1: Een stukje van /etc/make.profile/use.defaults

gnome           gnome-base/gnome
gtk             x11-libs/gtk+
qt              x11-libs/qt
kde             kde-base/kdebase
motif           x11-libs/openmotif

Prioriteiten

Natuurlijk is er een bepaalde voorrang die bepaalt welke USE-vlag ingesteld zal staan. U wilt niet USE="-java" instellen om er dan achter te komen dat java sowieso gebruikt wordt omdat er een instelling met een hogere prioriteit is. De voorkeur voor de USE-instelling is op volgorde van prioriteit (eerste heeft de laagste prioriteit):

  1. Standaard USE instelling, vastgesteld in de make.defaults bestanden die deel uitmaken van uw profiel
  2. Geërfde USE instelling als een pakket uit /etc/make.profile/use.defaults geïnstalleerd is.
  3. Door de gebruiker ingestelde USE instelling in /etc/make.conf
  4. Door de gebruiker ingestelde USE instelling in /etc/portage/package.use
  5. Door de gebruiker als omgevingsvariabele ingestelde USE instelling

Om de uiteindelijke USE instelling te zien zoals Portage die ziet, draai emerge --info. Dit zal alle relevante variabelen met hun inhoud laten zien (inclusief de USE variabele).

Codevoorbeeld 1.1: Emerge --info draaien

# emerge --info

Uw hele systeem aanpassen aan nieuwe USE vlaggen

Als u de USE vlaggen hebt aangepast en u wilt het hele systeem updaten zodat de nieuwe USE vlaggen worden gebruikt, gebruik dan emerge's --newuse optie:

Codevoorbeeld 1.1: Je hele systeem updaten

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

Draai nu Portage's depclean om de voorwaardelijke afhankelijkheden die zijn gemerged op uw "oude" systeem, maar nu niet meer nodig zijn, te verwijderen.

Waarschuwing: emerge --depclean draaien is een gevaarlijke operatie en dient met zorg behandeld te worden. Double-check de lijst met "oude" pakketten om er zeker van te zijn dat het geen benodigde pakketten verwijdert. In het volgende voorbeeld voegen we de -p optie toe zodat hij alleen de lijst met pakketten geeft zonder ze te verwijderen.

Codevoorbeeld 1.1: Oude pakketten verwijderen

# emerge -p --depclean

Als depclean klaar is, draai revdep-rebuild om applicaties te herbouwen die dynamisch gelinkt zijn met gedeelde objecten die mogelijk werden geleverd door verwijderde pakketten. revdep-rebuild is een deel van het gentoolkit pakket; vergeet dit niet eerst te emergen.

Codevoorbeeld 1.1: Revdep-rebuild draaien

# revdep-rebuild

Als dit klaar is, gebruikt uw systeem de nieuwe USE vlag instellingen.

1.  Pakket specifieke USE vlaggen

Beschikbare USE vlaggen bekijken

Laten we het voorbeeld van mozilla nemen: naar welke USE vlaggen luistert het? Om dit uit te vinden gebruiken we emerge met de --pretend en --verbose opties:

Codevoorbeeld 1.1: De gebruikte USE vlaggen bekijken

# emerge --pretend --verbose mozilla
These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild   R   ] www-client/mozilla-1.7.12-r2  USE="crypt gnome java mozsvg ssl
truetype xprint -debug -ipv6 -ldap -mozcalendar -mozdevelop -moznocompose
-moznoirc -moznomail -moznoxft -postgres -xinerama" 0 kB

emerge is niet het enige gereedschap voor deze job. Sterker nog, we hebben een speciale tool om pakketinformatie te zien. Deze heet equery en is onderdeel van het gentoolkit pakket. Installeer eerst gentoolkit:

Codevoorbeeld 1.1: Gentoolkit installeren

# emerge gentoolkit

Draai nu equery met het uses argument om de USE vlaggen van een bepaald pakket te zien. Voor het gnumeric pakket bijvoorbeeld:

Codevoorbeeld 1.1: Etcat gebruiken om de gebruikte USE vlaggen te zien

# equery uses gnumeric
[ Colour Code : set unset ]
[ Legend      : (U) Col 1 - Current USE flags        ]
[             : (I) Col 2 - Installed With USE flags ]

 U I [ Found these USE variables in : app-office/gnumeric-1.2.0 ]
 - - libgda  : Adds GNU Data Access (CORBA wrapper) support for gnumeric
 - - gnomedb : unknown
 + + python  : Adds support/bindings for the Python language
 + + bonobo  : Adds support for gnome-base/bonobo (Gnome CORBA interfaces)

Upgedate op 13 januari 2006

De originele versie van dit document was laatst geupdate om 17 december 2013

Donate to support our development efforts.

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