Книга Gentoo Linux x86



Pdf просмотр
страница5/9
Дата16.11.2016
Размер0.93 Mb.
Просмотров1972
Скачиваний0
1   2   3   4   5   6   7   8   9
Блокировка пакетов
В файлах ebuild есть специальные поля, сообщающие Portage о зависимостях. Возможны два вида зависимости: зависимость сборки, объявленная в
DEPEND
, и зависимость выполнения, объявленная в
RDEPEND
. Когда одна из этих зависимостей явно указывает на несовместимость пакета или виртуального пакета, это вызывает блокировку.
Для разблокировки можно отказаться от установки пакета или предварительно удалить конфликтующего пакета. В данном примере можно отказаться от установки postfix или сначала удалить ssmtp
Также возможно, что два пакета, подлежащие установке, блокируют друг друга. В этом редчайшем случае следует определить, зачем вам устанавливать оба пакета. В большинстве случаев можно обойтись одним.
Если это окажется не так, то, пожалуйста, заведите отчет об ошибке в системе распределения запросов
Gentoo
Маскировка пакетов
Листинг 4.1: Предупреждение о заблокированных пакетах (с --pretend)
[blocks B ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1)
Листинг 4.2: Предупреждение о заблокированных пакетах (без --pretend)
!!! Error: the mail-mta/postfix package conflicts with another package.
!!! both can't be installed on the same system together.
!!! Please use 'emerge --pretend' to determine blockers.
( !!! Ошибка: пакет mail-mta/postfix конфликтует с другим пакетом.
!!! оба не могут находиться в системе одновременно. Пожалуйста,
!!! запустите 'emerge --pretend' для выявления блокирующих пакетов. )

