|
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 |
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):
-
Standaard USE instelling, vastgesteld in de make.defaults
bestanden die deel uitmaken van uw profiel
-
Geërfde USE instelling als een pakket uit
/etc/make.profile/use.defaults geïnstalleerd is.
-
Door de gebruiker ingestelde USE instelling in /etc/make.conf
-
Door de gebruiker ingestelde USE instelling in
/etc/portage/package.use
-
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 ]
[ 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 ]
- - : Adds GNU Data Access (CORBA wrapper) support for gnumeric
- - : unknown
+ + python : Adds support/bindings for the Python language
+ + bonobo : Adds support for gnome-base/bonobo (Gnome CORBA interfaces)
|
|