Handbook:Parts/Working/USE/ru

Идея USE-флагов
При установке Gentoo (или любого другого дистрибутива, или даже операционной системы вообще) пользователи делают выбор в зависимости от среды, в которой они работают. Настройка для сервера отличается от настройки для рабочего места. Система для игр отличается от системы для 3D-рендеринга.

Это касается не только того, какие пакеты необходимо устанавливать, но и какие возможности в определённых пакетах должны поддерживаться. Если нет необходимости в OpenGL, то зачем устанавливать OpenGL и обеспечивать его поддержку в других пакетах? Если не планируется использовать KDE, зачем утруждать себя сборкой пакетов с поддержкой KDE, если они могут работать и без неё?

Чтобы помочь в решении, что устанавливать/активировать, а что нет, Gentoo предоставляет пользователю простой способ в описании его окружения. Он даёт пользователю выбор, что ему действительно нужно, а также облегчает работу с Portage для принятия более верных решений.

Определение USE-флага
Перейдём к определению USE-флага. Такой флаг представляет из себя ключевое слово, в котором воплощается поддержка и зависимость от определённой концепции. Если определить какой-либо USE-флаг, Portage будет знать, что нужно поддерживать такое ключевое слово. Конечно же, это также изменит сведения о необходимых зависимостях пакета.

Рассмотрим конкретный пример: ключевое слово. Если такого ключевого слова нет в переменной USE, все пакеты, у которых поддержка KDE является необязательной, будут скомпилированы без поддержки KDE. Все пакеты, у которых зависимость от KDE необязательна, будут установлены без установки библиотек KDE (в качестве зависимости). Если ключевое слово kde определено, тогда эти пакеты будут скомпилированы с поддержкой KDE, а библиотеки KDE будут установлены в виде зависимостей.

When the  flag is set to enabled, then those packages will be compiled with KDE support, and the KDE libraries will be installed as dependency.

При помощи правильного определения ключевых слов система может быть адаптирована под потребности конкретного пользователя.

Объявление постоянных USE-флагов
Как уже говорилось ранее, все USE-флаги объявляются в переменной USE. Чтобы облегчить для пользователей поиск и выбор USE-флагов, мы устанавливаем переменную USE в некоторое значение по умолчанию. Это значение определяет коллекцию USE-флагов, которые, по нашему мнению, наиболее часто используются пользователями Gentoo. Эти настройки по умолчанию объявлены в файлах, являющиеся частью выбранного профиля.

Профиль, на который определена система, читается из символической ссылки. Каждый профиль работает поверх других профилей, поэтому конечный результат в итоге будет суммой всех профилей. В основе всех профилей базовый профиль.

Для просмотра действующих на данный момент USE-флагов (всех) используйте :

Как видно, эта переменная уже содержит достаточно много ключевых слов. Не меняйте файлы, чтобы подстроить переменную USE под свои нужды: изменения в этих файлах будут отменены при следующем обновлении репозитория Gentoo!

Чтобы изменить настройки по умолчанию, добавьте или удалите ключевые слова в переменной USE. Это можно сделать глобально, определяя переменную USE в файле. В этой переменной можно добавлять нужные или удалять ненужные USE-флаги. Для удаления необходимо указать перед ключевым словом префикс в виде знака «минус».

Например, для отключения поддержки KDE и Qt и включения поддержки LDAP в следует указать следующие USE-флаги:

Объявление USE-флагов для отдельных пакетов
Иногда необходимо определить некий USE-флаг для одного или нескольких приложений, но не для всей системы. Для этого отредактируйте. Как правило, — это один файл, но может быть и каталогом; смотрите совет ниже и  для более подробной информации. Следующий пример подразумевает, что — это один файл.

Например, чтобы включить поддержку Blu-ray только в пакете VLC:

Аналогичным образом можно запретить использование USE-флагов для определённого приложения. Например, чтобы отключить поддержку bzip2 в PHP (но оставить такую поддержку для всех остальных пакетов через определение USE-флага в файле ):

Объявление временных USE-флагов
Иногда нужно установить USE-флаг на короткое время. Вместо двойного редактирования файла (сначала сделать изменение в переменной USE, а потом его отменить), просто определите переменную USE как переменную окружения. Запомните, что эти настройки будут применены только к введённой команде; пересборка или обновление этого приложения (в явном виде или при обновлении системы) отменят изменения, сделанные с помощью временного определения USE-флага.

Следующий пример временно удаляет  из переменной USE во время установки SeaMonkey:

Приоритет
Конечно, есть приоритет в том, какие настройки будут преобладать над другими настройками USE. Последовательность для настроек USE, отсортированная по приоритету (сперва меньший приоритет):
 * 1) Настройки USE по умолчанию объявляются в файле  из выбранного профиля
 * 2) Определённые пользователем настройки USE в файле
 * 3) Определённые пользователем настройки USE в файле
 * 4) Определённые пользователем настройки USE в виде переменной окружения.

Чтобы отобразить финальные настройки, как их видит Portage, выполните. Эта команда отобразит список соответствующих переменных (включая переменные USE ) с их текущими значениями, как их видит Portage.

Адаптация всей системы под новые USE-флаги
После изменений USE-флагов система должна быть обновлена, чтобы изменения вступили в силу. Чтобы сделать это, используйте параметр  для :

Далее, запустите очистку зависимостей Portage (depclean), чтобы удалить зависимости, которые были необходимы в «старой» системе, но теперь, с новыми USE-флагами, устарели.

После завершения работы depclean может предложить пересобрать приложения, которые динамически связаны с общими объектами, удалёнными вместе с устаревшими пакетами. Portage сохранит необходимые библиотеки до тех пор, пока не будет выполнено это действие, чтобы не допустить нарушение работы приложений. Portage хранит список необходимых для пересборки пакетов в наборе. Чтобы выполнить пересборку пакетов, запустите:

После того, как эта команда будет завершена, систему можно считать настроенной в соответствии с новыми USE-флагами.

Просмотр доступных USE-флагов
Возьмём для примера seamonkey: какие USE-флаги он поддерживает? Чтобы получить ответ на этот вопрос, воспользуемся с параметрами   и  :

— не единственная утилита, которую можно использовать для этой задачи. Есть специальная утилита для получения информации о пакете под названием из пакета.

Теперь запустите с аргументом uses для получения списка USE-флагов для определённого пакета. Например, для пакета gnumeric:

Удовлетворение условий REQUIRED_USE
Некоторые пакеты требуют или запрещают определённые комбинации USE-флагов для своей корректной работы. Это выражается через совокупность условий, которые помещены в выражении REQUIRED_USE. Такие условия гарантируют, что все функции и зависимости удовлетворены и сборка будет выполнена корректно и правильно. Если какое-либо из условий не выполняется, emerge предупредит вас об этом и попросит исправить эту проблему.