Gentoo Logo

Disclaimer : This document is not valid and is not maintained anymore.


[ << ] [ < ] [ Hjem ] [ > ] [ >> ]


2. USE-flag

Indhold:

2.a. Hvad er USE-flag?

Ideerne bag ved USE-flag

Når du installerer Gentoo (eller enhver anden distribution, eller endda operativ-system for at nævne det) foretager du nogle valg, afhængigt af miljøet du arbejder med. En opsætning af en server er forskellig fra en opsætning af en arbejdsstation. En spil-arbejdsstation er forskellig fra en 3D-gengivelse-arbejdsstation.

Det er ikke kun rigtigt for at vælge de pakker, som du vil installere, men også hvilke egenskaber en specifik pakke bør understøtte. Hvis du ikke behøver OpenGL, hvorfor skulle du interessere dig for at installere OpenGL og bygge OpenGL-understøttelse til de fleste af vores pakker? Hvis du ikke vil bruge KDE, hvorfor vi du interessere dig for at kompilere pakker med KDE-understøttelse, hvis disse pakker virker fejlfrit uden?

For at hjælpe brugere med at beslutte, hvad man bør installere/aktivere eller ikke, vil vi få brugeren til at specificere sit miljø på en nem måde. Dette tvinger brugeren til at beslutte, hvad han virkelig vil have og letgør processen for Portage, vores pakkebehandlingssystem, for at lave hjælpsomme beslutninger.

Definition af et USE-flag

Tag et skridt ind i USE-flag verdenen. Sådan et flag er et nøgleord, der udtrykker understøttelse og afhængighedsinformationer til sådan et koncept. Hvis du definerer et specifikt USE-flag, vil Portage vide om, at du vil have understøttelse for dette valgte nøgleord. Selvfølgelig vil dette også ændre afhængighedsinformationerne for en pakke.

Lad os tage et kig på et specifikt eksempel: kde-nøgleordet. Hvis du ikke har dette nøgleord i dine USE-variablerne, vil alle pakker, som har valgfri KDE-understøttelse, blive kompileret uden KDE-understøttelse. Alle pakker, som har valgfrie KDE-afhængigheder, vil blive installeret uden at installere KDE-biblioteker (som en afhængighed). Hvis du har defineret kde-nøgleordet, vælg da de pakker, som vil være kompileret med KDE-understøttelse, og KDE-libs vil blive installeret, som en afhængighed.

Ved at definere nøgleordene korrekt, vil du modtage et system, som er skræddersyet specifikt til dine behov.

Hvilke USE-flag eksisterer?

Der er to typer USE-flag: globale og lokale USE-flag.

  • Et globalt USE-flag er brugt af en del pakker, over hele systemet. Dette er hvad de fleste folk forstår som USE-flag.
  • Et lokalt USE-flag er brugt af en enkelt pakke for at lave pakke-specifikke beslutninger.

En liste over tilgængelige globale USE-flag, kan blive fundet online eller lokalt i /usr/portage/profiles/use.desc. Et kort (meget ufuldendt) udsnit:

Kode oversigt 1.1: Et kort udsnit af tilgængelige USE-flag

gtk     - Tilføjer understøttelse til x11-libs/gtk+ (GIMP-værktøjskassen)
gtk2    - Brug af gtk+-2.0.0 i stedet for gtk+-1.2 i nogle situationer, hvor programmet undersøtter begge.
gtkhtml - Tilføjer understøttelse til gnome-extra/gtkhtml
guile   - Tilføjer understøttelse til dev-util/guile (interpreter til Scheme)
icc     - Brug af Intels C++ Compiler, hvis pakken understøtter det
icc-pgo - Aktivering af 'PGO data generation' eller brug den ved brug af icc.
imap    - Tilføjer understøttelse til IMAP

En liste over lokale mulige USE-flag kan blive fundet lokalt i /usr/portage/profiles/use.local.desc.

2.b. Brug af USE-flag

Erklær permanente USE-flag

I håbet af at du er overbevist om vigtigheden af USE-flag, vil vi nu informere dig om, hvordan man erklærer USE-flag.

Som tidligere nævnt, er alle USE-flags erklæret inde i USE-variabelen. For at gøre det nemt for brugere at søge og vælge USE-flag, har vi allerede leveret en standard USE-indstilling. Denne indstilling er en samling af USE-flag, som vi mener er de mest brugte af Gentoo brugere. Denne standard-indstilling er erklæret i make.defaults fil delen af din profil.

