Gentoo Logo

[ << ] [ < ] [ В начало ] [ > ] [ >> ]


2. USE-флаги

Содержание:

2.a. Что такое USE-флаги?

Смысл USE-флагов

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

Это касается не только того, какие пакеты устанавливать, но и какие функции определенных пакетов должны поддерживаться. Если вам не нужен OpenGL, то зачем вам его ставить и встраивать поддержку OpenGL в большинство программ? Если вы не собираетесь использовать KDE, зачем собирать пакеты с его поддержкой, если они работают и без этого?

Чтобы помочь пользователям в выборе того, что устанавливать/активировать, а что — нет, мы захотели дать им простой способ описания рабочей среды. Это позволяет пользователю решить, что же ему на самом деле надо, и облегчить работу с Portage, нашей системой управления пакетами.

Определение USE-флагов

Рассмотрим USE-флаги. USE-флаг — это ключевое слово, включающее сведения о поддержке и зависимостях определенного понятия или функции. При определении какого-либо USE-флага, Portage узнает, что вам нужна поддержка соответствующей функции. Конечно, это также влияет на сведения о зависимостях пакета.

Давайте рассмотрим конкретный пример — ключевое слово kde. Если в вашей переменной USE нет этого слова, то все пакеты, где поддержка KDE является необязательной, собрираются без нее. Все пакеты, где зависимость от KDE является необязательной, устанавливаются без установки библиотек KDE (по зависимости). Если же вы определите ключевое слово kde, то эти пакеты будут собираться с поддержкой KDE, а KDE будет установлен в качестве необходимого.

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

Какие USE-флаги существуют?

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

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

Список доступных глобальных USE-флагов можно найти в сети или локально в /usr/portage/profiles/use.desc.

Список локальных USE-флагов находится в вашей системе в /usr/portage/profiles/use.local.desc.

2.b. Использование USE-флагов

Объявление постоянных USE-флагов

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

Как сказано ранее, все USE-флаги объявляются в переменной USE. Чтобы упростить пользователям поиск и выбор флагов, мы предлагаем значение USE по умолчанию, которое представляют собой список USE-флагов, как нам кажется, наиболее часто используемых пользователями Gentoo. Это значение приведено в файле make.defaults вашего профиля.

Профиль, на который ориентируется ваша система, указывается символьной ссылкой /etc/make.profile. Каждый профиль основывается на предыдущем, более крупном, а итоговый складывается из всех профилей. Верхним является базовый профиль (/usr/portage/profiles/base).

Давайте взглянем на значение по умолчанию для профиля 2004.3:

Листинг 2.1: Итоговая переменная USE make.defaults для профиля 2004.3

(в этом примере объединяются значения из base, default-linux,
default-linux/x86 и default-linux/x86/2004.3)
USE="x86 oss apm arts avi berkdb bitmap-fonts crypt cups encode fortran f77
     foomaticdb gdbm gif gpm gtk imlib jpeg kde gnome libg++ libwww mad
     mikmod motif mpeg ncurses nls oggvorbis opengl pam pdflib png python qt
     quicktime readline sdl spell ssl svga tcpd truetype X xml2 xmms xv zlib"

Как видите, эта переменная уже содержит достаточно много ключевых слов. Не меняйте файл make.defaults для настройки переменной USE под свои нужды: изменения в этом файле аннулируются при обновлении Portage!

Для изменения значения по умолчанию, нужно добавлять или удалять ключевые слова из переменной USE. Это делается глобально, определением переменной USE в /etc/make.conf. В эту переменную можно добавить нужные вам USE-флаги, или удалить ненужные. Для удаления флага, его надо указывать со знаком минус в виде приставки («-»).

Например, чтобы убрать поддержку KDE и QT, но добавить поддержку ldap, можно определить в /etc/make.conf переменную USE следующего вида:

Листинг 2.2: Пример значения USE в /etc/make.conf

USE="-kde -qt ldap"

Объявление USE-флагов для отдельных пакетов

Иногда нужно определить некоторые USE-флаги только для одного или нескольких пакетов, не трогая системных настроек. Для этого необходимо создать каталог /etc/portage (если его еще нет) и отредактировать файл /etc/portage/package.use.

Например, вам не нужна глобальная поддержка berkdb, но она необходима в mysql:

Листинг 2.3: Пример /etc/portage/package.use

dev-db/mysql berkdb

Естественно, можно в явном виде отключить USE-флаги для определенного пакета. Например, если вам не нужна поддержка java в PHP:

Листинг 2.4: Второй пример /etc/portage/package.use

dev-php/php -java

Объявление временных USE-флагов

Иногда необходимо установить какой-то USE-флаг только на один раз. Вместо того, чтобы дважды редактировать /etc/make.conf (сначала добавить изменения USE, а потом удалить), можно просто объявить USE как переменную среды. Помните, что при переустановке или обновлении приложения (явном или в составе обновления системы) ваши изменения будут утеряны!

Например, уберем java из значения USE на время установки mozilla.

Листинг 2.5: Использование USE в виде переменной среды

# USE="-java" emerge mozilla

Наследование

Конечно же, существует определенная последовательность формирования значения USE. Вы же не хотите объявить USE="-java" только для того, чтобы узнать, что java все еще включена из-за значения с более высоким приоритетом. Последовательность установки значения USE в порядке приоритета (от меньшего к большему) такова:

  1. значение USE по умолчанию, объявленное в файлах make.defaults в составе вашего профиля
  2. значение, определенное пользователем в /etc/make.conf
  3. значение, указанное пользователем в /etc/portage/package.use
  4. значение, определенное пользователям в переменной среды

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

