Handbook:Parts/Working/Features/ru

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:Parts/Working/Features and the translation is 100% complete.
Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎português do Brasil • ‎čeština • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어
Parts Handbook
Установка
Об установке
Выбор подходящего источника для установки
Настройка сети
Подготовка дисков
Установка stage3
Установка базовой системы
Настройка ядра
Настройка системы
Установка системных утилит
Настройка загрузчика
Завершение
Работа с Gentoo
Введение в Portage
USE-флаги
Возможности Portage
Система сценариев инициализации
Переменные окружения
Работа с Portage
Файлы и каталоги
Переменные
Смешение ветвей программного обеспечения
Дополнительные утилиты
Дополнительные репозитории пакетов
Расширенные возможности
Настройка сети
Начальная настройка
Расширенная настройка
Модульное построение сети
Беспроводная сеть
Добавляем функциональность
Динамическое управление


Возможности Portage

В Portage есть несколько дополнительных возможностей (features), которые улучшат опыт работы с Gentoo. Многие из этих возможностей полагаются на определённые программы, которые улучшают производительность, надёжность, безопасность и так далее.

Чтобы включить или отключить определённые возможности Portage, отредактируйте /etc/portage/make.conf и измените или установите переменную FEATURES, которая содержит ключевые слова возможностей, разделённые пробелом. В некоторых случаях необходимо установить дополнительные утилиты, на которые опирается эта возможность.

Не все возможности, которые поддерживает Portage, перечислены здесь. Для полного обзора, пожалуйста, обратитесь к man-странице make.conf:

user $man make.conf

Чтобы найти, что на данный момент установлено в FEATURES, запустите emerge --info и поищите переменную FEATURES или отфильтруйте её с помощью grep:

user $emerge --info | grep ^FEATURES=

Распределённая сборка

Использование distcc

distcc — это программа для распределённой сборки по нескольким, не обязательно идентичным, машинам в сети. Клиент distcc посылает всю необходимую информацию на доступные сервера distcc (на которых работает distccd), чтобы те скомпилировали части исходного кода для клиента. В результате получается более быстрая сборка.

Больше информации о distcc (и как он работает с Gentoo) можно найти в статье Distcc.

Установка distcc

Distcc поставляется с графическим монитором для отслеживания заданий, отправляемых компьютером на компиляцию. Данный монитор устанавливается при включённом флаге USE=gnome или USE=gtk.

root #emerge --ask sys-devel/distcc

Включение поддержки distcc в Portage

Добавьте distcc в переменную FEATURES в файле /etc/portage/make.conf. Далее, отредактируйте переменную MAKEOPTS и увеличьте число параллельных задач компиляции настолько, насколько это позволяет система. Рекомендуется использовать -jN, где N это число CPU, на которых будет запускаться distccd (включая локальный компьютер), плюс один. Не забывайте, что это просто рекомендация.

Теперь запустите distcc-config и введите список доступных серверов distcc. В качестве простого примера предположим, что среди доступных серверов distcc 192.168.102 (локальный компьютер), а 192.168.1.103 и 192.168.1.104 (два «удалённых» узла):

root #distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"

Не забудьте также запустить демон distccd:

root #rc-update add distccd default
root #/etc/init.d/distccd start

Кэширование собранных объектов

О ccache

ccache — это быстрый кэш компилятора. Когда программа компилируется, он будет кэшировать промежуточные результаты так, что в случае компиляции той же программы, время компиляции значительно уменьшится. В случае компиляции с ccache в первый раз, компиляция может продолжаться значительно больше по сравнению с обычной компиляцией. Однако, последующие пересборки должны быть значительно быстрее. ccache полезен только в тех случаях, когда одна и та же программа будет пересобираться много раз (или обновление одной и той же программы, что бывает чаще); поэтому она полезна, в основном, только для разработчиков программного обеспечения.

Для более подробной информации о ccache, пожалуйста, посетите их домашнюю страницу.

Предупреждение
Известно, что ccache порой вызывает ошибки компиляции. Иногда ccache сохраняет устаревшие объекты кода или поврежденные файлы, что приводит к тому, что некоторые пакеты невозможно установить после этого. Если такое происходит (ошибки вроде «File not recognized: File truncated» появляются в журнале сборки), попробуйте пересобрать приложение с отключённым ccache (FEATURES="-ccache" в /etc/portage/make.conf) перед тем, как сообщить об ошибке.

Установка ccache

Для установки ccache запустите следующую команду:

root #emerge --ask dev-util/ccache