Когда вы собираетесь установить пакет, не предназначенный для вашей системы, выдается ошибка маскировки. Нужно попытаться установить другую программу, существующую для вашей системы, или дождаться, пока пакет станет доступным. Всегда есть причина, по которой пакет замаскирован:
ключ arch: пакет недостаточно проверен для помещения в стабильную ветвь. Подождите несколько дней или недель и попробуйте установить его еще раз.
ключ -arch или ключ -*: пакет не работоспособен в вашей архитектуре. Если вы полагаете, что он работает, сообщите об этом в bugzilla
ключ отсутствует: пакет еще не тестировался в вашей архитектуре. Попросите группу портирования в архитектуру проверить пакет, или протестируйте его за них и сообщите о своих изысканиях в bugzilla
package.mask: обнаружено повреждение пакета, нестабильность или что-то худшее, и пакет заблокирован специально.
profile: пакет считается не предназначенным для вашего профиля. В случае установки приложение может вызвать сбой системы или просто несовместимо с используемым профилем.
Отсутствие нужных пакетов
Приложение, которое вы пытаетесь установить, зависит от другого пакета, недоступного вашей системе.
Пожалуйста, проверьте, есть ли такой запрос в bugzilla
, а если нет, сообщите об ошибке. Если вы не смешиваете ветви, такого не должно происходить, и это — явная ошибка.
Неоднозначность названия пакета
Листинг 4.3: Предупреждение о замаскированных пакетах
!!! all ebuilds that could satisfy "bootsplash" have been masked.
(!!! все сборки, удовлетворяющие "bootsplash", замаскированы.)
Листинг 4.4: Предупреждение о замаскированных пакетах с указанием причины
!!! possible candidates are:
- gnome-base/gnome-2.8.0_pre1 (masked by: x86 keyword
)
- lm-sensors/lm-sensors-2.8.7 (masked by:
-sparc keyword
)
- sys-libs/glibc-2.3.4.20040808 (masked by:
-* keyword
)
- dev-util/cvsd-1.0.2 (masked by: missing keyword
)
- media-video/ati-gatos-4.3.0 (masked by: package.mask
)
- sys-libs/glibc-2.3.2-r11 (masked by: profile
)
( !!! возможные кандидаты:
- gnome-base/gnome-2.8.0_pre1 (маскировка: ключ x86
)
- lm-sensors/lm-sensors-2.8.7 (маскировка: ключ -sparc
)
- sys-libs/glibc-2.3.4.20040808 (маскировка: ключ -*
)
- dev-util/cvsd-1.0.2 (маскировка: ключ отсутствует
)
- media-video/ati-gatos-4.3.0 (маскировка: package.mask
)
- sys-libs/glibc-2.3.2-r11 (маскировка: profile
) )
Листинг 4.5: Предупреждение об отсутствии пакета
emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4".
!!! Problem with ebuild sys-devel/gcc-3.4.2-r2
!!! Possibly a DEPEND/*DEPEND problem.
( emerge: нет сборок, удовлетворяющих ">=sys-devel/gcc-3.4.2-r4".
!!! Проблема с ebuild sys-devel/gcc-3.4.2-r2
!!! Возможно, ошибка в DEPEND/*DEPEND. )
Листинг 4.6: Предупреждение о повторяющихся именах ebuild
!!! The short ebuild name "aterm" is ambiguous. Please specify
!!! one of the following fully-qualified ebuild names instead:

Название приложения, которое вы собираетесь установить, соответствует более чем одному пакету.
Требуется также указать название категории. Portage предложит вам возможные варианты.
Циклические зависимости
Два или более пакета, которые вы хотите установить, взаимно зависимы, и в результате их установка невозможна. Скорее всего, это ошибка в дереве портежей. Пожалуйста, выждав время, обновите дерево портежей, и попытайтесь снова. Вы можете также проверить, есть ли эта ошибка в bugzilla
, и если нет, сообщить о ней.
Ошибка извлечения
Portage не смогла загрузить исходный код данного приложения и попытается продолжить установку других приложений (если запланирована). Эта ошибка может произойти из-за неправильно синхронизированного зеркала, или из-за того, что ebuild указывает на неверное место. Сервер, где находятся исходные коды, также может почему-либо не работать.
Повторите действие через час, чтобы посмотреть, повторится ли эта ошибка.
Защита системного профиля
Вы попросили удалить пакет, входящий в состав базовых пакетов вашей системы. Он отмечен в вашем профиле как обязательный, и его не следует удалять из системы. dev-libs/aterm x11-terms/aterm
( !!! Короткое название ebuild "aterm" неоднозначно. Пожалуйста,
!!! вместо него укажите одно из полных названий ebuild: dev-libs/aterm x11-terms/aterm )
Листинг 4.7: Предупреждение Portage о циклических зависимостях
!!! Error: circular dependencies: ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1 ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2
( !!! Ошибка: циклические зависимости: ebuild / net-print/cups-1.1.15-r2 зависит от ebuild / app-text/ghostscript-7.05.3-r1 ebuild / app-text/ghostscript-7.05.3-r1 зависит от ebuild / net-print/cups-1.1.15-r2 )
Листинг 4.8: Предупреждение Portage об ошибке извлечения
!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
(...)
!!! Some fetch errors were encountered. Please see above for details.
( !!! Ошибка при извлечении sys-libs/ncurses-5.4-r5, продолжение...
(...)
!!! При извлечении произошли ошибки. Подробности выше. )
Листинг 4.9: Предупреждение Portage о пакете, защищенном профилем
!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.
( !!! Попытка удаления пакетов из системного профиля. 'sys-apps/portage'
!!! Это может повредить вашей системе. )

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:
Как видите, эта переменная уже содержит достаточно много ключевых слов. Не меняйте файл make.defaults для настройки переменной
USE
под свои нужды: изменения в этом файле аннулируются при обновлении Portage!
Для изменения значения по умолчанию, нужно добавлять или удалять ключевые слова из переменной
USE
. Это делается глобально, определением переменной
USE
в /etc/make.conf. В эту переменную можно добавить нужные вам USE-флаги, или удалить ненужные. Для удаления флага, его надо указывать со знаком минус в виде приставки («-»).
Например, чтобы убрать поддержку KDE и QT, но добавить поддержку ldap, можно определить в
/etc/make.conf переменную
USE
следующего вида:
Объявление USE-флагов для отдельных пакетов
Иногда нужно определить некоторые USE-флаги только для одного или нескольких пакетов, не трогая системных настроек. Для этого необходимо создать каталог /etc/portage (если его еще нет) и отредактировать файл /etc/portage/package.use.
Например, вам не нужна глобальная поддержка berkdb
, но она необходима в mysql
:
Естественно, можно в явном виде отключить
USE-флаги для определенного пакета. Например, если вам не нужна поддержка java в PHP:
Объявление временных USE-флагов
Иногда необходимо установить какой-то USE-флаг только на один раз. Вместо того, чтобы дважды редактировать /etc/make.conf (сначала добавить изменения USE, а потом удалить), можно просто объявить USE как переменную среды. Помните, что при переустановке или обновлении приложения
(явном или в составе обновления системы) ваши изменения будут утеряны!
Например, уберем java из значения USE на время установки mozilla.
Листинг 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"
Листинг 2.2: Пример значения USE в /etc/make.conf
USE="-kde -qt ldap"
Листинг 2.3: Пример /etc/portage/package.use
dev-db/mysql berkdb
Листинг 2.4: Второй пример /etc/portage/package.use
dev-php/php -java
Листинг 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.
Адаптация всей системы под новые USE-флаги
Если вы изменили свои USE-флаги и хотите обновить всю систему в соответствии с новым значением
USE, запустите emerge с параметром
--newuse
:
Теперь запустите функцию Portage depclean, чтобы удалить условные зависимости, присутствующие в
«старой» системе, но больше не нужные при новом составе USE-флагов.
Когда depclean закончит свою работу, запустите revdep-rebuild
, чтобы пересобрать программы, динамически связанные с библиотеками, входящими в потенциально удаленные пакеты. revdep-rebuild входит в пакет gentoolkit
, так что не забудьте сначала установить его.
После выполнения всех этих действий, ваша система будет полностью использовать новые значения USE- флагов.
2.c.
USE-флаги отдельных пакетов
Просмотр доступных USE-флагов
Возьмем, к примеру, mozilla
— какие USE-флаги она может использовать? Чтобы это выяснить, запустим emerge с параметрами
--pretend и
--verbose
:
Листинг 2.6: Запуск emerge --info
# emerge --info
Листинг 2.7: Пересборка всей системы
# emerge --update -deep --newuse world
Предупреждение: Запуск emerge --depclean является опасной операцией, которую следует использовать с осторожностью. Дважды проверьте список «ненужных» пакетов и убедитесь, что не удалятся нужные пакеты. В следующем примере мы добавляем ключ
-p
, чтобы depclean только перечислил пакеты, не удаляя их.
Листинг 2.8: Удаление ненужных пакетов
# emerge -p --depclean
Листинг 2.9: Запуск revdep-rebuild
# revdep-rebuild
Листинг 3.1: Просмотр используемых USE флагов
# emerge --pretend --verbose mozilla
emerge
— не единственное средство для решения этой задачи. Существует программа, специально предназначенная для вывода информация о пакетах. Она называется equery и находится в пакете gentoolkit
. Для начала установим этот пакет:
Теперь для просмотра USE-флагов какого-нибудь пакета запустим equery с аргументом uses
. Пусть это будет пакет gnumeric
:
3. Возможности Portage
3.a.
Возможности Portage
В Portage есть несколько дополнительных возможностей (features), которые значительно улучшат ваше впечатление от Gentoo. Многие из этих возможностей полагаются на определенные программы, повышающие производительность, надежность, безопасность и т.п.
Для включения и выключения определенных возможностей Portage нужно редактировать в файле
/etc/make.conf переменную
FEATURES
, в которой перечислены ключевые слова, разделенные пробелами, обозначающие различные возможности. Иногда для использования соответствующих возможностей потребуется установка дополнительных утилит.
Здесь перечислены не все возможности, поддерживаемые Portage. Полный перечень представлен на странице справки make.conf:
Чтобы узнать, какие возможности включены по умолчанию, запустите emerge --info и найдите переменную FEATURES (или отфильтруйте ее с помощью grep):
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
Листинг 3.2: Установка gentoolkit
# emerge gentoolkit
Листинг 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
Листинг 1.1: Вызов страницы справки make.conf
$ man make.conf
Листинг 1.2: Выявление уже включенных возможностей
$ emerge --info | grep FEATURES

3.b.
Распределенная компиляция
Использование distcc
distcc
— программа, распределяющая компиляцию по нескольким, не обязательно одинаковым, машинам в сети. Клиент distcc посылает всю необходимую информацию на доступные серверы distcc (на которых выполняется distccd
), чтобы они могли компилировать для клиента части исходного кода.
Чистый выигрыш — более быстрая компиляция.
Подробная информация о distcc
(и как заставить его заработать в Gentoo) находится в нашем описании distcc в Gentoo
Установка distcc
Distcc поставляется с графическим монитором (средством контроля), позволяющим отслеживать задачи, которые ваш компьютер отсылает на компиляцию. Если вы используете Gnome, тогда добавьте «gnome» к переменной USE. А если вы не пользуетесь Gnome, но при этом хотите пользоваться монитором, добавьте
«gtk» к переменной USE.
Подключение поддержки Portage
Добавьте distcc к переменной FEATURES в файле /etc/make.conf. Затем отредактируйте переменную
MAKEOPTS, как вам нравится. Известная рекомендация — указывать директиву «-jX», где X — число центральных процессоров, на которых работает distccd
(включая текущий компьютер) плюс один; у вас могут получиться лучшие результаты и с другими значениями.
Теперь запустите distcc-config и введите список доступных серверов distcc. Для простоты примера, предположим, что доступные серверы DistCC — 192.168.1.102 (текущий компьютер), 192.168.1.103 и
192.168.1.104 (два «удаленных» компьютера):
Не забудьте также запустить демон distccd
:
3.c.
Кэширование компиляции
О средстве ccache
ccache
— это быстрый кэш компилятора. Когда вы компилируете программу, он кэширует промежуточные результаты так, что всякий раз, когда вы перекомпилируете ту же самую программу, время компиляции значительно сокращается. В типичных случаях общее время компиляции может сокращаться в 5—10 раз.
Если вы интересуетесь подробностями ccache, пожалуйста, посетите домашнюю страницу ccache
Установка ccache
Для установки ccache
, выполните emerge ccache
:
Листинг 2.1: Установка distcc
# emerge distcc
Листинг 2.2: Настройка distcc для использования трех доступных серверов distcc
# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"
Листинг 2.3: Запуск демонов distccd
# rc-update add distccd default
#
/etc/init.d/distccd start

Подключение поддержки Portage
Откройте /etc/make.conf и добавьте ccache к переменной FEATURES. Затем добавьте новую переменную по имени CCACHE_SIZE (размер кэша), и установите её равной «2G»:
Для проверки работоспособности ccache, запросите статистику ccache. Из-за того, что Portage использует другой домашний каталог ccache, вам также потребуется установить переменную
CCACHE_DIR
:
Домашний каталог ccache по умолчанию — /var/tmp/ccache; изменить это назначение можно, определив переменную
CCACHE_DIR
в /etc/make.conf.
Однако, при запуске ccache используется каталог по умолчанию, ${HOME}/.ccache, вот почему при запросе статистики (Portage) ccache требуется определять переменную
CCACHE_DIR
Использование ccache для компиляции Си не в Portage
Если вы хотите использовать ccache для компиляций не в Portage, добавьте /usr/lib/ccache/bin в начало вашей переменной PATH (перед /usr/bin). Это можно сделать, отредактировав /etc/env.d/00
basic, который является первым файлом среды, где определяется переменная
PATH
:
3.d.
Поддержка двоичных пакетов
Создание готовых (заранее собранных) пакетов
Portage поддерживает установку заранее собранных готовых пакетов. Несмотря на то, что в саму Gentoo не входят заранее собранные пакеты (за исключением снимков GRP), Portage можно настроить на полноценное управление готовыми пакетами.
Чтобы создать двоичный пакет, можно использовать quickpkg
, если пакет уже установлен в вашей системе, или emerge с параметрами
--buildpkg или
--buildpkgonly
Если вы хотите, чтобы Portage создавал двоичные пакеты из каждого пакета, который вы будете устанавливать, добавьте buildpkg к переменной FEATURES.
Расширенная поддержка создания наборов готовых пакетов имеются в catalyst
. Для получения подробной информации о catalyst, пожалуйста, прочитайте справочное руководство по catalyst (англ.)
и распространенные вопросы о catalyst (англ.)
Установка двоичных пакетов
Хотя в Gentoo такого хранилища нет, вы можете создать централизованное хранилище для заранее скомпилированных двоичных пакетов. Чтобы использовать такое хранилище, потребуется указать Portage путь к нему с помощью переменной PORTAGE_BINHOST. Например, если двоичные пакеты находятся на ftp://buildhost/gentoo:
Листинг 3.1: Установка ccache
# emerge ccache
Листинг 3.2: Редактирование CCACHE_SIZE в /etc/make.conf
CCACHE_SIZE="2G"
Листинг 3.3: Просмотр статистики ccache
#
CCACHE_DIR="/var/tmp/ccache" ccache -s
Листинг 3.4: Редактирование /etc/env.d/00basic
PATH="
/usr/lib/ccache/bin
:/opt/bin"

При установке двоичных пакетов, указывайте в команде emerge параметр
--getbinpkg вместе с параметром
--usepkg
. Первый указывает emerge загрузить двоичный пакет c сервера, определенного раньше, а второй сообщает emerge, что до загрузки исходных кодов и их компиляции сначала нужно попытаться установить этот двоичный пакет.
Например, чтобы установить gnumeric из двоичных пакетов:
Подробную информацию о параметрах установки двоичных пакетов можно найти на странице справки emerge:



Поделитесь с Вашими друзьями:
1   2   3   4   5   6   7   8   9


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал