Handbook:Parts/Working/USE/ru

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

Это касается не только того, какие пакеты необходимо устанавливать, но и какие функции в определенных пакетах должны поддерживаться. Если нет необходимости в OpenGL, зачем кому-то устанавливать и поддерживать 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-флаги, или удалить USE-фдаги, которые больше не нужны. Для удаления необходимо добавить перед ключевым словом префикс в виде знака минус.

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

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

Например, чтобы включить поддержку только для berkdb в mysql:

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

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

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

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

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

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

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

После завершения работы depclean, запустите, чтобы пересобрать приложения, что снова динамически перелинкует общие объекты, ранее предоставляемые удаляемыми пакетами. - это часть пакета ; не забудьте сперва его установить.

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

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

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

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

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

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