Den profil dit system lytter til bliver peget på af /etc/make.profile symlinket. Hver profil virker ovenpå en anden større profil, slutresultatet er derfor summen af alle profilerne. Den øverste profil er base profilen (/usr/portage/profiles/base).

Lad os kigge på standard opsætningen:

Kode oversigt 2.1: Akkumuleret /usr/portage/profiles/default-linux/x86/2004.3/make.defaults USE variabler

(Dette eksempel er summen af opsætningen i base, default-linux,
default-linux/x86 og default-linux/x86/2004.3)
USE="x86 oss apm arts avi berkdb bitmap-fonts crypt cups encode fortran f77
     foomaticdb gdbm gif gpm gtk gtk2 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"

Som du kan se, indeholder denne variabel allerede en hel del nøgleord. Du skal ikke ændre noget i make.defaults-filen for at skræddersy USE-variabelen til dine behov: ændringer i denne fil vil blive fjernet, når du opdaterer Portage!

For at ændre denne standard-indstilling, skal du tilføje eller fjerne nøgleord til USE-variabelen. Dette er gjort globalt ved at definere USE-variabelen i /etc/make.conf. Dette er variabelen, som du kan tilføje ekstra USE-flag, som du kræver, eller fjerne de USE-flag, som du ikke vil bruge. Sidstnævnte er gjort ved at foranstille nøgleordet med et minus-tegn ("-").

F.eks. for at fjerne understøttelse til KDE og QT, men tilføje understøttelse til ldap, følgende USE kan blive defineret i /etc/make.conf:

Kode oversigt 2.2: Et eksempel på en USE-opsætning /etc/make.conf

USE="-kde -qt ldap"

Erklæringer af USE-flag til individuelle pakker

Nogen gange ønsker du at erklære specifikke USE-flag til et af (eller flere) programmerne, men ikke i hele systemet. For at gøre dette, skal du oprette /etc/portage-folderen (hvis den ikke allerede eksisterer) og redigere /etc/portage/package.use.

F.eks., hvis du ikke vil have berkdb-understøttelse globalt, men kun vil have den til mysql, ville du tilføje:

Kode oversigt 2.3: /etc/portage/package.use eksempel

dev-db/mysql berkdb

Du kan selvfølgelig også specifikt udlade USE-flag for et specifikt program. F.eks., hvis du ikke vil have java-understøttelse i PHP:

Kode oversigt 2.4: /etc/portage/package.use eksempel nr.2

dev-php/php -java

Erklæringer af midlertidige USE-flag

Nogen gange vil du ønske at tilføje en specifik USE-indstilling kun én gang. I stedet for at redigere /etc/make.conf to gange (for at lave og fjerne USE-ændringer) kan du bare erklære USE-variabelen, som en miljø-variabel. Huske at, når du gen-emerger eller opdaterer dette program (enten specifik eller som en del af en systemopdatering), vil dine ændringer forsvinde!

Som et eksempel, vil vi midlertidigt fjerne java fra USE-opsætningen, når vi installerer mozilla.

Kode oversigt 2.5: Brug af USE, som en miljøvariabel

# USE="-java" emerge mozilla

Automatiske USE-flag

Efter at et antal pakker er installeret, kan yderligere USE-flag blive automatisk aktiveret for dig, hvis du ikke selv deaktiverer dem. For at se listen af pakker, som igangsætter automatiske USE-flag, tjek /etc/make.profile/use.defaults- og use.defaults-filerne i de øvre profiler.

Kode oversigt 2.6: Et udsnit af /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

Rangorden

Selvfølgelig er der en vis rangorden på hvilken indstilling, der har prioritet over USE-opsætning. Du vil ikke erklære USE="-java", kun for at se om at java stadigvæk er brugt i forhold til en indstilling, som har en højere priotitet. Rangordenen for USE-opsætningen er, opstilt efter prioritet (første har laveste prioritet):

  1. Standard USE-opsætning, erklæret i make.defaults filens delen af din profil
  2. Arvet USE-opsætning, hvis en pakke fra /etc/make.profile/use.defaults er installeret
  3. Brugerdefineret USE-indstilling i /etc/make.conf
  4. Brugerdefineret USE-indstilling, som en miljø-variabel
  5. Brugerdefineret USE-indstilling i /etc/portage/package.use

For at se den færdige USE-opsætning, som set af Portage, kør emerge --info. Dette vil give dig en liste over alle relevante variabler (inklusiv USE-variabler) med indholdet brugt af Portage.

Kode oversigt 2.7: At køre emerge --info

# emerge --info

Tilpasse hele dit system ved brug af nye USE-flag

