Functionality of Portage

Updated 4 July 2019

Portage features

Portage provides some additional features. Many of them are backed up by specific applications that increase productivity, reliability, safety, etc.

Для включения и выключения определенных возможностей Portage нужно редактировать в файле /etc/portage/make.conf/custom переменную FEATURES, в которой перечислены ключевые слова, разделенные пробелами, обозначающие различные возможности. Sometimes it is necessary to install additional utilities to be able to use the features you need.

This is only a brief overview of Portage features. To read the full list, refer to the make.conf man page.

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

emerge --info | grep FEATURES

Distributed compilation

Using distcc

distcc is a tool that distributes the compilation process to several, not necessarily identical, network computers. The distcc client sends all relevant data to the available distcc servers (which, in their turn, call distccd) so that they can compile some parts of the source code for the client. What you gain is a faster compilation time.

Installing distcc

Distcc comes with a graphical monitor, which is a control tool that allows you to track the compilation tasks performed by your computer. If you are a Gnome user, add "gnome" to the USE values. If you are not a Gnome user but still want to use its graphical environment, add "gtk" to 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 (включая текущий компьютер) плюс один. However, you can also achieve improved experience with other values.

Теперь запустите 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"

Launch the distccd daemon:

rc-update add distccd default

/etc/init.d/distccd start

Cached compilation

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.