Файлы и каталоги

Обновлено 7 ноября 2026

Страница актуальна для Portage 3.0.82 и Calculate Utilities 3.8.

Файлы Portage

Директивы настройки

Portage поставляется с настройками по умолчанию, которые хранятся в файле /usr/share/portage/config/make.globals. Вся настройка Portage выполняется с помощью переменных; назначение каждой переменной описано на странице Настройка с помощью переменных.

Так как многие директивы различаются в зависимости от архитектуры, часть настроек по умолчанию входит в профиль системы. На профиль указывает символическая ссылка /etc/portage/make.profile, а сами значения задаются в файлах make.defaults профиля и всех его родительских профилей.

При изменении конфигурационных переменных не правьте make.globals и make.defaults — для этого служит /etc/portage/make.conf, который имеет приоритет над ними. В Calculate Linux это не файл, а каталог: файл binhost в нём создаёт шаблон дистрибутива (вручную его не редактируют — для своего значения нужен .clt-шаблон, см. Шаблоны), а пользовательские настройки пишут в файл custom с закомментированными «ручками» для сборки и компилятора. Подробно каталог make.conf разобран на странице Настройка с помощью переменных.

Ориентироваться в назначении переменных поможет файл-пример /usr/share/portage/config/make.conf.example: Portage его не читает, это только образец.

Переменные Portage можно задавать и через переменные среды, но так делать не следует.

Конфигурация, определяемая профилем

Ссылка /etc/portage/make.profile указывает на профиль, которому следует система: Portage находит профиль именно по этой ссылке, а свои профили можно располагать где угодно. В Calculate Linux такая ссылка принадлежит дистрибутиву и ведёт в репозиторий distros — на профиль /var/db/repos/distros/profiles/CLD/amd64/20, стоящий над профилем Gentoo: в его родителях — профиль Calculate и базовый профиль Gentoo для amd64. Менять эту ссылку не следует (в том числе средствами eselect): на профиле дистрибутива держатся бинарные пакеты зеркала и шаблоны world; подробности — на странице Смешение ветвей программного обеспечения.

Профиль содержит сведения, специфичные для архитектуры: список пакетов, принадлежащих системе этого профиля, перечень пакетов, которые для профиля не работают или замаскированы, и тому подобные данные.

Конфигурация, задаваемая пользователем

Когда нужно изменить поведение Portage, правят файлы внутри /etc/portage. Пользоваться именно файлами из /etc/portage настоятельно рекомендуется; переопределять поведение Portage переменными среды не рекомендуется.

Внутри /etc/portage можно создавать:

  • package.mask — перечень пакетов, которые Portage не должен устанавливать никогда;
  • package.unmask — пакеты, которые разрешено устанавливать, даже если пакет помечен как нестабильный;
  • package.accept_keywords — пакеты, которые разрешено устанавливать, хотя они пока не признаны подходящими для вашей системы или архитектуры;
  • package.use — значения USE-флагов для отдельных пакетов, а не для всей системы.

Это не обязательно должны быть файлы — каждый путь может быть каталогом, и тогда Portage объединяет настройки из всех его файлов. В Calculate Linux все четыре позиции уже созданы как каталоги; например, в /etc/portage/package.use/custom лежит файл-заготовка, переносимый при установке системы.

Кроме того, в составе дистрибутива в /etc/portage есть каталоги savedconfig/, sets/ и profile/ (с заготовкой package.provided от дистрибутива), а также каталог postsync.d/ с хуком 50-eix-postsync, который обновляет базу eix после синхронизации.

Файл (или каталог) package.env дистрибутив не создаёт — его заводите вы сами, если понадобится задавать переменные среды для отдельных пакетов; об этом страница Переменные среды.

Полный список файлов и каталогов, которые понимает Portage, приведён на его справочной странице:

man portage

Изменение расположения файлов и каталогов

Перечисленные выше конфигурационные файлы нельзя хранить в другом месте: Portage всегда ищет их по строго определённым путям. Однако для остальных задач — сборки пакетов, хранения исходников, репозиториев — у Portage есть свои каталоги по умолчанию, и их положение можно изменить, задав соответствующие переменные в /etc/portage/make.conf.

Страница не заменяет справочник: полные сведения о переменных и путях содержатся на справочных страницах portage и make.conf.

man make.conf

Карта путей в Calculate Linux

Основные каталоги Portage в установленной Calculate Linux:

Путь Назначение
/etc/portage/make.conf каталог пользовательских переменных настройки (не файл)
/etc/portage/make.profile символическая ссылка на действующий профиль
/usr/share/portage/config/ встроенные настройки по умолчанию: make.globals, make.conf.example, binrepos.conf
/var/db/repos/gentoo зеркало дерева ebuild-файлов Gentoo
/var/db/repos/calculate пакеты, эклассы и шаблоны Calculate
/var/db/repos/distros профили дистрибутивов (CLD, CLDX, CDS и т.д.)
/var/calculate/repos/container репозиторий контейнерных сборок
/var/calculate/repos/custom пользовательский репозиторий
/var/calculate/distfiles загруженные исходники (переменная DISTDIR)
/var/calculate/packages/x86_64 бинарные пакеты (переменная PKGDIR)
/var/calculate/tmp каталог сборки (переменная PORTAGE_TMPDIR)
/var/db/pkg база данных установленных пакетов
/var/cache/edb кэш метаданных Portage
/var/lib/portage/world список явно установленных пакетов

