/etc/portage/make.conf

From Gentoo Wiki
< /etc/portage(Redirected from Make.conf)
Jump to:navigation Jump to:search
This page contains changes which are not marked for translation.
Other languages:
Deutsch • ‎English • ‎italiano • ‎polski • ‎русский • ‎中文(中国大陆)‎ • ‎日本語

/etc/portage/make.conf, previously located at /etc/make.conf, is the main configuration file used to customize the Portage environment on a global level. The /etc/portage directory contains most other Portage configuration files.

Settings in make.conf will apply to every package that is emerged. These settings control many elements of Portage functionality such as global USE flags, language (L10N) options, Portage mirrors, etc.

A very basic version gets installed while extracting the stage tarball, and an example setup can be found at /usr/share/portage/config/make.conf.example.

See also
The Handbook covers using make.conf, particularly in the USE flags, Portage features and Variables sections. See man make.conf for comprehensive documentation.

Precedence

The final Portage configuration is not only based on make.conf. Global settings defined in this file can be refined (or redefined) on a per-package basis in the /etc/portage/package.use/ files as well as through environment variables. Default settings managed by the distribution are available as well (partially through the Portage package defaults, partially through the Gentoo profile that is in use).

Note
Although Portage still supports the old /etc/make.conf file location, its use is discouraged in favor of /etc/portage/make.conf. When both files are available, the settings in /etc/portage/make.conf take precedence over those in /etc/make.conf.

Variables

There are many possible variables to customize in make.conf. Only the most commonly used ones are explained further within this article, with an example and a link to a more detailed article (if applicable). For more information, and the full list of variables, consult the make.conf man page by running:

user $man make.conf

Most variables are optional, can span multiple lines, but must not appear more than once.

Note
Different configurations will require different variables to be set up. Do not treat the following examples as a definitive list, or a minimum set of requirements - set just the variables needed.

CHOST

The CHOST variable is passed through the configure step of ebuilds to set the build-host of the system. Note that the Gentoo profile already sets the appropriate CHOST value, and updating it requires insight and experience in build chains.

See also
See the CHOST article for more information.

CFLAGS and CXXFLAGS

The CFLAGS and CXXFLAGS variables define the build and compile flags that will be used for all package deployments (some exceptions notwithstanding who filter out flags known to cause problems with the package). The CFLAGS variable is for C based applications, while CXXFLAGS is meant for C++ based applications. Most users will keep the content of both variables the same.

FILE /etc/portage/make.confCommonly used sane setting for CFLAGS and CXXFLAGS
CFLAGS="-march=native -O2 -pipe"
CXXFLAGS="${CFLAGS}"
See also
For more information see the GCC optimization article and CFLAGS and CXXFLAGS in the Gentoo Handbook. See also the FAQ.

CONFIG_PROTECT

The CONFIG_PROTECT variable contains a space-delimited list of directories where Portage will not blindly copy over new versions of files, but instead treat the files as configuration files where the user should manually check if the changes are needed and valid or not.

Sub-directories of the listed directories can be excluded through the CONFIG_PROTECT_MASK variable.

The variable has a sane default setting handled by the Portage installation and the users' Gentoo profile. It can be extended through the system environment (which is often used by applications that update the variable through their /etc/env.d file) and the users' /etc/portage/make.conf setting.

FILE /etc/portage/make.confExample CONFIG_PROTECT definitions
CONFIG_PROTECT="/var/bind"

See also the Environment variables chapter in the Gentoo Handbook.


FEATURES

The FEATURES variable contains a list of Portage features that the user wants enabled on the system, effectively influencing Portage's behavior. It is set by default via /usr/share/portage/config/make.globals, but can be easily updated through /etc/portage/make.conf. Since this is an incremental variable, FEATURES values can be added without directly overriding the ones implemented through the Gentoo profile.

FILE /etc/portage/make.confAdding keepwork to FEATURES in Portage
FEATURES="keepwork"

For more information, please see Portage features in the Gentoo Handbook and the FEATURES article. For a complete list of available features, see man 5 make.conf.

See also
See the FEATURES article for more information.

GENTOO_MIRRORS

See also
See the GENTOO_MIRRORS article.

MAKEOPTS

The MAKEOPTS variable is used to specify arguments passed to make when packages are built from source.

FILE /etc/portage/make.confRecommended setting for a dual-core processor with Hyper-Threading enabled with 8GB of RAM
MAKEOPTS="-j4"
See also
See the MAKEOPTS article for more information.
Note
Read up on #EMERGE_DEFAULT_OPTS as this variable influences build behavior as well.

EMERGE_DEFAULT_OPTS

EMERGE_DEFAULT_OPTS is a variable that defines entries to be appended to the emerge command line.

