Jak specifikovat USE flagy
Globálně platné USE flagy se zapisují do souboru /etc/make.conf ve tvaru
USE=" ... seznam flagů oddělených mezerami, může být i víceřádkový ... "
Je také možné specifikovat USE flagy zvlášť pro jednotlivé balíčky v souboru /etc/portage/package.use; zde má každý řádek tvar
skupina/balíček seznam flagů oddělených mezerami
(Soubor může obsahovat prázdné řádky a komentáře na samostatných řádcích uvozené znakem '#'; tyto řádky se ignorují.)
Jeden balíček může být v souboru
/etc/portage/package.use uveden vícekrát; uvedené flagy se zkombinují dohromady.
Často používané USE flagy
Flagy pro instalaci volitelných částí balíčků
- bash_completion - pokud balíček obsahuje definice pro automatické doplňování názvů souborů v Bashi, tyto se nainstalují
- bindist - podpora k sestavení balíků, vyhýbající se různým licenčním problémům
- branding - aktivuje branding Gentoo (logo a podobně) u balíčků, které to podporují
- doc - instaluje veškerou dokumentaci k balíčku včetně vývojářské (může vyžadovat doinstalování speciálních nástrojů pro vytváření dokumentace, např. Doxygen)
- source - pokud je flag nastaven, zdrojové kódy balíčku se po zkompilování nezahodí, ale zabalí a ponechají
Flagy zapínající systémové služby a podporu hardwaru
- acl ( POSIX Access Control Lists ) - seznamy řízení přístupu
- acpi (Advanced Configuration and Power Interface) - podpora ACPI (typicky v utilitách pro zjišťování stavu hardwaru)
- bluetooth - podpora Bluetooth
- caps - podpora capabilities
- cdr - podpora pro zapisování CD
- consolekit - podpora přepínání uživatelů pomocí ConsoleKitu
- dbus - podpora DBus (potřebná pro většinu desktopových prostředí)
- device-mapper - podpora device-mapperu (nutná mj. pro dm-crypt, LVM a softwarový RAID)
- dvd - podpora pro čtení DVD
- dvdr - podpora pro zapisování DVD
- fuse (Filesystem in Userspace) - podpora FUSE (nutná mj. pro EncFS a NTFS-3g)
- ipv6 - podpora IPv6 (v balíčcích, kde je volitelná)
- lm_sensors - podpora pro lm_sensors (sledování hardwarových senzorů teploty apod.) v různých utilitách
- policykit - podpora pro řízení přístupu pomocí PolicyKitu
- udev - podpora udev (nutná pro většinu instalací; je s podivem, co všechno nefunguje, pokud tento flag není zapnut)
- usb - podpora USB
Flagy ovlivňující generovaný kód
- mmx, mmxext, sse, sse2, sse3 - pokud zdrojové kódy balíčku obsahují speciální části, které se mají aktivovat v přítomnosti instrukcí MMX, SSE apod., zapne se jejich použití. Tyto flagy nejsou potřeba pro to, aby sám kompilátor používal tyto instrukce (ten se řídí proměnnou CFLAGS).
- multilib - na 64-bitových systémech zapíná podporu pro 32-bitové binárky
- threads - generovat kód, který běží ve více paralelních threadech (u balíčků, kde je to možné a volitelné)
Flagy pro podporu národních abeced
- bidi - podpora obousměrného vykreslování textů
- cjk (Chinese, Japanese, Korean) - podpora vícebytových znakových sad (potřebné pro čínštinu, japonštinu a korejštinu)
- iconv - podpora knihovny iconv pro konverzi mezi různými znakovými sadami
- idn (Internationalized Domain Names) - podpora názvů internetových domén obsahujících národní znaky
- nls (National Language Support) - podpora pro lokalizaci textů v aplikacích pomocí knihovny GNU gettext
- unicode - podpora Unicode (v balíčcích, kde je volitelná)
Flagy pro grafické prostředí
- X - podpora X (nutná pro pro knihovny jako Cairo a Pango, pokud se mají zkompilovat s podporou X)
- auto-hinter ( FreeType Auto-Hinter ) - vyhlazení písma pomocí automatického hinteru (původní svobodný způsob - nyní již je svobodný i hinting na základě bytekódu ve fontu)
- fontconfig - podpora pro konfiguraci fontů pomocí knihovny Fontconfig
- gnome - podpora prostředí GNOME
- gnome-keyring - podpora ukládání hesel pomocí systému GNOME Keyring
- gtk - podpora vykreslování pomocí knihovny GTK+ (u balíčků, kde je volitelná; balíčky nativně psané pro GTK+ tento flag nepotřebují)
- kde - podpora prostředí KDE
- libnotify - podpora pro libnotify, standardizovaný způsob zasílání krátkých zpráv uživateli
- qt4 - podpora vykreslování pomocí knihovny Qt4 (u balíčků, kde je volitelná; balíčky nativně psané pro Qt4 tento flag nepotřebují)
- truetype - podpora vykreslování TrueType fontů pomocí knihovny FreeType
Flagy pro kompresní a šifrovací algoritmy
- bzip2 - podpora komprese metodou bzip2
- lzma - podpora komprese metodou LZMA
- lzo - podpora komprese metodou LZO
- ssl - podpora šifrované komunikace protokolem SSL (v balíčcích, kde je volitelná, například pro wget, python, ruby)
- gnutls - alternativní implementace SSL, vypnutí (obvykle) neznamená zrušení šifrování, ale použiti běžnější knihovny OpenSSL
Flagy pro grafiku a multimédia
- a52 - podpora pro zvukový kodek ATSC A/52 (AC3, Dolby Digital), používaný na DVD
- aac (Advanced Audio Coding) - podpora pro (bezlicenční, ale patentově chráněný) zvukový kodek MPEG-4 AAC
- alsa - podpora přehrávání zvuku pomocí ALSA
- apng ( Animated Portable Network Graphics ) - PNG s podporou animace (vytvořený Mozilla Foundation, liší se od MNG)
- exif - podpora pro čtení a zpracování informací EXIF (zapsaných fotoaparátem) u fotografií ve formátu JPEG, TIFF a RAW
- ffmpeg - podpora přehrávání médií pomocí knihovny ffmpeg
- flac - podpora svobodného bezztrátového zvukového kodeku FLAC
- gif - podpora pro grafický formát GIF
- gstreamer - podpora pro přehrávání zvuku a videa pomocí systému GStreamer
- jack ( JACK Audio Connection Kit) - podpora pro přehrávání zvuku pomocí systému JACK
- jpeg - podpora pro grafický formát JPEG (.jpg)
- jpeg2k - podpora pro JPEG 2000
- lcms ( Light Color Management System ) - podpora pro správu barev pomocí knihovny LCMS (potřeba pro zpracování fotografií v programech jako GIMP, Digikam apod.)
- matroska - podpora pro svobodný formát multimediálních kontejnerů Matroska (.mkv)
- mng - podpora pro animovaný grafický formát MNG
- mp3 - podpora pro (licenčně a patentově chráněný) zvukový formát MP3
- mp4 - podpora pro formát multimediálních kontejnerů .mp4
- mpeg - podpora pro animovaný grafický formát MPEG-2/3
- ogg - podpora pro svobodný formát multimediálních kontejnerů OGG (obvykle se používá společně s flagem vorbis)
- opengl - podpora OpenGL (v balíčcích, kde je volitelná - u knihovny Cairo zapíná rendering pomocí OpenGL)
- openexr - podpora grafického formátu OpenEXR
- png - podpora pro grafický formát PNG
- pulseaudio - podpora přehrávání zvuku pomocí PulseAudio
- raw - podpora pro zpracování obrázků ve formátu RAW (přímo z fotoaparátu)
- speex - podpora pro svobodný zvukový kodek Speex (určený pro záznam řeči, zejména pro VoIP)
- tiff - podpora grafického formátu TIFF
- theora - podpora pro svobodný video kodek Theora
- vorbis - podpora pro svobodný formát kódování hudby Vorbis
- vpx - podpora pro kodek VP8, používaný pro kódování videa ve formátu WebM
- webm - podpora multimediálního formátu WebM (video ve formátu VP8, zvuk ve formátu Vorbis) (obvykle se používá společně s flagem vpx)
- x264 - podpora pro x264 (svobodná implementace nesvobodného kodeku H.264)
- xvid - podpora pro XviD (svobodná implementace nesvobodného kodeku)
Definitivní seznam
Výše uvedené flagy jsou jen výběrem těch nejčastějších. Úplný seznam je součástí portage rozdělený na dvě části. Seznam flagů společných pro více balíků (tzv. globální) je v /usr/portage/profiles/use.desc. Druhý soubor /usr/portage/profiles/use.local.desc obsahuje seznam flagů specifických pro konkrétní ebuild. Narozdíl od globálních se zde stejný flag může opakovat, každý záznam popisuje jakým způsobem ho chápe jiný ebuild. Stejně tak se zde může vyskytnout jméno flagu které je už uvedené v globálním seznamu. I v takovém případě nějak upřesňuje popis pro dotyčný ebuild oproti globálnímu který bývá velmi obecný.
Zjišťování USE flagů
Seznam a popis všech USE proměnných dostupných pro požadovaný balík lze získat pomocí příkazu equery uses balík
. Utilita equery
se nachází v balíku Gentoolkit.Ve stejném balíku je dostupný i program euse, která vypíše popis daného USE flagu
$ euse -i acl
global use flags (searching: acl)
************************************************************
[+ D ] acl - Adds support for Access Control Lists
local use flags (searching: acl)
************************************************************
[+ D ] acl
net-print/hplip: Install udev acl rules which needs sys-fs/udev with
acl support
[- b] 3.11.5 [gentoo]
[- b] 3.11.7 [gentoo]
[+ D ] acl
sys-fs/udev: apply ACLs for users with local forground sessions
114 [gentoo]
115-r1 [gentoo]
119 [gentoo]
124-r1 [gentoo]
124-r2 [gentoo]
141 [gentoo]
141-r1 [gentoo]
146-r1 [gentoo]
149 [gentoo]
151-r4 [gentoo]
164-r2 [gentoo]
[+ ] 171-r1 [gentoo]
[+ ] 9999 [gentoo]
Taktéž lze použí app-portage/euses
$ eix euses
[I] app-portage/euses
Available versions: 2.5.7
Installed versions: 2.5.7(01:02:55 10.2.2011)
Homepage: http://www.xs4all.nl/~rooversj/gentoo
Description: look up USE flag descriptions fast
$ euses acl
acl - Adds support for Access Control Lists
oracle - Enable Oracle Database support
app-admin/collectd:collectd_plugins_oracle - Build the oracle input plugin (SQL-queries one or more Oracle database systems)
mail-mta/exim:exiscan-acl - Patch providing support for content scanning
net-im/ekg2:oracle - Support logging messages into Oracle database.
net-print/hplip:acl - Install udev acl rules which needs sys-fs/udev with acl support
sys-fs/udev:acl - apply ACLs for users with local forground sessions
msnd-pinnacle - Turtle Beach MultiSound Pinnacle/Fiji driver
Jednoduchý nástroj equery
v tomto případě vypíše s jakou podporou lze balík ACL sestavit.
$equery uses acl
[ Legend : U - final flag setting for installation]
[ : I - package is installed with flag ]
[ Colors : set, unset ]
* Found these USE flags for sys-apps/acl-2.2.51:
U I
+ + nls : Adds Native Language Support (using gettext - GNU locale utilities)
- - static-libs : Build static libraries
Opět equery
, teď vypíše jaké balíky můžou/byly sestaveny s ACL podporou. V tomhle příkladu není s ACL sestaven žádný.
$equery hasuse acl
* Searching for USE flag acl ...
[IP-] [ ] app-admin/logrotate-3.8.0:0
[IP-] [ ] app-arch/libarchive-2.8.4-r1:0
[IP-] [ ] app-cdr/cdrtools-3.00:0
[IP-] [ ] app-editors/gvim-7.3.189:0
[IP-] [ ] app-editors/vim-7.3.189:0
[IP-] [ ] app-editors/vim-core-7.3.189:0
[IP-] [ ] dev-libs/libisofs-1.0.0:0
[IP-] [ ] gnome-base/gnome-vfs-2.24.4-r1:2
[IP-] [ ] kde-base/kdelibs-4.6.5-r1:4
[IP-] [ ] net-fs/samba-3.4.12:0
[IP-] [ ] net-misc/rsync-3.0.8:0
[IP-] [ ] net-print/cups-1.4.6-r2:0
[IP-] [ ] sys-apps/coreutils-8.7:0
[IP-] [ ] sys-apps/sed-4.2.1:0
[IP-] [ ] sys-devel/gettext-0.18.1.1-r1:0
[IP-] [ ] sys-fs/ntfs3g-2011.4.12:0
Ještě má pár dalších užitečných voleb.
Také je užitečný příkaz qlist
v tomhle případě vypíše všechny instalované balíky které mají v názvu ACL.
$qlist -I acl
sys-apps/acl
virtual/acl
To samé ale ukáže s jakými USE byl sestaven balík. Příkaz
qlist
má ale zase víc užitečných voleb.
$qlist -U acl
sys-apps/acl (nls)
virtual/acl