Включение поддержки ccache в Portage

Откройте /etc/portage/make.conf и добавьте ccache к значению, которое определено в переменной FEATURES. Создайте переменную FEATURES, если она не существует. Далее добавьте новую переменную, которая называется CCACHE_SIZE, и установите ее в 2G:

Файл /etc/portage/make.confВключение поддержки ccache в Portage
FEATURES="ccache"
CCACHE_SIZE="2G"

Чтобы проверить функциональность ccache, запросите его статистику. Поскольку Portage использует другой домашний каталог для ccache, необходимо временно установить переменную CCACHE_DIR:

root #CCACHE_DIR="/var/tmp/ccache" ccache -s

В Portage домашний каталог по умолчанию для ccache — /var/tmp/ccache/; но это можно изменить, настроив переменную CCACHE_DIR в файле /etc/portage/make.conf.

Если ccache запущен автономно (без Portage), он будет использовать каталог по умолчанию ${HOME}/.ccache/, именно поэтому необходимо указать переменную CCACHE_DIR при запросе (Portage) статистики ccache.

Использование ccache отдельно от Portage

Чтобы использовать ccache для компиляции без Portage, добавьте /usr/lib/ccache/bin/ в начало переменной PATH (до /usr/bin). Это можно сделать, отредактировав ~/.bash_profile в домашнем каталоге пользователя. Использование ~/.bash_profile — это только один из способов определения переменных PATH.

Файл ~/.bash_profileНастройка месторасположения ccache перед другими PATH
PATH="/usr/lib/ccache/bin:${PATH}"

Поддержка двоичных пакетов

Создание прекомпилированных пакетов

Portage поддерживает установку двоичных пакетов. Несмотря на то, что Gentoo не предоставляет двоичных пакеты, Portage сам может сделать такие пакеты.

Чтобы создать бинарный пакет, воспользуйтесь командой quickpkg, если пакет уже установлен в системе, или скомпилируйте его с параметром --buildpkg или --buildpkgonly.

Чтобы Portage создавал двоичные пакеты для каждого устанавливаемого пакета, добавьте buildpkg в переменную FEATURES.

Более расширенные возможности при создании набора двоичных пакетов можно получить, используя catalyst. Более подробную информацию о catalyst можно прочитать в Catalyst FAQ.

Установка прекомпилированных пакетов

Хотя Gentoo не предоставляет таковые, можно создать централизованный репозиторий двоичных пакетов. Для того, чтобы использовать такой репозиторий, нужно сообщить Portage об этом с помощью переменной PORTAGE_BINHOST, которая указывает на такое хранилище. Например, если бинарные пакеты находятся по адресу ftp://buildhost/gentoo:

Файл /etc/portage/make.confДобавление расположения PORTAGE_BINHOST
PORTAGE_BINHOST="ftp://buildhost/gentoo"

Чтобы установить двоичный пакет, добавьте параметры --getbinpkg и --usepkg в команду emerge. Первая сообщает emerge, что нужно загрузить двоичный пакет из уже определённого ранее сервера, а вторая просит emerge попытаться установить двоичный пакет до загрузки исходного кода и его компиляции.

Например, чтобы установить gnumeric из прекомпилированного пакета:

root #emerge --usepkg --getbinpkg gnumeric

Больше информации о двоичных пакетах в emerge можно найти в man-странице emerge:

user $man emerge

Распространение двоичных пакетов для других

Если планируется предоставлять прекомпилированные пакеты для других, убедитесь, что это разрешено. Для этого проверьте условия распространения у разработчиков. Например, если пакет выпущен под лицензией GNU GPL, то исходный код должен быть доступен наряду с двоичными файлами.

В ebuild может быть определено ограничение bindist в переменной RESTRICT, если собранные двоичные файлы не подлежат распространению. Иногда такое ограничение обусловлено одним или несколькими USE-флагами.

По умолчанию Portage не маскирует пакеты из-за таких ограничений. Это можно изменить, глобально настроив переменную ACCEPT_RESTRICT в файле /etc/portage/make.conf. Например, чтобы замаскировать пакеты, у которых есть ограничение bindist, добавьте следующую строку в файл make.conf:

Файл /etc/portage/make.confРазрешить только пакеты, доступные для распространения в виде двоичных файлов
ACCEPT_RESTRICT="* -bindist"

Также можно переопределить переменную ACCEPT_RESTRICT, добавив параметр --accept-restrict в команду emerge. Например, --accept-restrict=-bindist временно замаскирует пакеты с ограничением bindist.

