USE flags explained: How Gentoo configures software
USE flags explained: How Gentoo configures software Gentoo Linux gives allows you to control how, and with what support, programs are installed by using USE flags to describe how software should be installed.
Open Source means program code can and will be reused. If there is an existing software library that does a job excellent then it is obvious most developers, lazy as they are, will choose to link against it instead of doing it all over from scratch.
Most programs support a large amount of other programs and libraries. Some are required by all, like glibc, others are optional.
Gentoo Linux compiles all your software from source, unlike distributions like Mandrake, Debian, Suse and Redhat who provide ready to use compiled packages (called deb and rpm). Installing software from source takes much longer, but gives you much more control over how things are installed.
The basics of USE flags
A software package can be configured and compiled in many ways. An audio application may support many formats, but you may not want or need all of them. Portage uses a variable called
'USE' to control how packages are installed. These are set system-wide in
/etc/make.conf, and dictate how packages are installed.
A description of most USE flags are available in the file
The standard settings for your USE flags are available in
USE flags are set with
flag (not +flag) you want and
-flag you don't want.
The GNU Midnight Commander can be compiled with and without support for gpm (Console-based mouse driver), nls (Native Language Support using gettext), samba (suite of SMB and CIFS client/server programs), ncurses (a console display library), X (Xorg) and slang (a text display library).
You can use the
-p (--pretend) parameter to view a packages USE flags and depending packages that would be installed without actually installing anything:
emerge -pv package
For MC (app-misc/mc) this may give you the output:
[ebuild U ] app-misc/mc-4.6.0-r2 [4.6.0-r1] +gpm +nls -samba +ncurses +X +slang
If this is not desired and you want MC installed with samba support and without X support you can change the USE= line in
USE="samba -X. This would change the output of
emerge -pv MC to
[ebuild U ] app-misc/mc-4.6.0-r2 [4.6.0-r1] +gpm +nls +samba +ncurses -X +slang
Setting pr. package USE flags
You may want system-wide support for X, but do not want MC linked against it. This can be done by setting the flag before the emerge command when installing it:
USE="-X" emerge mc
Be aware that flags set this way are not stored anywhere, if MC is recompiled during a
emerge -u world later the system wide settings will be used.
Make your USE flags permanent on a pr. package basis in /etc/portage/package.use
The configuration file
/etc/portage/package.use allows you to set pr. package USE flags. You must create this folder yourself as it is not done for you. The file should contain
category/package thisflag -thatflag. Example:
x11-base/xfree -ipv6 app-misc/mc -X gpm
Flags configured in
/etc/portage/package.use override flags set in
/etc/make.conf for the packages listed.
gentoolkit allows you to view previously used settings
qpkg (manual page) is a great portage tool for this. It is included in the package
ufed - the use flag editor
emerge ufed) is a use flag editor (manual page). It lists all available USE flags and lets you select which you want easily.
ufed saves your choices to
Viewing a list of Gentoo USE flags
Take a look at
/usr/portage/profile/use.desc with a pager like less.