/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.
Настройки в make.conf действуют для каждого устанавливаемого пакета. Эти настройки управляют многими функциями Portage, например, USE-флаги, настройки локализации (L10N), зеркала и т.д.
Очень упрощённая версия устанавливается при распаковке файла Stage. Пример конфигурационного файла можно найти в /usr/share/portage/config/make.conf.example.
Как и большинство других конфигурационных файлов Portage, make.conf может быть каталогом, а его содержимое будет объединено, как если бы они были в едином файле.
Руководство покрывает использование make.conf, в частности разделы USE-флаги, Возможности Portage (FEATURES) и Переменные. См. справочную страницу man make.conf для более подробной документации.
Приоритет
Окончательная конфигурация Portage основывается не только на make.conf. Глобальные настройки, определённые в этом файле, могут быть уточнены (или переопределены) для каждого пакета в файлах /etc/portage/package.use/, а также через переменные окружения. Также доступны настройки по умолчанию, определяемые дистрибутивом (часть через настройки по умолчанию для Portage, часть через используемый профиль Gentoo).
Хотя Portage всё ещё поддерживает старое расположение /etc/make.conf, рекомендуется использовать новое /etc/portage/make.conf. Когда доступны оба файла, настройки из /etc/portage/make.conf имеют больший приоритет, чем настройки из файла /etc/make.conf.
Переменные
Есть множество переменных, которые можно настроить в файле make.conf. Только наиболее часто используемые описаны далее в этой статье, с примерами и ссылками на более подробные статьи (когда это возможно). Более подробную информацию и полный список переменных смотрите в man-странице о make.conf запустив:
user $
man make.conf
Большинство переменных необязательны, могут занимать несколько строк, и не должны появляться больше одного раза.
Для разных конфигураций потребуются разные значения переменных. Не воспринимайте примеры ниже как окончательные или минимальные настройки — установите только необходимые переменные.
CHOST
Переменная CHOST передаётся во время настройки пакета в ebuild-файлах, чтобы задать систему, для которой будет собираться этот пакет.
профили Portage уже устанавливают подходящее значение CHOST, и его изменение требует понимания и опыта в кросс-компиляции.
Starting with profile version 23.0 it is recommended to not to list CHOST in the make.conf file.[1]
За более подробной информацией обращайтесь к статье CHOST.
CFLAGS и CXXFLAGS
Переменные CFLAGS и CXXFLAGS задают флаги сборки и компиляции, которые будут использоваться для всех пакетов (с небольшими исключениями, когда для какого-то пакета отфильтровываются проблемные флаги). Переменная CFLAGS предназначена для приложений на C, в то время как переменная CXXFLAGS предназначена для приложений на C++. Большинство пользователей оставляют содержимое обеих переменных одинаковым.
/etc/portage/make.conf
Часто используемые настройки для CFLAGS и CXXFLAGSCFLAGS="-march=native -O2 -pipe"
CXXFLAGS="${CFLAGS}"
За более подробной информацией обращайтесь к статье Оптимизация GCC, safe CFLAGS и CFLAGS и CXXFLAGS в Руководстве Gentoo. См. также ЧаВо.
CONFIG_PROTECT
Переменная CONFIG_PROTECT содержит список файлов и каталогов, отделенных друг от друга пробелами, которые Portage защитит от автоматической модификации. Предлагаемые изменения для защищенных расположений конфигурации требуют ручного слияния со стороны системного администратора (см. dispatch-conf или похожие утилиты слияния).
Текущий список защищённых путей можно отобразить с помощью portageq:
user $
portageq envvar CONFIG_PROTECT
/etc /usr/share/config /usr/share/gnupg/qualified.txt
Использование portageq является простой альтернативой запуска поиска с помощью регулярного выражения в подробном выводе команды emerge:
user $
emerge --verbose --info | grep -E '^CONFIG_PROTECT='
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt"
Файлы или подкаталоги, определенные в CONFIG_PROTECT, могут быть исключены из защиты через переменную CONFIG_PROTECT_MASK. Маскирование полезно, когда должен быть защищен родительский каталог, но не подкаталог внутри него.
Переменная, с разумными значениями, по умолчания обрабатывается Portage и пользовательским Gentoo профилем. Переменная может быть расширенна с помощью системного окружения (которое часто используется приложениями, которые обновляют переменные через их файл в /etc/env.d), а также настроек пользователя из файла /etc/portage/make.conf.
/etc/portage/make.conf
Пример определения CONFIG_PROTECTCONFIG_PROTECT="/var/bind"
Также смотрите главу переменное окружение в Gentoo Handbook.
FEATURES
Переменная FEATURES содержит список возможностей Portage, которые пользователь желает включить в системе, влияющие на его поведение. Список по умолчанию включается с помощью /usr/share/portage/config/make.globals, но может быть легко изменен с помощью /etc/portage/make.conf. Поскольку FEATURES является инкрементальной переменной, добавление значений в нее не будет переопределять значений из профиля Gentoo.
/etc/portage/make.conf
Добавление keepwork в переменную FEATURESFEATURES="keepwork"
Для более подробной информации посмотрите статью возможности Portage в Gentoo Handbook и статью FEATURES. Полный список всех доступных значений переменной FEATURES смотрите в man 5 make.conf.
За более подробной информацией обращайтесь к статье FEATURES.
GENTOO_MIRRORS
Смотрите статью GENTOO_MIRRORS.
MAKEOPTS
Переменная MAKEOPTS задаёт аргументы для make во время компиляции пакетов
/etc/portage/make.conf
Рекомендуемые настройки для двух-ядерного процессора с включённым Hyper-Threading и 8 ГБ ОЗУMAKEOPTS="-j4"
За более подробной информацией обращайтесь к статье MAKEOPTS.
Просмотрите раздел /etc/portage/make.conf, эта переменная также влияет на процесс сборки пакетов.
EMERGE_DEFAULT_OPTS
EMERGE_DEFAULT_OPTS — это переменная для Portage, которая определяет параметры, которые будут добавлены к параметрам запуска команды emerge.
EMERGE_DEFAULT_OPTS позволяет выполнять параллельно команды emerge с помощью параметров --jobs N
и --load-average X.Y
. EMERGE_DEFAULT_OPTS используются в Portage для определения ограничения системной нагрузки (load average) и ограничения количества одновременно собираемых пакетов.
Чтобы запустить три задачи сборки одновременно:
/etc/portage/make.conf
Настройка для сборки пакетов в 3 параллельных задачахEMERGE_DEFAULT_OPTS="--jobs 3"
Для более подробной информации смотрите статью EMERGE_DEFAULT_OPTS.
PORTAGE_SCHEDULING_POLICY
Смотрите статью Portage niceness.
PORTAGE_TMPDIR
Переменная PORTAGE_TMPDIR определяет расположение временных файлов для Portage. Значение по умолчанию равно /var/tmp, вследствие чего для сборки используется каталог /var/tmp/portage, для поддержки ccache — /var/tmp/ccache, и так далее.
/etc/portage/make.conf
Настройка переменной PORTAGE_TMPDIR по умолчанию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.
Если имеется достаточно памяти, сборка пакетов может быть ускорена путём монтирования PORTAGE_TMPDIR в TMPFS. За более подробной информацией обращайтесь к статье Portage TMPDIR на tmpfs.
DISTDIR
Переменная DISTDIR определяет каталог, где Portage будет хранить скачанные архивы с исходным кодом По умолчанию это путь /var/cache/distfiles для новых установок. Ранее был выставлен путь ${PORTDIR}/distfiles, который обрабатывался по умолчанию в /usr/portage/distfiles.
Пользователи могут установить переменную DISTDIR в /etc/portage/make.conf:
Beware where you place your DISTDIR! Only trusted users should be granted write access to this location.
/etc/portage/make.conf
Использование другого каталога в DISTDIRDISTDIR=/var/gentoo/distfiles
Для более подробной информации см. статью DISTDIR.
PKGDIR
PKGDIR — каталог, в котором Portage сохраняет бинарные пакеты. По умолчанию каталог устанавливается в /var/cache/binpkgs.
Ранее бинарные пакеты сохранялись в каталог ${PORTDIR}/packages, который определялся по умолчанию как /usr/portage/packages.
Выполните man make.conf для получения дополнительной информации.
USE
Переменная USE активирует или деактивирует USE-флаги для всей системы. Эта переменная содержит флаги, разделённые пробелом, и может занимать несколько строк.
USE="-kde -qt5 ldap"
Смотрите статью USE-флаги для полного объяснения. Для информации о установке USE-флагов для конкретного пакета смотрите раздел в Руководстве Объявление USE-флагов для отдельных пакетов и статью о файле /etc/portage/package.use.
Всегда учитывайте, стоит ли устанавливать USE-флаг глобально и какие последствия это будет иметь для системы, или лучше просто установить флаг для конкретно одного или нескольких пакетов.
USE-флаг можно выставить временно в командной строке, чтобы проверить его эффект перед записью в файл world (всех пакетов): USE="[тестируемый USE-флаг]" emerge --pretend --verbose --update --deep --newuse world
ACCEPT_LICENSE
Переменная ACCEPT_LICENSE сообщает Portage какие лицензии программного обеспечения допустимы. Пакеты, у которых не разрешенная лицензия, не будет установлены на систему.
ACCEPT_LICENSE="*"
The preferred way to accept all licenses is to set -@EULA which allows users to check over the terms of proprietary software.
/etc/portage/make.conf
To accept all licenses on all packages expect proprietaryACCEPT_LICENSE="* -@EULA"
/etc/portage/make.conf
Разрешить только свободныеACCEPT_LICENSE="-* @FREE"
USE_EXPAND
In the past USE_EXPAND flags were set in /etc/portage/make.conf but this can lead to ordering issues with Portage. Because of this, this article now uses the preferred method /etc/portage/package.use.
Переменная USE_EXPAND является списком, задаваемым (на момент Portage версии 2.0.51.20) в profiles/base/make.defaults.[2]
CPU_FLAGS_*
За более подробной информацией обращайтесь к статье CPU_FLAGS_*.
Переменная CPU_FLAGS_* сообщает Portage о доступных наборах инструкций и других возможностей процессора (CPU flags/features). Эта информация используется для оптимизации программы специально под цели с такими возможностями. В данный момент поддерживаются CPU_FLAGS_X86 (для архитектур amd64 и x86), CPU_FLAGS_ARM (для архитектур arm и arm64) и CPU_FLAGS_PPC (для архитектур ppc и ppc64).
Утилита cpuid2cpuflags (в пакете app-portage/cpuid2cpuflags) может быть использована, чтобы получить полный список возможностей, поддерживаемых системным процессором. После установки пакета, выполните команду:
user $
cpuid2cpuflags
CPU_FLAGS_X86: aes avx f16c mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3
INPUT_DEVICES
Смотрите также раздел make.conf из статьи Xorg/Руководство и страницу с возможными значениями.
LINGUAS
Смотрите LINGUAS в руководстве по локализации.
/etc/portage/package.use/00local
*/* LINGUAS: de pt_BR en en_US en_GB
L10N
Смотрите L10N в руководстве по локализации.
/etc/portage/package.use/00local
*/* L10N: de pt-BR en en-US en-GB
Хотя распространенные двухбуквенные коды языков (например
de
или fr
) идентичны в переменных LINGUAS и L10N, более сложные коды используют другой синтаксис, поскольку переменная L10N использует языковые метки IETF (или BCP 47). Например, pt_BR
и sr@latin
в LINGUAS становятся pt-BR
и sr-Latn
в L10N, соответственно.VIDEO_CARDS
This method is deprecated due to bug #922307, for the correct way to set this please use Handbook:AMD64/Installation/Base
Возможные значения переменной USE_EXPAND можно найти на странице p.g.o VIDEO_CARDS.
Компьютер | Дискретная видеокарта | VIDEO_CARDS |
---|---|---|
Intel x86 | Нет | См. Intel#Feature support |
x86/ARM | Nvidia | nvidia
|
Любой | Nvidia кроме Maxwell, Pascal и Volta | nouveau
|
Любой | AMD начиная с Sea Islands | amdgpu radeonsi
|
Любой | ATI или старый AMD | См. radeon#Feature support |
Любой | Intel | intel
|
Raspberry Pi | н/д | vc4
|
QEMU/KVM | Любой | virgl
|
WSL | Любой | d3d12
|
Установите названия драйверов, которые будут использоваться. В следующей таблице приведены распространенные сочетания компьютеров и видеокарт:
Добавление в переменную VIDEO_CARDS подходящих значений добавит зависимость от нужных драйверов:
После установки или изменения VIDEO_CARDS не забудьте обновить систему с помощью следующей команды, чтобы применить изменения:
/etc/portage/package.use/00video
*/* VIDEO_CARDS: -* intel nouveau radeon radeonsi
root #
emerge --getbinpkg --ask --changed-use --deep @world
Omit --getbinpkg
to not use the configured binary package host.
Для обычного пользователя, при использовании окружения рабочего стола, эта переменная должна быть явно задана. Для дальнейшей информации см. раздел make.conf в Руководстве Xorg.
Для получения более подробной информации см. статьи AMDGPU, Intel, Nouveau или NVIDIA.
См. также
- Переменные Portage (Руководство AMD64)
- Возможности Portage (Руководство AMD64)
- Переменные окружения (Руководство AMD64)
- Продвинутые возможности Portage (Руководство AMD64)
- Проблемы с установкой при наличии
/.git/index.lock
в корне ФС
Внешние ресурсы
- make.conf - параметры для Portage — страница справки (man) для make.conf.
Ссылки
- ↑ 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