Хранение файлов

Репозитории ebuild-файлов

Расположение главного репозитория gentoo по умолчанию — /var/db/repos/gentoo (в выводе emerge --info он помечен как main-repo). Расположение каждого репозитория задаёт параметр location в файлах каталога /etc/portage/repos.conf.

В Calculate Linux репозиториев пять; их расположение видно в блоке Repositories вывода emerge --info:

emerge --info
Repositories:

custom
    location: /var/calculate/repos/custom
    masters: calculate gentoo
    volatile: True

calculate
    location: /var/db/repos/calculate
    sync-type: calculate
    sync-uri: https://github.com/calculatelinux/calculate
    masters: gentoo
    priority: 50
    volatile: False

container
    location: /var/calculate/repos/container
    sync-type: git
    sync-uri: https://github.com/calculatelinux/container
    masters: calculate gentoo
    priority: 50
    volatile: True

distros
    location: /var/db/repos/distros
    sync-type: calculate
    sync-uri: https://github.com/calculatelinux/distros
    masters: calculate gentoo
    priority: 50
    volatile: False

gentoo
    location: /var/db/repos/gentoo
    sync-type: calculate
    sync-uri: https://github.com/calculatelinux/gentoo
    priority: 50
    volatile: False

Назначение репозиториев: gentoo — зеркало дерева Gentoo (синхронизируется с репозитория проекта Calculate), calculate — пакеты, эклассы и шаблоны Calculate, distros — профили дистрибутивов, container — репозиторий для контейнерных сборок, custom — пользовательский репозиторий с мастерами calculate и gentoo.

Не правьте файлы репозиториев дистрибутива

Конфигурацию репозиториев дистрибутива несут файлы /etc/portage/repos.conf/zz-calculate.conf (репозитории distros, calculate, gentoo, custom) и /etc/portage/repos.conf/custom.conf (репозиторий container). Их создаёт дистрибутив, они не принадлежат ни одному пакету, и править их руками не следует. Свой репозиторий добавляют новым файлом в /etc/portage/repos.conf — подробнее на странице Отступление от официального дерева.

Утилита layman в системе отсутствует: вместо её установки в Calculate уже настроен готовый пользовательский репозиторий custom.

При переносе репозитория в другое место дополнительно задайте в /etc/portage/make.conf переменные PKGDIR и DISTDIR: из-за особенностей обработки переменных они не заметят переноса сами.

Бинарные пакеты

Portage умеет работать с готовыми бинарными пакетами. В vanilla-Portage по умолчанию они не используются и искаться должны в /var/cache/binpkgs; в Calculate Linux по умолчанию выполняется установка из бинарных пакетов, а локальные и загруженные сборки хранятся в /var/calculate/packages/x86_64 (переменная PKGDIR). Адрес сервера бинарных пакетов задаёт дистрибутив; механизм описан на странице Возможности Portage.

Исходные коды

Загруженные архивы с исходниками Portage хранит в каталоге, который задаёт переменная DISTDIR; в Calculate Linux это /var/calculate/distfiles. Скачивание идёт с зеркал, перечисленных в переменной GENTOO_MIRRORS.

База данных Portage

Состояние системы — какие пакеты установлены и какие файлы к ним относятся — Portage хранит в /var/db/pkg.

Не изменяйте файлы состояния вручную

Ручная правка записей базы может разрушить представление Portage о системе.

Кэш Portage

Кэш (данные о времени изменения, виртуальные пакеты, сведения о дереве зависимостей) лежит в /var/cache/edb. Это именно кэш: его можно очистить, если в этот момент не запущено ни одно связанное с Portage приложение.

Файл world

Список явно установленных пакетов Portage хранит в файле /var/lib/portage/world. В Calculate его содержимое формируют не только пользовательские установки: список собирают дистрибутивные шаблоны 6_ac_update_sync/world/create/*, поэтому в начале файла стоит служебная шапка с перечнем обработанных шаблонов. Выглядит такой create-шаблон так:

Create-шаблон world

# Calculate name=world format=world

#?in(os_linux_pkglist, calculate)!=#
media-fonts/terminus-font
sys-apps/busybox
sys-apps/calculate-toolkit
#sys-apps/ifplugd
sys-apps/less

Как шаблоны собирают файлы системы — на странице Шаблоны.

Сборка программного обеспечения

Для каждого устанавливаемого пакета Portage создаёт отдельный каталог сборки внутри временного каталога, который задаёт переменная PORTAGE_TMPDIR; в Calculate Linux это /var/calculate/tmp. Фактические значения временных путей на вашей системе покажет вывод команды:

emerge --info

По умолчанию Portage устанавливает все файлы в текущую файловую систему, но корень установки можно изменить переменной ROOT — это полезно при построении новых образов системы.

Ведение журналов

Portage пишет журналы работы в каталог /var/log/portage: в нём расположены файл summary.log и подкаталог elog/; переменная PORT_LOGDIR по умолчанию не установлена.

Ведение журналов настраивают переменные, описание которых приведено в справочной странице make.conf:

  • PORTAGE_ELOG_CLASSES
  • PORTAGE_ELOG_COMMAND
  • PORTAGE_ELOG_MAILFROM
  • PORTAGE_ELOG_MAILSUBJECT
  • PORTAGE_ELOG_MAILURI

См. также