Gentoo: USE-флаги

Одна из сложностей, с которой приходится столкнуться начинающему пользователю 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. На деле данная операционная система довольно проста!

Похожие записи:

  1. Gentoo: решение проблем
  2. Gentoo…
  3. Gentoo – шаг в будущее?
  4. Gentoo: dhcp & dns
  5. Проблема с обновлением awesome

Метки: gentoo, Linux, советы

Отзывов (37) на «Gentoo: USE-флаги»

  • Спасибо. В закладки, однозначно.

  • Отличный пост. Стоит ещё сказать про ufed, удобная штука на первых порах.

  • Вот именно, что на первых порах, я тоже пытался ее использовать. Но она больше мешает, чем помогает, потому и не описывал про нее.

  • Ну почему, почему же я каждый твой пост читаю и ржунимагу? 8-)

  • Ну а ты попробуй объяснить, что такого смешного ты видишь??
    А я попробую понять тебя…

  • Чудится почему-то, что если бы я хотел написать текст, агитирующий против генты, он бы примерно таким. Вот и смех пробирает. Ты специально так делаешь наверное, ведь это уже не первый раз.

    Автор жжошь, пиши ищщо.

  • equery u

    где атом — это название пакета
    показывает все используемые пакетом флаги, включены ли они и где это сделано и дает краткое описание каждого флага. Утилита близкая к идеальной. И не нужно делать emerge -pv , это долго и бестолково.

  • черт, ну почему он не заменяет < и >?! Конечно же, имелось ввиду
    equery u <atom>
    emerge -pv <atom>

  • напиши сам… в чем проблема? критиковать легко! ;)

  • специфика движка…
    спасибо за дополнение!!!

  • Неочевидно, что такого страшного написано в статье. Да, это не убунта «нажал и поехало», зато подконтрольность системы гораздо больше.
    Ну и да, gentoo не для домохозяек и новичков в linux, тут двух мнений быть не может.

    P.S.
    – Привет ALL! Я хочу поставить Linux посмотреть-поиграться, ничего толком не знаю! Какой дистрибутив выбрать?
    – Слаку поставь.

    В этой старой шутке слаку с успехом можно заменить на генту. С minimal install, само собой. Gentoo даже лучше.

  • Она мне в первый же день возни с gentoo сломала make.conf :) Так что нет, не стоит про нее даже вспоминать

  • Как это ей удалось?? =D

  • А вот подробностей я уже не помню. Помню только что пришлось его переписывать заново после того, как поигрался с ufed’ом.

  • Хорошая статья для новичков! А если нужно поведение Убунту, то просто нужно врубить все флаги и не париться. Понимание мощи системы приходит постепенно, и важно понимать, что необходимости разбираться сразу во всех деталях здесь нет.

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

  • А ну если уфедом прошелся, тогда понятно, хотя и в этом случае можно было разрулить ситуацию, вручную задав флаги… уфед ведь только USE меняет, все остальное остается без изменений…

  • Не хватает одного. Наобум с нуля USE-флаги писать не стоит. Будет помойка.
    Сначала лучше убедиться командой eselect profile, какой профиль выбран. И выбрать, если требуется, desktop или server, или что ещё. А потом уже лучше настраивать под себя.

  • Надо же, без превью ошибся со ссылкой. Вот правильная: как сохранять состояние системы с USE флагами.

  • Если требуется поведение убунты, то не обязательно включать все флаги. По умолчанию много работает так, как нужно, требуется включать лишь определенные флаги, типа поддержки форматов графических файлов, некоторых документов.
    Спасибо!
    Комент править не буду, пусть оба остаются. =)

  • Нууу… Да, согласен, наобум в генту вообще ничего делать не стоит. У меня уже в голове такое представление, что воспринимаю его как должное, что забыл описать.
    eselect profile нужен по сути только во время установки gentoo, когда выбираем профиль. Так что думаю, что это не сильно меняет сути статьи.
    Все равно спасибо больше за замечание!

  • Отличная статья. Не хватает только про eix написать :)

  • eix к use-флагам особого отношения не имеет, потому решил, что не стоит тут это описывать.

  • Ну он тоже облегчает жизнь. При чем сильно облегчает :)

  • Статья задумывалась не про облегчение жизни, а как описание работы с USE-флагами… ;)

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

  • Если так рассматривать, тогда да, включать все возможные флаги. Вопрос только – зачем использовать в этом случае генту? ;)

  • У дженту много разных преимуществ помимо флагов. Например, специальная оптимизация при сборке или легкость модификации ebuild-а, который всегда находится в системе (нет необходимости специально искать srpm и пр.).

    В общем, основная мысль состояла в следующем. Мигрантам и новичкам может быть полезно «врубить все», чтобы не было криков «а-а-а, почему у меня эта фича не работает?! гребаный дженту! ничего в нем не пашет!» Со временем они поймут, что тянется огромное количество ненужных зависимостей, и научатся правильно использовать флаги. emerge –depclean – и порядок.

    У меня был случай, когда мой шеф решил попробовать мигрировать с федоры после покупки новой машины, но стал педантично выбирать и настраивать флаги еще до установки системы. Это было роковой ошибкой, т.к. он через некоторое время сдался. Некогда, говорит, мне с такой детальной настройкой возиться, мне работать надо. А не настроить не может, а как же иначе, будет мусор в системе с самого начала?! ;) Так я его и не убедил, так и сидит на федоре. А жаль, ведь часто ставит из исходников прямо configure, make, make install.

  • Оптимизацию gentoo в плюс я не ставлю, потому что мороки много, а толку мало. Основной плюс генту в гибкости и простоте настройки.
    Мигрантам и новичкам тоже не нужно включать все подряд. К примеру, если будет стоять флаг dvi, то при сборке evince, будет дополнительно установлен texlive. При этом evince будет иметь возможность открывать dvi-файлы, которой по умолчанию нет ни в одном из дистров, но затем этот самый новичок будет удивляться, зачем для такой небольшой программки тащиться так много пакетов и почему они так много занимают пространства в системе??
    Таким образом он не разберется в основах и получит захламленную систему.
    Я считаю, что если уж использовать gentoo, то немного сил нужно приложить, к тому, чтобы научиться работать с этой системой.

    Я кстати тоже, как ваш шеф, в одно время пытался идти этим путем. Тоже педантично выставлял флаги, несколько часов потратил, пока меня это не достало и пока в голове мозги не стали разрываться от напряжения. Порядка в систему все равно это не принесло и я не мог контролировать, что и почему ставиться… в итоге установка сорвалась… Описанный тут способ проще на порядки, хотя и требуют дополнительных действий. Но по мере наращивания системы и установки дополнительных программ, становиться понятно, почему ставиться именно то, а не это, что нужно включать и так далее… Везде нужна постепенность и целенаправленность.

  • [...] “Use flagu izmantošana Gentoo” (krievu val.) Gentoo iesācējiem apstāstīts, kas ir USE flagi, kur tos ņemt, kā [...]

  • Забыли написать, что лучше хранить флаги не в файле /etc/portage/package.use а создавать директорию /etc/portage/package.use/ (аналогично директории/etc/portage/package.unmask/ /etc/portage/package.keywords/ )и в ней уже создаешь любой файл и в него пишешь флаги… Так удобней когда к примеру используешь оверлей kde (бывший kde-testing) и у них есть свой файл для размаскировки пакетов и на него можно просто ссылку сделать.

  • перед установкой главное выбрать нужный профиль, и определится с (+-) gtk, gnome, qt, kde, alsa, (ati/nvidia). Остальное можно уже добить после.. используя /etc/make.conf (/etc/portage/..) и emerge -N world и emerge –depclean, revdep-rebuild.

    С каждым новым «emerge-webrsync; emerge -uND world/system; emerge –depclean» система сама себя почистит от ненужных зависимостей. Так что не стоит особо напрягаться. Панику разводят только те, кто думает, что контролирует свою систему, но в действительности это не так. Не бойтесь поставить лишнюю программу (и по 2-3 раза ее перекомпилить с новыми флагами), только так вы поймете зачем она вооще нужна и стоит ли ее вообще держать.

    К дополнению к статье:
    команда revdep-rebuild входящая в gentoolkit позволяет доставить недостоющие пакеты (прописаные в зависимостях)

    P.S.
    Ну а если наломали дров то emerge @preserved-rebuild вам в помощь :)

  • Автор не указал, что можно юс флаги использовать локально..

    Чтобы понять, какие флаги добавить на постоянную прописку в make.conf, package.use,
    попробуйте поиграться на этом примере:

    #USE=»-X alsa oss -samba» emerge -pv mplayer
    #USE=»X mp3 dvd -oss samba» emerge -pv mplayer

  • В русском хандбуке нет
    eselect profile list
    eselect profile set X
    Эта штука сильно помогает с флагами, особенно для начинающих.

  • Для удобства – да, лучше создавать директорию. Но я стараюсь минимизировать записи флагов, и в файлах конфигурации немного строк.
    Потому собственно ничего и не указывал.
    За напоминание спасибо!

  • Спасибо за дополнение!

  • Локально использовать флаги можно только в целях эксперимента, когда установка проходит всецело по плану. Я так никогда не делаю.
    Я просто ставлю программу с определенными флагами, флаги соответственно записываю в файл package.use, их уже не забыть и при обновлении системы флаги не потеряются, а с течением времени флаги можно поменять или перенести в глобальный раздел.

  • Пока вы не сказали, я бы и не знал. Нужно будет покопаться в этом направлении, спасибо!!

Вы можете оставить свой комментарий...

Имя (required)
Почта (обязательно)
Сайт