Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Gentoo_x86_Handbook.doc
Скачиваний:
25
Добавлен:
19.09.2019
Размер:
924.16 Кб
Скачать

1.B. Сохраненные файлы

Дерево Portage

Положение дерева Portage по умолчанию это /usr/portage. Это определяется переменной PORTDIR. Когда вы сохраняете дерево Portage в другое место (изменяя эту переменную), не забудьте изменить символическую ссылку /etc/make.profile соответственно.

Если вы измените переменную PORTDIR, вы можете также захотеть изменить следующие переменные, так как они не заметят того, что PORTDIR изменился. Это из-за того, как Portage работает с переменными: PKGDIR, DISTDIR, RPMDIR.

Заранее скомпилированные пакеты

Хотя Portage не использует заранее скомпилированные пакеты по умолчанию, он имеет большую поддержку таких пакетов. Когда вы просите Portage работать с заранее скомпилированными пакетами, он будет смотреть за ними в /usr/portage/packages. Это положение определяется переменной PKGDIR.

Исходный код

Исходный код приложения сохраняется в /usr/portage/distfiles по умолчанию. Это положение определяется переменной DISTDIR.

База данных Portage

Portage сохраняет состояние вашей системы (какие пакеты установлены, какие файлы относятся к какому пакету, …) в /var/db/pkg. Не меняйте эти файлы сами! Это может разрушить знание вашей системы Portage.

Кеш Portage

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

1.C. Компиляция приложений

Временные файлы Portage

Временные файлы Portage хранятся в /var/tmp по умолчанию. Это определяется переменной PORTAGE_TMPDIR.

Если вы измените переменную PORTAGE_TMPDIR, вы можете также захотеть изменить и следующие переменные, так как они не заметят изменение PORTAGE_TMPDIR. Это из-за того, как Portage работает с переменными: BUILD_PREFIX.

Каталог компиляции

Portage создает специяические каталоги для компиляции для каждого пакета, который она устанавливает в /var/tmp/portage. Это положение определено переменной BUILD_PREFIX.

Положение живой файловой системы

по умолчанию, Portage устанавливает все файлы на текущую файловую систему (/), но вы можете изменить это, настроив переменную окружения ROOT. Это полезно, когда вы хотите создать новые образы для установки.

1.D. Возможности логгинга

Логгинг ебилдов

Portage может создавать логи на каждый ебилд, но только когда переменная PORT_LOGDIR установлена в положение, в которое может записать Portage (пользователь portage). по умолчанию, данная переменная не определена. Если вы не установите переменную PORT_LOGDIR, вы не получите никаких логов о компиляции с текущей системой логгинга, хотя вы можете получить некоторые логи с помощью нового elog. Если у вас определена переменная PORT_LOGDIR, и вы используете elog, вы можете получить логи о компиляции и любые логи, сохраненные программой elog, как объясняется ниже.

Portage предлагает множество вариантов логгинга при использовании elog:

  • PORTAGE_ELOG_CLASSES: Здесь вы описываете, какие виды сообщений нужно логгировать. Вы можете использовать любой набор из следующих величин, разделенных пробелами.

    • info: Логгирует сообщения einfo, напечатанные ебилдом

    • warn: Логгирует сообщения ewarn, напечатанные ебилдом

    • error: Логгирует сообщения eerror, напечатанные ебилдом

    • log: Логгирует сообщения elog, напечатанные ебилдом

    • qa: Логгирует сообщения QA Notice, напечатанные ебилдом

  • PORTAGE_ELOG_SYSTEM: Это выбирает модуль(ли), которые будут обрабатывать сообщения логов. Если его оставить пустым, логгинг будет выключен. Вы можете использовать любую комбинацию из следующих значений, разделенных пробелами. Хотя бы одно значение нужно выбрать, чтобы использовать elog.

    • save: Это сохраняет один лог на каждый пакет в $PORT_LOGDIR/elog или /var/log/portage/elog, если $PORT_LOGDIR не определена.

    • custom: Передает все сообщения определенной пользователем команде в $PORTAGE_ELOG_COMMAND, которая будет обсуждаться позже.

    • syslog: Посылает все сообщения на установленный системный логгер

    • mail: Передает все сообщения на определенный пользователем почтовый сервер в $PORTAGE_ELOG_MAILURI, это будет обсуждаться позже. Возможности mail появились в 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: Позволяет вам настроить поле отправителя адресов писем с логами. Обычно это «portage», если данная переменная пуста.

  • PORTAGE_ELOG_MAILSUBJECT: Позволяет вам настроить поле «тема» для писем с логами. Заметьте, что вы можете использовать две переменных: ${PACKAGE} — покажет название пакета и версию, и ${HOST}, который является полным именем домена на котором Portage работает.

  • Вот один из примеров использования:

    • PORTAGE_ELOG_MAILSUBJECT="package \${PACKAGE} was merged on \${HOST} with some messages"

Важно: Если вы использовали enotice в Portage-2.0.*, вы должны полностью убрать enotice, так как она несовместима с elog.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]