Hvis du har ændret dine USE-flag og ønsker at hele dit system skal bruge disse nye flag, brug emerge --newuse valgmulighed:

Kode oversigt 2.8: Genbygning af hele systemet

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

Dernæst, kør Portages depclean for at fjerne betingede afhængigheder som er blevet emerged på dit "gamle" system, men som er blevet forældet ved brug af de nye USE-flag.

Advarsel: Kørsel af emerge --depclean er en farlig opgave og bør håndteres med forsigtighed. Dobbelt-tjek den leverede liste af "forældede" pakker for at sørge for at den ikke fjerner pakker, som du behøver. I det følgende eksempel, tilføjer vi -p-kontakten for at have depclean til at kun vise pakkerne, uden at fjerne dem.

Kode oversigt 2.9: Fjernelse af forældede pakker

# emerge -p --depclean

Når depclean er færdig, kør revdep-rebuild for genbygge de programmer, som er dynamisk linket til delte objekter, leveret af mulige fjernede pakker. revdep-rebuild er en del af gentoolkit-pakken; glem ikke at emerge den først.

Kode oversigt 2.10: Kørsel af revdep-rebuild

# revdep-rebuild

Når det hele er udført, bruger dit system de nye USE-flag indstillinger.

2.c. Pakke-specifikke USE-flag

Se tilgængelige USE-flag

Lad os tage eksemplet fra mozilla: hvilke USE-flag lytter den til? For at finde ud af dette, bruger vi emerge med --pretend og --verbose valgmulighederne:

Kode oversigt 3.1: Se brugte USE-flag

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

Calculating dependencies ...done!
[ebuild  N    ] net-www/mozilla-1.5-r1 +java +crypt -ipv6 -gtk2 +ssl +ldap 
+gnome -debug +mozcalendar -mozaccess -mozxmlterm -moznoirc -moznomail
-moznocompose -moznoxft 

emerge er ikke det eneste værktøj til dette job. I virkeligheden har vi et værktøj tilegnet til pakke-informationer, kaldet equery, som er placeret i gentoolkit-pakken. Først, installer gentoolkit:

Kode oversigt 3.2: Installation af gentoolkit

# emerge gentoolkit

Kør nu equery med uses parameteren for at se USE-flag af en vis pakke. F.eks. gnumeric-pakken:

Kode oversigt 3.3: Brug af equery for at se brugte USE-flag

# 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)

[ << ] [ < ] [ Hjem ] [ > ] [ >> ]


Udskriv

View all

Opdateret 13. oktober 2005

The original version of this document was last updated February 9, 2013

Opsummering: USE-flag er et meget vigtigt aspekt af Gentoo. I dette kapitel lærer du at arbejde med USE-flag og forstå hvordan USE-flag arbejder sammen med dit system.

Sven Vermeulen
Forfatter

Roy Marples
Forfatter

Daniel Robbins
Forfatter

Chris Houser
Forfatter

Jerry Alexandratos
Forfatter

Seemant Kulleen
Gentoo x86 udvikler

Tavis Ormandy
Gentoo Alpha udvikler

Jason Huebel
Gentoo AMD64 udvikler

Guy Martin
Gentoo HPPA udvikler

Pieter Van den Abeele
Gentoo PPC udvikler

Joe Kallar
Gentoo SPARC udvikler

John P. Davis
Redaktør

Pierre-Henri Jondot
Redaktør

Eric Stockbridge
Redaktør

Rajiv Manglani
Redaktør

Jungmin Seo
Redaktør

Stoyan Zhekov
Redaktør

Jared Hudson
Redaktør

Colin Morey
Redaktør

Jorge Paulo
Redaktør

Carl Anderson
Redaktør

Jon Portnoy
Redaktør

Zack Gilburd
Redaktør

Jack Morgan
Redaktør

Benny Chuang
Redaktør

Erwin
Redaktør

Joshua Kinard
Redaktør

Tobias Scherbaum
Redaktør

Xavier Neys
Redaktør

Grant Goodyear
Reviewer

Gerald J. Normandin Jr.
Reviewer

Donnie Berkholz
Reviewer

Ken Nowack
Reviewer

Lars Weiler
Bidrager

Jesper Brodersen
Oversætter, Korrektur

Arne Mejlholm
Oversætter, Korrektur

Frans Sohn Frøkjær-Jensen
Oversætter, Korrektur

Morten Fangel
Oversætter, Korrektur

Esben Bach
Oversætter, Korrektur

Simon Holm Thøgersen
Oversætter, Korrektur

Donate to support our development efforts.

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