Gentoo: USE-флаги

05 December 2009 #gentoo #tips

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

Дело в том, что USE-флаги задаются каждым пользователем отдельно, именно под себя. Потому найти каких-то ни было универсальных списков данных флагов просто не возможно. Но не надо отчаиваться! Есть несколько простых правил, выполняя которые мы сводим использование USE-флагов к нечто простому.

Итак, что это за правила?

  1. Нужно помнить, что существует минимум два конфигурационных файла, отвечающих за USE-флаги. Во-первых, это /etc/make.conf, в котором задаются флаги, действующие на все устанавливаемые пакеты. И во-вторых, это вручную создаваемый файл /etc/portage/packages.use, в котором указываются отдельные пакеты с соответствующими флагами. Пример файла /etc/portage/packages.use:
    www-client/w3m -gtk lynxkeymap
    net-im/pidgin -networkmanager -gstreamer -dbus
    x11-libs/vte -python
    x11-misc/xbindkeys guile
    app-editors/emacs -svg
    xfce-base/thunar -trash-plugin -startup-notification
    x11-libs/cairo glitz -xcb
    media-sound/sonata -trayicon
    app-office/openoffice java -pam
    media-fonts/terminus-font quote ru-dv ru-i bolddiag width
    net-misc/slimrat -X
    x11-wm/dwm savedconfig
    media-video/vlc qt4 schroedinger skins stream
    sys-apps/man-pages -linguas_ru
    net-libs/libsoup gnome
    net-libs/libproxy gnome
    net-nds/openldap sasl
  2. Не нужно сразу, во время установки, пытаться создавать колоссальный по объему список глобальных флагов, так сказать про запас. Достаточно с самого начала задать к примеру следующие флаги:
    USE="X gtk mmx sse sse2 smp ssse3 mmxext dvd alsa cdr bash-completion -gnome -kde -qt3 -qt4 -bindist -consolekit -policykit -eds"
    Это примерный список, который в дальнейшем будем наращивать. Как видно, указываем использование gtk-интерфейса, задаем основные инструкции процессора, использование двд, звука и записи компакт-дисков, при этом отключаем гном, кде, qt-интерфейс, консолекит и полисикит.
  3. Перед установкой любого пакета проверяем флаги которые используются программой. Для этого запускаем, например для bash:
    $ emerge -pv bash
    These are the packages that would be merged, in order:
    Calculating dependencies... done!
    [ebuild   R   ] app-shells/bash-4.0_p28  USE="net nls -afs -bashlogger -examples -plugins -vanilla" 0 kB
    Сразу видно, какие флаги используются, какие в данный момент времени включены, а какие выключены. Для того, чтобы сказать, нужен какой-то конкретный флаг или нет, необходимо знать, для чего он вообще используется. Очень удобно для этих целей использовать утилиту euse, которая входит в состав пакета gentoolkit. Рекомендую ставить этот пакет с самого начала, еще во время установки системы.
    emerge -av gentoolkit
    Обратите внимание, что при установке используются флаги "-av". Это позволяет перед установкой проверить флаги еще раз, посмотреть список пакетов, которые будут устанавливаться и если все нормально, после подтверждения пользователя будет осуществлена установка нужного пакета. После установки для того, чтобы посмотреть назначение конкретного флага используется следующий вызов euse:
    $ euse -i vanilla
    global use flags (searching: vanilla)
    ************************************************************
    [-    ] vanilla - Do not add extra patches which change default behaviour;
    DO NOT USE THIS ON A GLOBAL SCALE as the severity of the meaning changes drastically
    
    local use flags (searching: vanilla)
    ************************************************************
    [-    ] vanilla (www-apache/mod_security):
    Provide the original ModSecurity Core Rule Set without Gentoo-specific relaxation.
    When this flag is enabled, we install the unadulterated Core Rule Set. Warning!
    The original Core Rule Set is draconic and most likely will break your web applications,
    including Rails-based web applications and Bugzilla.
    Как видно описание показывает как глобальное действие флага, так и действие на конкретные пакеты. После того, как мы узнаем, что конкретно делает данный флаг, принимаем решение, использовать его в своей работе или нет.
  4. Все флаги без исключения добавляем в файл /etc/portage/packages.use, то есть указываем флаги только локально. Пример моего файла смотрите выше. Когда набирается большое число пакетов, анализируем их на наличие повторяющихся флагов и переносим их в /etc/make.conf
  5. Если системы была собрана с одним набором флагов, и в дальнейшем мы принимаем решение использовать другой набор -- в этом нет ничего страшного. Производим изменение списка флагов и запускаем обновление системы:
    emerge -auND world
    Будет произведен анализ установленных пакетов на измененные зависимости и необходимые пакеты доставляются и пересобираются. После чего не лишним будет выполнить очистку системы:
    emerge -a --depclean
    Проверяем список пакетов, который будет удален, при необходимости добавляем нужные имена файлов в файл /var/lib/portage/world для того, чтобы оставить их в системе и затем удаляем все то, что уже является лишним в системе.

Соблюдая эти правила довольно просто управлять списком USE-флагов не захламляя систему ненужными зависимостями. Надеюсь эта статья поможет вам ближе познакомиться с Gentoo. На деле данная операционная система довольно проста!