Листинг 2.6: Запуск emerge --info

# emerge --info

Адаптация всей системы под новые USE-флаги

Если вы изменили свои USE-флаги и хотите обновить всю систему в соответствии с новым значением USE, запустите emerge с параметром --newuse:

Листинг 2.7: Пересборка всей системы

# emerge --update -deep --newuse world

Теперь запустите функцию Portage depclean, чтобы удалить условные зависимости, присутствующие в «старой» системе, но больше не нужные при новом составе USE-флагов.

Предупреждение: Запуск emerge --depclean является опасной операцией, которую следует использовать с осторожностью. Дважды проверьте список «ненужных» пакетов и убедитесь, что не удалятся нужные пакеты. В следующем примере мы добавляем ключ -p, чтобы depclean только перечислил пакеты, не удаляя их.

Листинг 2.8: Удаление ненужных пакетов

# emerge -p --depclean

Когда depclean закончит свою работу, запустите revdep-rebuild, чтобы пересобрать программы, динамически связанные с библиотеками, входящими в потенциально удаленные пакеты. revdep-rebuild входит в пакет gentoolkit, так что не забудьте сначала установить его.

Листинг 2.9: Запуск revdep-rebuild

# revdep-rebuild

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

2.c. USE-флаги отдельных пакетов

Просмотр доступных USE-флагов

Возьмем, к примеру, mozilla — какие USE-флаги она может использовать? Чтобы это выяснить, запустим emerge с параметрами --pretend и --verbose:

Листинг 3.1: Просмотр используемых USE флагов

# emerge --pretend --verbose mozilla
These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild   R   ] www-client/mozilla-1.7.12-r2  USE="crypt gnome java mozsvg ssl
truetype xprint -debug -ipv6 -ldap -mozcalendar -mozdevelop -moznocompose
-moznoirc -moznomail -moznoxft -postgres -xinerama" 0 kB

emerge — не единственное средство для решения этой задачи. Существует программа, специально предназначенная для вывода информация о пакетах. Она называется equery и находится в пакете gentoolkit. Для начала установим этот пакет:

Листинг 3.2: Установка gentoolkit

# emerge gentoolkit

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

Листинг 3.3: Запуск equery для просмотра доступных USE-флагов

# equery uses =gnumeric-1.6.3 -a
[ Searching for packages matching =gnumeric-1.6.3... ]
[ Colour Code : set unset ]
[ Legend        : Left column  (U) - USE flags from make.conf  ]
[               : Right column (I) - USE flags packages was installed with ]
[ Found these USE variables for app-office/gnumeric-1.6.3 ]
 U I
- - debug   : Tells configure and the makefiles to build for debugging.
                     Effects vary across packages, but generally it will at
                     least add -g to CFLAGS.  Remember to set FEATURES=nostrip too 
- - gnome   : Adds GNOME support
+ + python   : Adds support/bindings for the Python language
- - static   : !!do not set this during bootstrap!! Causes binaries to be
                     statically linked instead of dynamically

[ << ] [ < ] [ В начало ] [ > ] [ >> ]


Для печати

View all

Обновлено 3 сентября 2006

Исходный документ обновлен 4 октября 2009

Аннотация: USE-флаги (признаки использования) — очень важный аспект Gentoo. Прочитав эту главу, вы научитесь обращаться с ними и разберетесь, как USE-флаги влияют на систему.

Sven Vermeulen
автор

Roy Marples
автор

Daniel Robbins
автор

Chris Houser
автор

Jerry Alexandratos
автор

Seemant Kulleen
разработчик Gentoo x86

Tavis Ormandy
разработчик Gentoo Alpha

Jason Huebel
разработчик Gentoo AMD64

Guy Martin
разработчик Gentoo HPPA

Pieter Van den Abeele
разработчик Gentoo PPC

Joe Kallar
разработчик Gentoo SPARC

John P. Davis
редактор

Pierre-Henri Jondot
редактор

Eric Stockbridge
редактор

Rajiv Manglani
редактор

Jungmin Seo
редактор

Stoyan Zhekov
редактор

Jared Hudson
редактор

Colin Morey
редактор

Jorge Paulo
редактор

Carl Anderson
редактор

Jon Portnoy
редактор

Zack Gilburd
редактор

Jack Morgan
редактор

Benny Chuang
редактор

Erwin
редактор

Joshua Kinard
редактор

Tobias Scherbaum
редактор

Xavier Neys
редактор

Grant Goodyear
рецензент

Gerald J. Normandin Jr.
рецензент

Donnie Berkholz
рецензент

Ken Nowack
рецензент

Lars Weiler
участник

Антон Битков
переводчик

Андрей Бородай
переводчик

Василий Голубев
переводчик

Алексей Глазунов
переводчик

Игорь Короть
переводчик

Сергей Кулешов
переводчик, редактор перевода

Игорь Наум
переводчик

Антон Филимонов
переводчик

Азамат Хакимов
переводчик, редактор перевода

Эльдар Цраев
переводчик

Analyzer
переводчик

Алексей Чумаков
ведущий переводчик, редактор перевода

Donate to support our development efforts.

Support OSL
Gentoo Centric Hosting: vr.org
Tek Alchemy
SevenL.net
Global Netoptex Inc.
Bytemark
Online Kredit Index
Copyright 2001-2009 Gentoo Foundation, Inc. Questions, Comments? Contact us.