Functionality of Portage

Updated 4 June 2019

Portage features

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

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

Здесь перечислены не все возможности, поддерживаемые Portage. You will find the full list of Portage features on the make.conf man page.

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

emerge --info | grep FEATURES

Distributed compilation

Using distcc

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

Installing distcc

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

Install distcc:

emerge distcc

Enabling support for Portage

Add distcc to the FEATURES variablе in /etc/portage/make.conf/custom. Then edit the MAKEOPTS value at your convenience. Известная рекомендация - указывать директиву "-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

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

About the ccache tool

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

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

Installing ccache

To install ccache, run emerge ccache:

emerge ccache

Enabling support for 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"

Binary support

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

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

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

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

Installing binary packages

Дистрибутивы 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.