# Use флаги

## Ka4_0k

Здравствуйте. Поробовал поиск по форуму и чтение faq, так ничего и не нашёл. Да и вообще интересующую информацию искал уже день, ничего путного нету :)

Каково влияние use флагов? Ну тоесть я понимаю что к примеру imagemagick надо собиать с jpeg и прочими для поддержки функционала, но весь список флагов великоват. Если сразу вписать в make.conf всё, что собираюсь использовать то все собираемые программы будут собиратся с этими флагами? Не сильно ли это "перергужает" их (программы в смысле ) ? Ведь если собрать что-то мелкое с поддержкой всего то выйдет уже далеко не мелкое...

Где можно найти список используемых пакетов и библиотек к устанавливаемым программам? Просто не хотелось бы компилить лишнее... (ну тоесть собирать только с тем что "критически" необходимо).

Ещё есть вопрос про сам "синтаксис" написание флагов. Например:

USE="gtk -qt" - использовать gtk, но не использовать qt? Это нужно для отключения флагов в профиле? (например если в профиле qt в любом случае используется)

И где можно посмотреть флаги из конкретного профиля?

Заранее спасибо.

Ещё в этой теме, насколько я понял описывается ускорение процесса компиляции?

https://forums.gentoo.org/viewtopic-t-529291.html

----------

## nao

 *Ka4_0k wrote:*   

> Каково влияние use флагов? Ну тоесть я понимаю что к примеру imagemagick надо собиать с jpeg и прочими для поддержки функционала, но весь список флагов великоват.

 

Есть много вспомогательных утилит для того чтобы не запутаться в флагах.

Например euse из пакета gentoolkit и quse из portage-utils.

 *Quote:*   

> Если сразу вписать в make.conf всё, что собираюсь использовать то все собираемые программы будут собиратся с этими флагами?

 

Да. А ещё есть /etc/portage/package.use , которым уже можно выставить юз-файлы для каждого пакета.

Про этот файл написано в man portage.

Там кстати ещё много полезного написано...

 *Quote:*   

> Не сильно ли это "перергужает" их (программы в смысле ) ? Ведь если собрать что-то мелкое с поддержкой всего то выйдет уже далеко не мелкое...

 

В бинарных дистрибутивах так и делают в большинстве случаев. "Перегружаются" больше не сами собираемые программы. Просто в общем случае: чем больше у пакета юз-флагов - тем больше он потянет зависимостей - тем больше пакетов в системе.

 *Quote:*   

> Где можно найти список используемых пакетов и библиотек к устанавливаемым программам? Просто не хотелось бы компилить лишнее... (ну тоесть собирать только с тем что "критически" необходимо).

 

Не совсем понятен ваш вопрос. Пакетный менеджер сам в состоянии определеить, что ему нужно будет поставить если вы включили флаг "foo" на пакете. Это же не LFS.

 *Quote:*   

> Ещё есть вопрос про сам "синтаксис" написание флагов. Например:
> 
> USE="gtk -qt" - использовать gtk, но не использовать qt? Это нужно для отключения флагов в профиле? (например если в профиле qt в любом случае используется)
> 
> 

 

Да. Вообще, какой набор флагов будет использоваться для сборки конкретного пакета зависит от многих конфигов в системе.

Вы поймёте если прочтёте про переменную USE_ORDER в man make.conf

 *Quote:*   

> И где можно посмотреть флаги из конкретного профиля?
> 
> Заранее спасибо.

 

Профиль на самом деле обычно состоит не из одного профиля, а из целого каскада, которые накладываются друг на друга.

Можете сами посмотреть, куда ведёт /etc/make.profile

Там будут всевозможные настройки (в том числе USE-флаги) и parent (родительские) профили, а у них свои...

Честно говоря, сказать какие юз-флаги по дефолту в каком профиле я вам не смогу сказать. Если интересно, можете выставить нужный профиль, убрать|переименовать /etc/portage и посмотреть на выхлоп emerge --info | grep USE=

Будут что-то вроде суммы всех флагов профиля (плюс ещё всяких других).

Вы лучше посмотрите сами и выберите подходящий профиль исходя из названия:

```
nao@nao ~ % eselect profile list

Available profile symlink targets:

  [1]   default/linux/x86/10.0 *

  [2]   default/linux/x86/10.0/desktop

  [3]   default/linux/x86/10.0/desktop/gnome

  [4]   default/linux/x86/10.0/desktop/kde

  [5]   default/linux/x86/10.0/developer

  [6]   default/linux/x86/10.0/server

  [7]   hardened/linux/x86/10.0

  [8]   selinux/2007.0/x86

  [9]   selinux/2007.0/x86/hardened

  [10]  selinux/v2refpolicy/x86

  [11]  selinux/v2refpolicy/x86/desktop

  [12]  selinux/v2refpolicy/x86/developer

  [13]  selinux/v2refpolicy/x86/hardened

  [14]  selinux/v2refpolicy/x86/server

```

Берите любой из default/ который вам ближе.

 *Quote:*   

> Ещё в этой теме, насколько я понял описывается ускорение процесса компиляции?
> 
> https://forums.gentoo.org/viewtopic-t-529291.html

 

Весь тред не читал, но там похоже просто меряются у кого пипи^W быстрее опен-офис соберётся :)

Не бойтесь эксперементировать (конечно не с важными данными :) ), всегда можно будет поменять make.conf и пересобрать/дособрать нужное.

Держите /var/lib/portage/world файл в чистоте, и делайте влажную уборку системы (emerge --depclean) и всё у вас с зависимостями будет хорошо)

----------

## Optimus22Prime

Попробуйте ufed. Милый интерактивный организатор флагов, я использую уже несколько лет.

Есть одна тонкость. Флаги бывают глобальные и локальные. Глобальный флаг имеет смысл включать в make.conf если он нужен нескольким пакетам. Если же нужен только одному, а остальным не нужен (вреден), впишите его в package.use. Локальные флаги лучше всегда прописывать в package.use.

Используйте equery для изучения того, какой пакет куда что положил и что от чего зависит. Запуск equery без параметров выводит краткую справку.

----------

## unkulunkulu

Чтобы заранее не думать об установке всех флагов, я поступаю так: перед установкой пакета запускаю equery u имя_пакета.

Появляется список всех use-флагов, относящихся к нему с описанием. Дальше правлю /etc/make.conf или /etc/portage/package.use, по ситуации.

----------

## macumazan

А как equery u  применить к замаскированному пакету? Например, equery u =net-misc/asterisk-1.6.2.7  не срабатывает.

----------

## fank

```
emerge -pv
```

----------

