Handbook:AMD64/Portage/Files
Файлы Portage
Конфигурационные директивы
Portage поставляется с настройками по умолчанию, которые хранятся в /usr/share/portage/config/make.globals. Все настройки Portage обрабатываются с помощью переменных. Какие переменные использует Portage и для чего они нужны, будет описано позже.
Так как многие конфигурационные директивы отличаются в разных архитектурах, у Portage есть конфигурационные файлы по умолчанию, которые является частью системного профиля. Этот профиль указывается с помощью символьной ссылки /etc/portage/make.profile; конфигурации Portage находится в файлах make.defaults системного профиля и всех вышестоящих профилей. Мы более детально расскажем о профилях и каталоге /etc/portage/make.profile позднее.
Если требуется изменить конфигурационные переменные, не меняйте /usr/share/portage/config/make.globals или make.defaults. Вместо этого используйте файл /etc/portage/make.conf, у которого больший приоритет над предыдущими файлами. Для получения дополнительной информации прочитайте /usr/share/portage/config/make.conf.example. Как следует из названия, это просто пример — Portage не использует этот файл.
Также можно определить конфигурационные переменные Portage в переменном окружении, но мы не рекомендуем этого делать.
Информация из определенного профиля
Мы уже ознакомились с каталогом /etc/portage/make.profile. На самом деле это не каталог, а символьная ссылка на один из профилей, по умолчанию это /var/db/repos/gentoo/profiles/, однако можно создать свои собственные профили где угодно и ссылаться на них. Профиль, на который указывает символьная ссылка, и есть системный профиль.
Профиль содержит информацию о конкретной архитектуре для Portage, например, список пакетов, которые принадлежат этому системному профилю, список пакетов, которые не работают (или замаскированы) в этом системном профиле, и так далее.
Пользовательская конфигурация
Если нужно изменить поведение Portage относительно того, как устанавливается программное обеспечение, то будет правильно настроить файлы в /etc/portage/. Настоятельно рекомендуется использовать файлы в /etc/portage/ и очень не рекомендуется переопределять поведение Portage в переменном окружении!
Пользователи могут создать в /etc/portage/ следующие файлы:
- package.mask список пакетов, которые Portage никогда не будет устанавливать
- package.unmask список пакетов, которые Portage будет устанавливать, даже если разработчик Gentoo отговаривает пользователей от их установки
- package.accept_keywords список пакетов, которые Portage будет устанавливать, даже если они не подходят для используемой системы или архитектуры (пока)
- package.use список пакетов, для которых необходимо использовать специфичные USE-флаги, а не брать системные USE-флаги
Не обязательно они должны быть файлами; это могут быть каталоги, содержащие по одному файлу для пакета. Больше информации о каталоге /etc/portage/ и весь список возможных файлов, которые можно создать там, можно найти в man-странице Portage:
user $
man portage
Изменение файлов Portage и расположение каталогов
Ранее упомянутые конфигурационные файлы нельзя хранить в любом месте; Portage всегда будет искать эти файлы в строго определенных местах. Однако Portage использует много других каталогов для различных целей: каталог для сборки, хранения исходного кода, расположение Gentoo репозитория, ...
Для этих целей по умолчанию есть хорошо известные каталоги, которые могут быть переопределены в /etc/portage/make.conf. Остальная часть этого раздела объяснить какие специальные каталоги использует Portage и как изменить их расположение в файловой системе.
Данная статья не предназначена для использования в качестве полноценного справочника. С полной информацией можно ознакомиться в man-страницах portage и make.conf:
user $
man portage
user $
man make.conf
Хранение файлов
Gentoo репозиторий ebuild-файлов
Gentoo репозиторий ebuild-файлов по умолчанию находится в /var/db/repos/gentoo. Месторасположение определяется файлом repos.conf, пример которого можно найти в /usr/share/portage/config/repos.conf. Чтобы изменить значения по умолчанию, скопируйте этот файл в /etc/portage/repos.conf/gentoo.conf и измените location. Не забудьте сменить символьную ссылку на /etc/portage/make.profile, если хотите хранить (меняя переменную) Gentoo репозиторий ebuild-файлов в другом месте.
После изменения настройки location в /etc/portage/repos.conf/gentoo.conf рекомендуется изменить следующие переменные /etc/portage/make.conf, так как они не заметят изменений в location. Portage так работает с переменными: PKGDIR, DISTDIR, RPMDIR.
Двоичные пакеты
Хотя по умолчанию Portage не использует двоичные пакеты, в нем есть широкая поддержка их. Когда Portage просят установить бинарный пакет, он будет искать их в каталоге /var/cache/binpkgs. Этот каталог определяется переменной PKGDIR.
Исходный код
По умолчанию исходный код для приложений хранится в каталоге /var/cache/distfiles. Этот каталог определяется переменной DISTDIR.
База Portage
Portage хранит состояние системы (какие пакеты установлены, какие файлы какому пакету принадлежат, ...) в каталоге /var/db/pkg.
Не изменяйте файлы состояния системы вручную! Это может заставить Portage видеть систему по другому.
Кеш Portage
Кэш Portage (с временем изменений, виртуальными пакетами, информации о зависимостях в дереве, ...) хранится в /var/cache/edb. Там располагается просто кэш: пользователи спокойно могут отчистить это каталог, если на данный момент не запущено никаких приложений Portage.
Сборка программного обеспечения
Временные файлы Portage
Временные файлы Portage по умолчанию хранятся в /var/tmp/. Этот каталог определяется с помощью переменной PORTAGE_TMPDIR.
Каталог компиляции
Portage создает специальные каталоги в /var/tmp/portage/ для всех компилируемых пакетов. Этот каталог определяется переменной PORTAGE_TMPDIR и добавлено portage/.
Расположение реальной системы
По умолчанию Portage устанавливает все файлы на текущую файловую систему (/), но это можно изменить, если настроить переменную окружения ROOT. Что весьма удобно, в случае создания новых сборочных образов.
Возможности журналирования
Журналироване для ebuild
Portage может создавать фалы журналов для каждого ebuild, но только в том случае, когда переменная PORT_LOGDIR указывает на каталог, который доступен для записи Portage (пользователю portage). По умолчанию эта переменная не задана. Если переменная PORT_LOGDIR не задана то, в текущей системе журналирования не будет журналов, хотя пользователи могут получить некоторый журналы с помощью новой поддержки elog.
Если переменная PORT_LOGDIR не определена и используется elog, тогда можно получить журналы сборки и любые другие журналы, которые сохраняются программой elog, как показано ниже.
Portage предлагает гибкую систему контроля над журналированием с помощью программы elog:
- PORTAGE_ELOG_CLASSES: определяет какие виды сообщений будут записываться в журнал. Разделяя пробелами можно указать любую комбинацию из: info, warn, error, log и qa.
- info: журналирует "einfo" сообщения от ebuild
- warn: журналирует "ewarn" сообщения от ebuild
- error: журналирует "eerror" сообщения от ebuild
- log: журналирует the "elog" сообщения, которые есть в некоторых ebuild
- qa: журналирует "QA Notice" сообщения от ebuild
- PORTAGE_ELOG_SYSTEM: выбирает модуль(и), которые будут обрабатывать сообщения журналов. Если оставить пустым, то журналирование будет отключено. Разделяя пробелами можно использовать любую комбинацию из: save, custom, syslog, mail, save_summary и mail_summary. По крайней мере хотя бы один модуль должен быть задействован, чтобы использовать elog.
- save: сохраняет один журнал для каждого пакета в $PORT_LOGDIR/elog, или /var/log/portage/elog, если $PORT_LOGDIR не определен.
- custom: передает все сообщения пользовательской команде, которая определена в $PORTAGE_ELOG_COMMAND; об этом будет рассказано позже.
- syslog: передает все сообщения установленной программе журналирования.
- mail: передает все сообщения на определенный пользователем в $PORTAGE_ELOG_MAILURI почтовый сервер; об этом будет рассказано позже. Для работы этой возможности elog необходим >=portage-2.1.1.
- save_summary: похоже на save, но еще сохраняет все сообщения в $PORT_LOGDIR/elog/summary.log или /var/log/portage/elog/summary.log, если $PORT_LOGDIR не определена.
- mail_summary: похоже на mail, но еще отправляет все сообщения в одном письме, когда emerge завершает работу.
- PORTAGE_ELOG_COMMAND: эта переменная используется только в случае когда используется модуль custom. Пользователи могут определить команду для обработки сообщений журнала. Обратите внимание, что команда может использовать две переменные: ${PACKAGE} — это имя и версия пакет, а ${LOGFILE} — это полный путь до файла журнала. Например:
PORTAGE_ELOG_COMMAND="/path/to/logger -p '\${PACKAGE}' -f '\${LOGFILE}'"
- PORTAGE_ELOG_MAILURI: эта переменная содержит настройки для модуля mail, такие как адрес, логин, пароль, почтовый сервер и номер порта. По умолчанию это "root@localhost localhost". Следующий пример для сервера SMTP, который требует аутентификацию на основе логина и пароля на определённом порту (по умолчанию 25):
PORTAGE_ELOG_MAILURI="user@some.domain username:password@smtp.some.domain:995"
- PORTAGE_ELOG_MAILFROM: позволяет пользователю настроить адрес "from" для отправленных по почте журналов; если ничего не задано, то по умолчанию "Portage".
- PORTAGE_ELOG_MAILSUBJECT: позволяет пользователям создать тему для писем с журналами. Обратите внимание, что можно использовать две переменные: ${PACKAGE} отобразит имя и версию пакета, а ${HOST} отобразит полностью определенное доменное имя (FQDN) хоста на котором запущен Portage. Например:
PORTAGE_ELOG_MAILSUBJECT="package \${PACKAGE} was merged on \${HOST} with some messages"
Пользователи, которые использовали Portage-2.0.* с enotice, должны удалить enotice, так как он не совместим с elog.