Также, в случае распространения пакетов, рекомендуется настроить переменную ACCEPT_LICENSE. Смотрите раздел Лицензии.

Важно
Ответственность за соответствие условиям лицензии и соответствие законодательству страны, где предполагается распространять пакет, полностью лежит на пользователе. Переменные метаданных, определённые в ebuild (RESTRICT или LICENSE), сообщат о том, что распространение двоичных пакетов не разрешено, однако, вывод команд Portage или вопросы, на которые отвечали разработчики Gentoo не являются юридическими заявлениями; не стоит полагаться на них. Будьте внимательны при соблюдении законов своей страны.

Загрузка файлов

Userfetch

Portage обычно запускается от пользователя root. Настройка FEATURES="userfetch" позволит Portage сбросить привилегии root при загрузке исходного кода и выполнит эту операцию с правами пользователя/группы portage:portage. Это небольшое усиление безопасности.

Если userfetch установлена в FEATURES, убедитесь, что изменили владельца у всех файлов в /var/db/repos/gentoo с помощью команды chown, запущенной с правами root:

root #chown --recursive --verbose portage:portage /var/db/repos/gentoo

Проверенные снимки репозитория Gentoo

Администраторы могут выбрать обновление локального репозитория ebuild-файлов с криптографически проверенного снимка, который выпускаются инфраструктурой Gentoo. Это гарантирует, что ни одно недобросовестное зеркало rsync не добавит нежелательный код или пакет в репозитории.

Заметка
Ниже приводится обновленный метод для создания и использования метода синхронизации emerge-webrsync используя repos.conf.

Ключи OpenPGP для выпускаемых образов Gentoo (Gentoo release media) теперь доступны в виде двоичной связки ключей. Он может быть установлен пакетом app-crypt/gentoo-keys:

root #emerge --ask app-crypt/gentoo-keys

Эта команда установит связку ключей в каталог /var/lib/gentoo/gkeys/keyrings/gentoo/release.

Файл /etc/portage/make.confВключение поддержки GPG в Portage
FEATURES="webrsync-gpg"
PORTAGE_GPG_DIR="/var/lib/gentoo/gkeys/keyrings/gentoo/release"
Файл /etc/portage/repos.conf/gentoo.confОчистка переменной sync-uri
[DEFAULT]
main-repo = gentoo
 
[gentoo]
# Отключите синхронизацию, удалив или указав auto-sync = no
# В этом конфигурационном файле не устанавливайте значения для переменных с использованием кавычек ('' или "")!
# Для portage-2.2.18 используйте 'websync'
# Для portage-2.2.19 и выше используйте 'webrsync' (websync был переименован в webrsync)
sync-type = webrsync
sync-uri = 
auto-sync = yes

Убедитесь, что пакет app-crypt/gnupg установлен:

root #emerge --ask app-crypt/gnupg

Используйте gpg, чтобы проверить ключи в связке на корректность:

root #gpg --homedir /var/lib/gentoo/gkeys/keyrings/gentoo/release --with-fingerprint --list-keys --keyid-format 0xlong

Сверьте отпечатки ключей с теми, которые перечислены на официальной странице проекта Gentoo release engineering.

Важно
Если один из ключей, установленных пакетом app-crypt/gentoo-keys скоро истечёт, запустите gkeys из пакета app-crypt/gkeys для обновления ключа с сервера ключей:
root #emerge --ask app-crypt/gkeys
root #gkeys refresh-key -C gentoo

Повторите следующую команду для каждого ключа, которому вы хотите доверять (подставьте идентификатор ключа «0x ...» для ключа, которому вы хотите доверять).

root #gpg --homedir /var/lib/gentoo/gkeys/keyrings/gentoo/release --edit-key 0xDB6B8C1F96D8BF6D trust

Должно появится меню GPG; чтобы полностью доверять ключу и выйти из программы, введите следующее:

gpg>4
gpg>quit

Теперь система настроена для синхронизации через проверенные OpenPGP/gpg снимки.
Для синхронизации можно воспользоваться одной из следующих команд.

Заметка
Одной из следующих команд достаточно для синхронизации. Для более подробной информации смотрите статью Portage sync.
root #emerge --sync
root #emaint sync -a
root #emaint sync --repo gentoo
root #emerge-webrsync

Проверка архивов исходных файлов

Чтобы перепроверить целостность и (возможно) повторно скачать ранее удаленные/поврежденные архивы исходных файлов (distfiles) для всех установленных пакетов, выполните:

root #emerge --ask --fetchonly --emptytree @world