/etc/portage/make.conf
emerge — configuration — ebuild repository — dispatch-conf
world file — USE flags — ebuilds — profiles
upgrades — using testing packages — binary packages
tools — gentoolkit — eselect
Portage FAQ — cheat sheet — FAQ
all articles
/etc/portage/make.conf (之前在 /etc/make.conf)是在全局级别自定义 Portage 环境的主要配置文件。/etc/portage 目录包含了其它大多数 Portage 的配置文件。
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.
当提取 stage tarball 时将安装一个基础的版本,并且可以在 /usr/share/portage/config/make.conf.example 找到一个设定示例。
Like many Portage configuration files, make.conf can be a directory, and its contents will get summed together as if it were a single file.
The Handbook covers using make.conf, particularly in the USE flags, Portage features and Variables sections. See man make.conf for comprehensive documentation.
优先级
最终的 Portage 配置不只基于 make.conf。在此文件中定义的全局设置可以在 /etc/portage/package.use/ 文件中以及通过环境变量在每个包的基础上细化(或重新定义)。发行版管理的默认设置也是可用的(部分通过 Portage 包的默认设置,部分通过正在使用的 Gentoo 特定配置文件)。
尽管 Portage 仍然支持旧的 /etc/make.conf 文件位置,但是却不鼓励使用,而赞成使用 /etc/portage/make.conf。当这两个位置都可用时,在 /etc/portage/make.conf 的设置优先于 /etc/make.conf。
变量
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.
不同的配置需要设置不同的变量。不要将以下示例视为固定的列表或最低要求——它们只是需要的变量。
CHOST
The CHOST variable is passed through the configure step of ebuilds to set the build-host of the system.
Portage profiles already set the appropriate CHOST value, and updating it requires insight and experience in build chains.
Starting with profile version 23.0 it is recommended to not to list CHOST in the make.conf file.[1]
查看 CHOST 文章了解更多消息。
CFLAGS和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.
CFLAGS="-march=native -O2 -pipe"
CXXFLAGS="${CFLAGS}"
更多信息请查看 Gentoo 手册中的 GCC 优化文章和CFLAGS 和 CXXFLAGS。
CONFIG_PROTECT
CONFIG_PROTECT 变量包含用空格分隔的目录列表,Portage不会盲目的拷贝新版本的文件到这些目录中,而是将这些目录中的文件当做配置文件,由用户手动检查更新是否需要和正确。可以通过 CONFIG_PROTECT_MASK 变量排除列出目录的子目录。
A current list of presently protected locations can be displayed with portageq:
user $
portageq envvar CONFIG_PROTECT
/etc /usr/share/config /usr/share/gnupg/qualified.txt
Using portageq is a short hand alternative to running a regular expression search on verbose, informational output from the emerge command:
user $
emerge --verbose --info | grep -E '^CONFIG_PROTECT='
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt"
Files or subdirectories defined within the CONFIG_PROTECT can be excluded from protection through the CONFIG_PROTECT_MASK variable. Masking is useful when a parent directory should be protected, but a certain child directory beneath it.
该变量有一个合理的默认设置,该设置由 Portage 安装处理,并包含用户的 Gentoo profile。它可以通过系统环境(通过/etc/env.d文件更新的变量,通常用于应用程序)以及用户/etc/portage/make.conf 中设定中的条目来扩展。
CONFIG_PROTECT="/var/bind"
另请参考 Gentoo 手册中的 环境变量 章节。
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.
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.
请查看 FEATURES 文章了解更多信息。
GENTOO_MIRRORS
请查看GENTOO 镜像 文章。
MAKEOPTS
The MAKEOPTS variable is used to specify arguments passed to make when packages are built from source.
MAKEOPTS="-j4"
请查看 MAKEOPTS 文章了解更多信息。
请读完
#EMERGE_DEFAULT_OPTS
,这个变量也会影响构建行为。EMERGE_DEFAULT_OPTS
EMERGE_DEFAULT_OPTS 变量条目用于附加到 emerge 命令行。它通常用于通过 --jobs N
和 --load-average X.Y
允许并发的 emerge 操作选项,它告诉 Portage 可以使用多少并行包构建以及可以使用并行性的系统负载(平均负载)。
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.
例如,并行运行最多三个作业:
EMERGE_DEFAULT_OPTS="--jobs 3"
更多信息请参阅 EMERGE_DEFAULT_OPTS 文章。
PORTAGE_SCHEDULING_POLICY
See the Portage niceness 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.
PORTAGE_TMPDIR="/var/tmp"
On some systems, /var/tmp/ may be mounted with the noexec
option. The following error would be displayed by emerge when building packages:
user $
emerge --ask package
Can not execute files in /var/tmp/portage Likely cause is that you've mounted it with one of the following mount options: 'noexec', 'user', 'users' Please make sure that portage can execute files in this directory.
In this case, if removing the offending option from /etc/fstab isn't possible, PORTAGE_TMPDIR should be set to a different directory.
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
DISTDIR变量定义了 Portage 将会把下载的源码存放到哪个路径。新安装完后的默认值是 /var/cache/distfiles。以前的默认值是 ${PORTDIR}/distfiles,它默认解析到 /usr/portage/distfiles。
用户可以在/etc/portage/make.conf中设置DISTDIR变量:
Beware where you place your DISTDIR! Only trusted users should be granted write access to this location.
DISTDIR=/var/gentoo/distfiles
有关更多信息,请参阅 DISTDIR 文章。
PKGDIR
USE
USE 变量允许系统范围的 USE flags 设置或禁用,USE flags 是用空格分隔的列表。
USE="-kde -qt5 ldap"
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.
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.
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
ACCEPT_LICENSE 变量告诉 Portage 允许哪些软件 license 。无法在系统上安装有不允许的 license 的软件包。
ACCEPT_LICENSE="*"
The preferred way to accept all licenses is to set -@EULA which allows users to check over the terms of proprietary software.
ACCEPT_LICENSE="* -@EULA"
ACCEPT_LICENSE="-* @FREE"
LINGUAS
查看本地化指南中的 LINGUAS 章节
LINGUAS="de pt_BR en en_US en_GB"
USE_EXPAND
USE_EXPAND 变量是一个自 Portage 2.0.51.20起的列表,它在profiles/base/make.defaults 中设置 。[2]
CPU_FLAGS_X86
请查看 CPU_FLAGS_X86 文章了解更多信息。
CPU_FLAGS_X86变量可以告知 Portage CPU 拥有的 CPU flags (特性)。此信息专门用于针对目标功能来优化软件包构建。
cpuid2cpuflags utility (可以在 app-portage/cpuid2cpuflags 软件包找到) 可用于查询系统处理器支持的CPU flag 的完整列表。emerge 这个软件包之后, 使用方法是:
user $
cpuid2cpuflags
CPU_FLAGS_X86: aes avx f16c mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3
这个 flags 可以添加到 /etc/portage/make.conf 或 /etc/portage/package.use/。请注意,这仅在 x86 和 amd64 架构下有效。
INPUT_DEVICES
L10N
请查看 本地化指南中的L10N 章节和这篇 参考仓库新闻项目。
# Defining localization values
L10N="de pt-BR en en-US en-GB"
虽然常见的两字母的语言代码(像
de
和 fr
) 在 LINGUAS 和 L10N变量中是一样的,但是更复杂的条目具有不同的语法,因为L10N 使用 IETF 语言标签 (又称BCP 47)。例如,在 LINGUAS 中的 pt_BR
和 sr@latin
分别成为 L10N 中的 pt-BR
和 sr-Latn
respectively.VIDEO_CARDS
有关 USE_EXPAND 变量的可用值,请查看 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):
VIDEO_CARDS="intel nvidia radeon vesa"
Substitute the name of the driver(s) to be used. Common choices include nouveau
, nvidia
, radeon
, and intel
.
</translate>
<translate>
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
VIDEO_CARDS="intel nvidia radeon vesa"
Substitute the name of the driver(s) to be used. The following table are for common combinations of machines and video cards:
Machine | Discrete video card | VIDEO_CARDS |
---|---|---|
Intel x86 | None | See Intel#Feature support |
x86/ARM | Nvidia | nvidia
|
Any | Nvidia except Maxwell, Pascal and Volta | nouveau
|
Any | AMD since Sea Islands | amdgpu radeonsi
|
Any | ATI and older AMD | See radeon#Feature support |
Any | Intel | intel
|
Raspberry Pi | N/A | vc4
|
QEMU/KVM | Any | virgl
|
WSL | Any | d3d12
|
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
对于普通用户而言,如果要使用图形化桌面环境,则应“明确”定义此变量。更多信息请查看 Xorg/Guide/zh-cn#make.conf.
另请参阅
外部资源
- make.conf - Portage 自定义设置 - make.conf man 首页页。
参考
- ↑ Profile upgrade to version 23.0 available, gentoo.org, March 22, 2024. Retrieved on March 24, 2024.
- ↑ https://devmanual.gentoo.org/general-concepts/use-flags/#use_expand-and-arch-use-flags