EMERGE_DEFAULT_OPTS is often used to allow for concurrent emerge operations through the --jobs N and --load-average X.Y options, which tell Portage how many package builds can be ran simultaneously and up to what system load (load average) the parallelism can be used.

For example, to run up to three build jobs simultaneously:

FILE /etc/portage/make.confEnabling 3 parallel package builds
EMERGE_DEFAULT_OPTS="--jobs 3"

For more information, see the EMERGE_DEFAULT_OPTS article.

PORTAGE_TMPDIR

The PORTAGE_TMPDIR variable defines the location of the temporary files for Portage. The value defaults to /var/tmp, resulting in /var/tmp/portage for the build location, /var/tmp/ccache for Portage's ccache support and so forth.

FILE /etc/portage/make.confDefault PORTAGE_TMPDIR setting
PORTAGE_TMPDIR="/var/tmp"

If enough memory is available, building packages can be accelerated by mounting PORTAGE_TMPDIR in RAM. See the article on Portage TMPDIR on tmpfs for more details.

DISTDIR

The DISTDIR variable defines the location where Portage will store the downloaded source code archives Its value defaults to /var/cache/distfiles on new installations. Previously the default was ${PORTDIR}/distfiles which resolved to /usr/portage/distfiles by default.

Users can set the DISTDIR variable in /etc/portage/make.conf:

FILE /etc/portage/make.confUsing a different DISTDIR location
DISTDIR=/var/gentoo/distfiles

For more information, please refer to the DISTDIR article.

USE

The USE variable allows the system wide setting or deactivation of USE flags. This variable is a space separated list and may span several lines.

USE="-kde -qt5 ldap"
See also
See the article on USE flags for full explanation. See per package control of USE flags, and the /etc/portage/package.use file, about setting USE flags for an individual package.
Note
Always consider whether it is worth setting a USE flag globally and what implications this will have on the system, or if it is preferable to just set a flag for one or several packages individually.
Tip
A USE flag may be temporarily set on the command line to check what effect it will have, before writing it to the world file: USE="[USE flag to test]" emerge --pretend --verbose --update --deep --newuse world

ACCEPT_LICENSE

The ACCEPT_LICENSE variable tells Portage which software licenses are allowed. Packages who have a license that is not accepted cannot be installed on the system.

FILE /etc/portage/make.confTo accept all licenses on all packages (not a good idea)
ACCEPT_LICENSE="*"
FILE /etc/portage/make.confTo accept free software only
ACCEPT_LICENSE="-* @FREE"

LINGUAS

FILE /etc/portage/make.conf
LINGUAS="de pt_BR en en_US en_GB"

USE_EXPAND

The USE_EXPAND variable is a list set in profiles/base/make.defaults as of Portage 2.0.51.20.[1]

CPU_FLAGS_X86

The CPU_FLAGS_X86 variable informs Portage about the CPU flags (features) permitted by the CPU. This information is used to optimize package builds specifically for the targeted features.

The cpuid2cpuflags utility (found in the app-portage/cpuid2cpuflags package) can be used to query a complete listing of CPU flags supported by the system's processor. After emerging the package, issue:

user $cpuid2cpuflags
CPU_FLAGS_X86: aes avx f16c mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3

This flags can then be added to /etc/portage/make.conf or /etc/portage/package.use/. Note that this is only effective on x86 and amd64 architectures.

See also
See the CPU_FLAGS_X86 article for more information.

INPUT_DEVICES

See the make.conf section of the Xorg/Guide article and the possible values.

L10N

See L10N in the localization guide and this repository news item.

FILE /etc/portage/make.conf
# Defining localization values
L10N="de pt-BR en en-US en-GB"
Note
While common two letter language codes (like de or fr) are identical in LINGUAS and L10N, more complex entries have a different syntax because L10N uses IETF language tags (aka BCP 47). For example, pt_BR and sr@latin in LINGUAS become pt-BR and sr-Latn in L10N, respectively.

VIDEO_CARDS

For possible values of this USE_EXPAND variable see VIDEO_CARDS.

Portage uses the USE_EXPAND variable called VIDEO_CARDS to enable support for various graphics cards in packages. Setting VIDEO_CARDS to appropriate value(s) will pull in the correct driver(s):

FILE /etc/portage/make.confSet VIDEO_CARDS to intel nvidia radeon vesa
VIDEO_CARDS="intel nvidia radeon vesa"

Substitute the name of the driver(s) to be used. Common choices include nouveau, nvidia, radeon, and intel. After setting or altering VIDEO_CARDS values remember to update the system using the following command so the changes take effect:

root #emerge --ask --changed-use --deep @world


For the average user, if a graphical desktop environment is to be used this variable should be explicitly defined. For further information see Xorg/Guide#make.conf.

For more details see the AMDGPU or the NVIDIA articles.

See also

External resources

References