[ << ]
[ < ]
[ Powrót ]
[ > ]
[ >> ]
2. Flagi USE
Spis treści:
2.a. Czym są flagi USE?
Idea flag USE
Kiedy instalujemy Gentoo (lub dowolną inną dystrybucję albo nawet inny
system operacyjny) zwykle dokonujemy wyborów zależnych od środowiska, w którym
przychodzi nam pracować. Instalacja dla serwera różni się od instalacji dla
stacji roboczej. Konfiguracja komputera dla gracza różni się od tej dla
komputera przeznaczonego do obróbki grafiki 3D.
Nie jest tak tylko w przypadku pakietów, które wybieramy przy instalacji,
ale także w przypadku cech, które dany pakiet powinien posiadać. Jeżeli nie
potrzebujemy obsługi OpenGL, dlaczego mielibyśmy instalować OpenGL oraz jego
obsługę w większości pakietów? Jeżeli nie chcemy używać KDE, dlaczego mamy
budować pakiety ze wsparciem dla KDE, podczas gdy bez problemów mogą pracować
bez niego?
Aby ułatwić użytkownikom decydowanie o tym czego potrzebują, a czego nie chcą
instalować i aktywować, stworzyliśmy dla nich specjalne środowisko. Dzięki niemu
użytkownik może wybrać to co jest mu potrzebne, a Portage znacznie ułatwi mu
cały proces wybierania najlepszych ustawień.
Definicja flag USE
Każda flaga jest słowem kluczowym, które reprezentuje wspierane funkcje
oraz informacje o zależnościach dla wybranego wątku. Jeżeli zdefiniujemy
jakąś flagę USE, Portage będzie wiedziało, że jest nam potrzebne wsparcie
funkcji przypisanej temu słowu kluczowemu. Oczywiście uwzględnione zostaną także
pakiety zależne.
Przyjrzyjmy się zatem przykładowi: słowu kluczowemu kde. Jeżeli nie
posiadamy go wśród zmiennych USE, wszystkie pakiety, które posiadają
opcjonalną obsługę KDE zostaną skompilowane bez obsługi KDE.
Wszystkie pakiety, które będą opcjonalnie zależne od KDE, zostaną
zainstalowane bez bibliotek KDE jako zależności. Jeżeli zdefiniujemy
słowo kluczowe kde, to te pakiety zostaną skompilowane z obsługą
KDE a biblioteki KDE zostaną zainstalowane jako pakiety zależne.
Dzięki dobremu doborowi słów kluczowych otrzymamy system dokładnie
dostosowany do naszych potrzeb.
Jakie wyróżniamy flagi USE?
Wyróżniamy dwa typy flag USE: globalne oraz lokalne.
-
Globalne flagi USE są używane dla większej ilości pakietów, są
ogólnosystemowe. Większość ludzi postrzega je właśnie jako flagi USE.
-
Lokalne flagi USE są używane przez pojedynczy pakiet w celu podjęcia
decyzji specyficznych dla danego pakietu.
Lista dostępnych globalnych flag USE jest dostępna w Internecie lub też lokalnie w pliku
/usr/portage/profiles/use.desc.
Lista dostępnych lokalnych flag USE znajduje się w pliku
/usr/portage/profiles/use.local.desc.
2.b. Używanie flag USE
Deklarowanie stałych flag USE
Kiedy już odkryliśmy jak ważny jest właściwy dobór flag USE możemy
przystąpić do omawiania tego jak się je deklaruje.
Jak już wcześniej wspominaliśmy, wszystkie flagi USE są deklarowane
wewnątrz zmiennej USE. Aby ułatwić użytkownikom szukanie oraz wybór flag
USE, dostarczamy dobrany przez nas domyślny zestaw. Zestaw ten jest
kolekcją flag, które według nas są najczęściej wybierane przez użytkowników
Gentoo. Domyślny zestaw jest zadeklarowany w pliku make.defaults i
jest częścią wybranego profilu.
Profil, którego system używa jest wskazywany przez dowiązanie symboliczne
/etc/make.profile. Każdy profil działa ponad innym, większym
profilem, końcowy wynik jest więc sumą wszystkich profili. Górny profil to
base (/usr/portage/profiles/base).
Rzućmy okiem na domyślne ustawienia dla profilu 2004.3:
Listing 2.1: Skumulowana zmienna USE dla profilu 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"
|
Jak łatwo zauważyć, domyślny zestaw zawiera dość dużo słów kluczowych.
Pamiętajmy, aby nie dokonywać zmian w pliku make.defaults, w
celu dostosowywania zmiennej USE do swoich potrzeb. Zmiany te zostaną
usunięte przy najbliższej aktualizacji drzewa Portage!
Aby zmienić domyślne ustawienia, musimy dodać (lub usunąć) słowa kluczowe w
zmiennej USE. Dokonuje się tego definiując globalnie zmienną USE w
pliku /etc/make.conf. Do tej zmiennej możemy dodać flagi, które są
nam potrzebne lub też usunąć te, których nie potrzebujemy. Usunięcia flagi
dokonuje się poprzez wstawienie znaku minus (-) przed wybraną flagą.
Na przykład, aby usunąć obsługę KDE i QT oraz dodać obsługę ldap, zmienna
USE w pliku /etc/make.conf powinna wyglądać następująco:
Listing 2.2: Przykładowe ustawienia zmiennej USE w pliku /etc/make.conf |
USE="-kde -qt3 -qt4 ldap"
|
Deklarowanie flag USE tylko dla wybranego pakietu
Czasami mamy zamiar zadeklarować wybraną flagę USE dla jednej (czasem kilku)
aplikacji, ale nie dla całego systemu. Aby tego dokonać, będziemy zmuszeni do
utworzenia katalogu /etc/portage (jeżeli nie istnieje) i
wyedytowania pliku /etc/portage/package.use. W większości
przypadków jest to pojedyńczy plik, jednak może to być również nazwa katalogu.
Aby uzyskać więcej informacji należy przeczytać strone manuala dostępną po
wydaniu polecenia man portage. W poniższych przykładach założono, że
package.use jest plikiem.
Na przykład, jeżeli nie chcemy globalnego wsparcia dla berkdb, ale
chcielibyśmy mieć jego wsparcie dla mysql, powinniśmy dodać:
Listing 2.3: Przykład /etc/portage/package.use |
dev-db/mysql berkdb
|
Oczywiście możemy też wyłączyć flagi USE dla wybranej aplikacji. Na
przykład, jeżeli nie chcemy obsługi javy w PHP:
Listing 2.4: 2 przykład /etc/portage/package.use |
dev-php/php -java
|
Deklarowanie tymczasowych flag USE
Czasami zachodzi potrzeba użycia flagi USE tylko jeden raz. Zamiast dwukrotnego
edytowania pliku /etc/make.conf (aby wprowadzić, a potem cofnąć
zmiany w USE) możemy po prostu zadeklarować tą flagę jako zmienną środowiskową.
Pamiętajmy jednak, że jeżeli ponownie zainstalujemy lub zaktualizujemy daną
aplikację (przypadkowo lub przy aktualizacji systemu) to takie zmiany nie
zostaną ponownie wprowadzone.
Dla przykładu usuniemy obsługę javy na czas instalacji seamonkey.
Listing 2.5: Używanie USE jako zmiennej środowiskowej |
# USE="-java" emerge seamonkey
|
Pierwszeństwo
Oczywiście istnieje pierwszeństwo w przydzielaniu priorytetów konkretnym
flagom USE. Nie ma sensu deklarować zmiennej USE="-java" tylko po
to, aby zobaczyć, że java i tak zostanie użyta w związku z
zadeklarowaniem na wyższym poziomie. Hierarchia flag USE prezentuje się
następująco (pierwsze pozycje mają najniższy priorytet):
-
Domyślne ustawienia zmiennej USE znajdujące się w pliku
make.defaults będącym częścią wybranego profilu
-
Zdefiniowana przez użytkownika zmienna USE znajdująca się w pliku
/etc/make.conf
-
Zdefiniowana przez użytkownika zmienna USE w pliku
/etc/portage/package.use
-
Zmienna USE zdefiniowana przez użytkownika jako zmienna środowiskowa.
Aby sprawdzić ostateczne ustawienia zmiennej USE widziane przez Portage
wpisujemy polecenie emerge --info. Polecenie to wskaże wszystkie istotne
zmienne (włączając zmienną USE) z wartościami używanymi aktualnie przez
Portage.
Listing 2.6: Wykonywanie polecenia emerge --info |
# emerge --info
|
Adaptacja systemu do nowych flag USE
Jeżeli zmodyfikowaliśmy flagi USE i chcemy uaktualnić system tak, aby pakiety
używały nowych flag USE musimy uruchomić emerge z opcją --newuse.
Listing 2.7: Rekompilacja systemu |
# emerge --update --deep --newuse world
|
Następnie uruchamiamy depclean, który usunie niepotrzebne zależności, które
zostały zainstalowane na "starym" systemie, ale są nieaktualne z nowymi flagami
USE.
Ostrzeżenie:
Uruchomienie emerge --depclean jest niebezpieczną operacją i powinno być
wykonywane z zachowaniem pełnej ostrożności. Należy dwukrotnie sprawdzić listę
"nieaktualnych" pakietów i upewnić się, że Portage nie chce usunąć czegoś
ważnego. W poniższym przykładzie dodajemy opcję -p, która wyświetli listę
pakietów do usunięcia, bez ich usuwania.
|
Listing 2.8: Usuwanie niepotrzebnych pakietów |
# emerge -p --depclean
|
Po zakończeniu polecenia depclean uruchamiamy revdep-rebuild, aby
przebudować aplikacje, które mogą być połączone dynamicznie z usuniętymi
bibliotekami. revdep-rebuild jest częścią pakietu gentoolkit.
Listing 2.9: Uruchomienie revdep-rebuild |
# revdep-rebuild
|
Po zakończeniu tych wszystkich czynności system będzie używał nowych ustawień
flag USE.
2.c. Zmienne USE specyficzne dla pakietów
Przeglądanie dostępnych flag USE
Weźmy na przykład seamonkey i dowiedzmy się których flag USE używa.
Użyjemy do tego polecenia emerge z parametrami --pretend oraz
--verbose:
Listing 3.1: Przeglądanie używanych flag USE: |
# emerge --pretend --verbose seamonkey
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild R ] www-client/seamonkey-1.0.7 USE="crypt gnome java -debug -ipv6
-ldap -mozcalendar -mozdevelop -moznocompose -moznoirc -moznomail -moznopango
-moznoroaming -postgres -xinerama -xprint" 0 kB
|
emerge nie jest jedynym narzędziem wykorzystywanym w celu przeglądania
informacji o pakietach. Do dyspozycji mamy jeszcze program equery,
znajdujący się w pakiecie gentoolkit. Zacznijmy od zainstalowania
gentoolkit:
Listing 3.2: Instalacja gentoolkit |
# emerge gentoolkit
|
Następnie uruchamiamy equery z argumentem uses aby przejrzeć flagi
USE dla konkretnego pakietu. Dla przykładu sprawdźmy pakiet
gnumeric:
Listing 3.3: Użycie equery do przeglądania użytych flag USE: |
# equery --nocolor uses =gnumeric-1.6.3 -a
[ Searching for packages matching =gnumeric-1.6.3... ]
[ Colour Code : set unset ]
[ Legend : Left column (U) - USE flags from make.conf ]
[ : Right column (I) - USE flags packages was installed with ]
[ Found these USE variables for app-office/gnumeric-1.6.3 ]
U I
- - debug : Enable extra debug codepaths, like asserts and extra output. If
you want to get meaningful backtraces see
http://www.gentoo.org/proj/en/qa/backtraces.xml .
- - gnome : Adds GNOME support
+ + python : Adds support/bindings for the Python language
- - static : !!do not set this during bootstrap!! Causes binaries to be
statically linked instead of dynamically
|
[ << ]
[ < ]
[ Powrót ]
[ > ]
[ >> ]
Materiał udostępniany na podstawie licencji Creative Commons -
Attribution / Share Alike.
|