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 будут установлены в виде зависимостей.

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

Какие бывают USE-флаги
Есть два типа USE-флагов: глобальные и локальные.


 * Глобальные USE-флаги используются множеством пакетов на системном уровне. Это то, что большинство людей понимают под USE-флагами. Список доступных глобальных USE-флагов можно найти на Главном сайте или локально в файле.
 * Локальные USE-флаги используются конкретным пакетом, чтобы определить параметры самого пакета. Список доступных локальных USE-флагов можно найти на Главном сайте или локально в файле.

Объявление постоянных 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 сохранит необходимые библиотеки до тех пор, пока не будет выполнено это действие, чтобы не перелинкованные ещё приложения могли работать. Он хранит то, что необходимо пересобрать, в наборе. Чтобы пересобрать необходимые пакеты, запустите:

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

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

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

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

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

Некоторые примеры для выражений REQUIRED_USE предоставлены ниже: