Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Gentoo_x86_Handbook.doc
Скачиваний:
25
Добавлен:
19.09.2019
Размер:
924.16 Кб
Скачать

2.A. Что такое use-флаги?

Идея, стоящая за USE-флагами

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

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

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

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

Вступайте в мир USE-флагов. Такой флаг это ключевое слово, которое включает в себя поддержку и инорфмацию о зависимостях для некоторой концепции. Если вы определите некоторый USE-флаг, Portage будет знать, что вы хотите поддержку выбранного ключевого слова. Конечно, это также изменит информацию о зависимостях пакета.

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

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

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

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

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

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

Список существующих глобальных USE-флагов можно найти онлайн (http://www.gentoo.org/dyn/use-index.xml?style=printable), или локально в /usr/portage/profiles/use.desc.

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

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

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

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

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

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

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

Код 2.1: Кумулятивное значение переменной USE для профиля 10.0 из файла make.deafults

(This example is the sum of the settings in base, default/linux,

default/linux/x86 and default/linux/x86/10.0/)

USE="a52 aac acpi alsa branding cairo cdr dbus dts dvd dvdr emboss encode exif

fam firefox flac gif gpm gtk hal jpeg lcms ldap libnotify mad mikmod mng mp3

mp4 mpeg ogg opengl pango pdf png ppds qt3support qt4 sdl spell

startup-notification svg tiff truetype vorbis unicode usb X xcb x264 xml

xulrunner xv xvid"

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

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

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

Код 2.2: Пример настройки USE в /etc/make.conf

USE="-kde -qt4 ldap"

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

Иногда вы хотите определить некоторый USE-флаг для одного (или нескольких) приложений, но не на общесистемном уровне. Чтобы сделать это, вам нужно создать каталог /etc/portage (если он еще не существует), и отредактировать /etc/portage/package.use. Это обычно один файл, но может быть и каталогом (смотри man 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 в течение установки seamonkey.

Код 2.5: Используем USE как переменную окружения

# USE="-java" emerge seamonkey

Последовательность

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

  1. USE значение по умолчанию, определенный в make.defaults-части вашего профиля

  2. Определенный пользователем USE в /etc/make.conf

  3. Определенный пользователем USE в /etc/portage/package.use

  4. Определенный пользователем USE как переменная окружения

Чтобы посмотреть конечную настройку 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, чтобы только посмотреть на список пакетов, но не удалить их.

Код 2.8: Удаляем устаревшие пакеты

# emerge -p --depclean

Когда depclean закончится, запустите revdep-rebuild, чтобы перекомпилировать приложения, которые динамически слинкованы с библиотеками, которые принадлежали (возможно) удаленным пакетам. revdep-rebuild это часть пакета gentoolkit, не забудьте сначала установить его.

Код 2.9: Запускаем revdep-rebuild

# revdep-rebuild

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

2.c. USE-флаги, специфичные для каждого пакета

Просмотр существующих USE-флагов

Давайте возьмем как пример seamonkey. Какие USE флаги на нео влияют? Чтобы это определить, мы будем использовать emerge с опциями --pretend и --verbose.

Код 3.1: Просматриваем используемые USE-флаги

# emerge --pretend --verbose seamonkey

These are the packages that I would merge, in order:

Calculating dependencies ...done!

[ebuild R ] www-client/seamonkey-1.0.7 USE="crypt gnome java -debug -ipv6

-ldap -mozcalendar -mozdevelop -moznocompose -moznoirc -moznomail -moznopango

-moznoroaming -postgres -xinerama -xprint" 0 kB

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

Код 3.2: Устанавливаем gentoolkit

# emerge gentoolkit

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

Код 3.3: Используем equery чтобы просмотреть используемые USE-флаги

# equery --nocolor 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 : Enable extra debug codepaths, like asserts and extra output.

If you want to get meaningful backtraces see

http://www.gentoo.org/proj/en/qa/backtraces.xml .

+ + 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]