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

Обновлено 8 сентября 2019

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

В Portage есть несколько дополнительных возможностей. Многие из них опираются на определенные программы, повышающие производительность, надежность, безопасность и т.п.

Для включения и выключения определенных возможностей Portage нужно редактировать в файле /etc/portage/make.conf/custom переменную FEATURES, в которой перечислены ключевые слова, разделенные пробелами, обозначающие различные возможности. Иногда для использования соответствующих возможностей требуется установка дополнительных утилит.

Здесь перечислены не все возможности, поддерживаемые Portage. Полный перечень вы найдёте на странице справки make.conf.

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

emerge --info | grep FEATURES

Распределенная компиляция

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

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

Установка distcc

Distcc поставляется с графическим монитором (средством контроля), позволяющим отслеживать задачи, которые ваш компьютер отсылает на компиляцию. Если вы используете Gnome, добавьте "gnome" к переменной USE, а если не пользуетесь Gnome, но при этом хотите пользоваться монитором, добавьте "gtk" к переменной USE.

Установка distcc:

emerge distcc

Подключение поддержки Portage

Добавьте distcc к переменной FEATURES в файле /etc/portage/make.conf/custom. Затем отредактируйте переменную MAKEOPTS по своему усмотрению. Известная рекомендация - указывать директиву "-jX", где X - число центральных процессоров, на которых работает distccd (включая текущий компьютер) плюс один. Однако вы можете добиться лучших результатов и с другими значениями.

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

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

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

rc-update add distccd default

/etc/init.d/distccd start

Кэширование компиляции

О средстве ccache

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

Более подробно про ccache можно узнать на сайте проекта.

Установка ccache

Для установки ccache выполните emerge ccache:

emerge ccache

Подключение поддержки Portage

Откройте /etc/portage/make.conf/custom и добавьте ccache к переменной FEATURES. Затем добавьте новую переменную по имени CCACHE_SIZE (размер кэша) и установите её равной "2G":

CCACHE_SIZE="2G"

Для проверки работоспособности ccache запросите статистику ccache.

ccache -s

Из-за того, что Portage использует другой домашний каталог ccache, вам также потребуется установить переменную CCACHE_DIR:

CCACHE_DIR="/var/tmp/ccache"

Домашний каталог ccache по умолчанию - /var/tmp/ccache. Изменить это назначение можно, определив переменную CCACHE_DIR в /etc/portage/make.conf/custom.

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

Использование ccache для компиляции Си не в Portage

Если вы хотите использовать ccache для компиляций не в Portage, добавьте /usr/lib/ccache/bin в начало вашей переменной PATH (перед /usr/bin). Это можно сделать, отредактировав /etc/env.d/00basic, который является первым файлом среды, где определяется переменная PATH:

PATH="/usr/lib/ccache/bin:/opt/bin"

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

Создание готовых (заранее собранных) пакетов

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

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

Если вы хотите, чтобы Portage создавал двоичные пакеты из каждого пакета, который вы будете устанавливать, в /etc/make.conf добавьте buildpkg к переменной FEATURES.

Установка двоичных пакетов

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

Обратите внимание, что перед установкой двоичного пакета из хранилища нужно выполнить обновление портежей cl-update.

Помимо маскировки профиль устанавливает переменной FEATURES значение getbinpkg, отдавая приоритет установке бинарных пакетов.

Путь к хранилищу указан в переменной PORTAGE_BINHOST в профиле дистрибутива. Для примера, в файле /etc/portage/make.conf/custom приведены пути к альтернативным хранилищам.

Вы можете устанавливать двоичные пакеты, используя и обычный профиль. Для этого указывайте в команде emerge параметр -g (или --getbinpkg) вместе с параметром -k (или --usepkg). Первый указывает emerge загрузить двоичный пакет c сервера, определенного раньше, а второй сообщает emerge, что до загрузки исходных кодов и их компиляции сначала нужно попытаться установить этот двоичный пакет.

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

emerge -kg gnumeric

Подробную информацию о параметрах установки двоичных пакетов можно найти на странице справки emerge.