PORTAGE

НАЗВАНИЕ

portage - главный инструмент Gentoo

ОПИСАНИЕ

В настоящее время portage использует большое количество конфигурационных файлов; со многими из них незнакомы пользователи и, во многих случаях, даже разработчики. В данном руководстве мы попытались собрать воедино все сведения о portage, которые позволили бы максимально эффективно использовать этот инструмент. Заметьте, что здесь мы описываем только те возможности, которые не имеют собственной справочной страницы.

Все файлы в каталоге make.profile могут быть тонко сконфигурированы при использовании каскадных профилей с помощью родительских профилей. Подробнее см. здесь: http://www.gentoo.org/proj/en/releng/docs/cascading-profiles.xml

Примечание:

Данное руководство не содержит информации о том, как установить ту или иную программу; если вам нужна именно она, обратитесь к справке по emerge(1).

ПАРАМЕТРЫ

/etc/

make.conf (5) 

/etc/make.profile/ или /etc/portage/make.profile/

значения для отдельных адресов помещаются в /etc/portage/profile/

deprecated 
eapi 
make.defaults 
packages 
packages.build 
package.accept_keywords 
package.keywords 
package.mask 
package.provided 
package.unmask 
package.use 
package.use.force 
package.use.mask 
parent 
profile.bashrc 
use.force 
use.mask 
virtuals 

/etc/portage/

bashrc 
categories 
color.map 
license_groups 
make.conf 
mirrors 
modules 
package.accept_keywords 
package.env 
package.keywords 
package.license 
package.mask 
package.properties 
package.unmask 
package.use 
repos.conf 

/etc/portage/env/

файлы конфигурации интерпретатора, bashrc, для отдельных пакетов

/etc/portage/profile/

переопределение /etc/make.profile/ для отдельных адресов

/usr/portage/metadata/

layout.conf 

/usr/portage/profiles/

arch.list 
categories 
info_pkgs 
info_vars 
license_groups 
make.defaults 
package.mask 
package.unmask 
package.use 
package.use.force 
package.use.mask 
profiles.desc 
repo_name 
thirdpartymirrors 
use.desc 
use.force 
use.local.desc 
use.mask 

/usr/share/portage/config/

make.globals 

/var/cache/edb/

различные файлы внутреннего кэша

/var/db/pkg/

база данных для отслеживания установленных пакетов

/var/lib/portage/

config 
world 
world_sets 

ГЛОССАРИЙ

В данном руководстве вы можете столкнуться с терминами, которые вам незнакомы или специфичны для Portage. Обращайтесь к указанным ниже man-страницам для более развернутой информации.

Атом зависимости

Атом имеет синтаксис следующего вида: либо категория/пакет, либо _оператор категория/пакет-версия. В качестве суффикса атом может иметь обозначение слота.
Подробнее см. ebuild(5).

Синтаксис расширенного атома
Следующие расширения синтаксиса атома поддерживаются только в пользовательских файлах конфигурации и в аргументах таких консольных команд как emerge(1):

Ограничения репозитория

Атомы с такими ограничениями содержат в конце, через разделитель '::', имя репозитория. Каждое имя репозитория должно соответствовать значению записи repo_name одного из репозиториев, сконфигурированных с помощью переменной PORTDIR или PORTDIR_OVERLAY (см. make.conf(5)).

Примеры:

# пакет sed из репозитория 'gentoo' 
sys-apps/sed::gentoo 
# пакет kdelibs из репозитория 'kde-testing' 
kde-base/kdelibs::kde-testing 
# пакет empathy из репозитория 'gnome' 
net-im/empathy::gnome 

Шаблоны с подстановочными знаками

Атомы, содержащие подстановочные знаки, имеют синтаксис вида категория/пакет, где подстановочный знак '*' заменяет произвольное число из ряда допустимых. Разрешается использование нескольких символов '*', но они не должны стоять рядом друг с другом.

Примеры:

# любой пакет из категории 'sys-apps' 
sys-apps/* 
# любой пакет с именем 'zlib' из любой категории
*/zlib 
# любой пакет из категории, начинающейся с 'net-' 
net-*/* 
# любой пакет из любой категории
*/* 
# любой пакет из репозитория 'gentoo' 
*/*::gentoo 

KEYWORD

Каждая архитектура имеет свое ключевое слово (KEYWORD).
Подробнее см. ebuild(5)

virtual

Атом зависимости, который принадлежит категории виртуальных пакетов. Используются в том случае, когда разрешить необходимую зависимость могут сразу несколько пакетов, но требуется лишь один.
Подробнее см. ebuild(5)

НЕКОТОРЫЕ ВАЖНЫЕ ФАЙЛЫ

/etc/

make.conf

Глобальные редактируемые настройки, передаваемые Portage. См. make.conf(5).

/etc/make.profile/ или /etc/portage/make.profile/

Как правило, это лишь символическая ссылка на правильный профиль, хранящийся в каталоге /usr/portage/profiles/. Поскольку этот файл является частью дерева портежей, его можно легко обновить или сгенерировать заново, запустив `emerge --sync`. Он определяет профиль (обычно речь идет о параметрах, специфичных для данной архитектуры). Если вы хотите использовать свой особый профиль, вам необходимо создать свой собственный каталог /etc/make.profile/ и заполнить его. Однако, если вы намерены ограничиться переопределением некоторых настроек, используйте путь /etc/portage/profile/ (он поддерживает те же типы файлов, что и /etc/make.profile/, за исключением родительских записей). НЕ РЕДАКТИРУЙТЕ настройки в /etc/make.profile/, поскольку после очередного `emerge --sync` они будут ПОТЕРЯНЫ. Если существуют два пути - и /etc/make.profile/, и /etc/portage/make.profile/, будет предпочтен /etc/make.profile/.

Любые файлы в этом каталоге, каталоги других профилей или высокоуровневые profiles-каталоги, имена которых начинаются с "package." или "use.", могут быть не только файлом, но и каталогом. Если это каталог, все файлы в нем будут отсортированы по имени в прямом алфавитном порядке и выведены вместе, как если бы они представляли собой один файл. Обратите внимание, что такое поведение поддерживается только в версиях portage выше 2.1.6.7, причем на данный момент оно не включено в PMS.

Пример:

${PORTDIR}/profiles/package.mask/removals 
${PORTDIR}/profiles/package.mask/testing 

deprecated

Если этот файл присутствует, значит, профиль помечен как устаревший, более не поддерживаемый разработчиками Gentoo. В первой строке файла должен быть указан профиль, на который рекомендуется перейти пользователям, а ниже, возможно - инструкция, как это сделать.

Пример:

default-linux/x86/2005.0 
# emerge -n '>=sys-apps/portage-2.0.51' 
# rm -f /etc/make.profile 
# ln -s /usr/portage/profiles/default-linux/alpha/2005.0 /etc/make.profile 

eapi

В первой строке этого файла указывается версия EAPI для всех файлов каталога. Справка по ebuild(5) предоставляет более развернутую информацию о EAPI и связанных с ним функциях.

make.defaults

Стандартные настройки профиля для Portage. Общий формат описан в руководстве по make.conf(5). Файл make.defaults для вашего профиля определяет несколько специфических переменных:

ARCH

Архитектура (x86/ppc/hppa и т.д.).

USERLAND = GNU

Поддержка BSD/cygwin и т.д.

ELIBC = glibc

Поддержка uClibc/BSD libc и т.д.

PROFILE_ONLY_VARIABLES = ARCH

Предотвращает изменение пользователем критических переменных в файлах make.conf или окружении.

PROFILE_ARCH

Позволяет различать классы машин с совпадающим значением ARCH. Так, для всех компьютеров Sparc справедливо ARCH=sparc, но данная переменная должна иметь значение 'sparc32' или 'sparc64'.

STAGE1_USE

Специальные USE-флаги, которые могут понадобиться при самогенерации stage2 из stage1.

packages

Перечь пакетов, входящих в состав сета system.

Формат:

- комментарии начинаются с символа # (внутритекстовые комментарии не допускаются) 
- на одной строке может быть только один атом зависимости
- пакеты, которые должны быть добавлены в сет system, начинаются с символа * 
- атомы без символа * выводятся только если речь идет об устаревших, но по-прежнему используемых пакетах 

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

Пример:

# Это комментарий! 
# загрузить версию glibc ниже 2.3 
*<sys-libs/glibc-2.3 
# загрузить любую версию bash 
*app-shells/bash 
# загрузить версию readline ниже 4.2 
*<sys-libs/readline-4.2 

packages.build

Список пакетов (по пакету на строку), которые составляют архив stage1. Его изменение имеет смысл только для разработчиков stage.

package.provided

Список пакетов (по пакету на строку), для которых portage предполагает, что они имеют источник данных. Имеет смысл при портировании на системы, отличные от Linux. В целом этот список заменяет emerge --inject.

Например, если вы работаете с собственной копией ядра 2.6, вы можете указать portage, что пакет 'sys-kernel/development-sources-2.6.7' уже обслуживается со стороны, так что он должен его игнорировать.

Portage не будет пытаться обновить пакет из данного списка, если только другой пакет явно не требует более новой его версии, чем указанная в списке. Зависимости, удовлетворяемые перечисленным в package.provided, могут вызвать удаление командой emerge --depclean установленных пакетов, удовлетворяющих соответствующие зависимости (подробнее см. в разделе ДЕЙСТВИЯ man-руководства emerge(1)).

В package.provided не должны помещаться виртуальные пакеты (virtual/*). В зависимости от типа такого пакета, вам может понадобиться добавить его в файл virtuals и/или добавить пакет, удовлетворяющий виртуальному, в package.provided.

Формат:

- комментарии начинаются с символа # (внутритекстовые комментарии не допускаются) 
- на одной строке может быть только один атом зависимости
- операторы отношений не допускаются 
- должна быть указана версия 

Пример:

# вы занимаетесь разработкой ядра 
sys-kernel/development-sources-2.6.7 

# у вас установлена собственная копия QT 
x11-libs/qt-3.3.0 

# у вас модульная среда X, а пакетам необходима монолитная 
x11-base/xorg-x11-6.8 

package.use.force

Принудительное назначение USE-флагов для отдельных пакетов.

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

Формат:

- комментарии начинаются с символа # (внутритекстовые комментарии не допускаются) 
- по одному атому зависимости на строку, USE-флаги разделяются пробелом 

Пример:

# принудительно установить документацию для GTK 2.x 
=x11-libs/gtk+-2* doc 
# принудительно убрать поддержку mysql для QT 
x11-libs/qt -mysql 

package.use.mask

Маскировка USE-флагов для отдельных пакетов.

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

Формат:

- комментарии начинаются с символа # (внутритекстовые комментарии не допускаются) 
- по одному атому зависимости на строку, USE-флаги разделяются пробелом

Пример:

# замаскировать документацию для GTK 2.x 
=x11-libs/gtk+-2* doc 
# размаскировать поддержку mysql для QT 
x11-libs/qt -mysql 

parent

Содержит путь доступа к родительскому профилю. Путь может быть как абсолютным, так и относительным. К местонахождению профиля путь будет относительным. Как правило, данный файл содержит указание на родительский каталог, '..'. Используется только в каскадных профилях.

profile.bashrc

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

use.force

В определенных обстоятельствах некоторые USE-флаги нет смысла отключать. Здесь перечисляются принудительно выставляемые флаги.

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

Формат:

- комментарии начинаются с символа # (внутритекстовые комментарии не допускаются) 
- по одному USE-флагу на строку

use.mask

Некоторые USE-флаги на отдельных архитектурах не имеют смысла (например, altivec на архитектуре, отличной от ppc, или mmx на архитектуре, отличной от x86) или не тестировались. Здесь перечисляются замаскированные флаги.

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

Формат:

- комментарии начинаются с символа # (внутритекстовые комментарии не допускаются) 
- по одному USE-флагу на строку

Пример:

# замаскировать doc 
doc 
# размаскировать mysql 
-mysql 

virtuals

Определяет, какие пакеты являются источником виртуальных по умолчанию. Например, если пакет должен отправлять почту, ему понадобится virtual/mta. Если нет пакета, предоставляющего virtual/mta (например, qmail, sendmail, postfix и т.д.), portage обращается к значению virtuals. В данном случае Gentoo стандартно использует net-mail/ssmtp (как определено в файле virtuals) - это пакет, который минимально необходим для отсылки электронных писем.

Формат:

- комментарии начинаются с символа # (внутритекстовые комментарии не допускаются) 
- по одному виртуальному пакету и атому зависимости на строку

Пример:

# использовать net-mail/ssmtp как почтовый агент по умолчанию 
virtual/mta           net-mail/ssmtp 
# использовать app-dicts/aspell-en как словарь по умолчанию
virtual/aspell-dict   app-dicts/aspell-en 

/etc/portage/

Любой элемент в этом каталоге, имя которого начинается с "package.", может быть не только файлом, но и каталогом. Если это каталог, все файлы, хранящиеся в нем, отсортированы по имени в прямом алфавитном порядке и сведены вместе, как если бы это был один файл.

Пример:

/etc/portage/package.accept_keywords/common 
/etc/portage/package.accept_keywords/e17 
/etc/portage/package.accept_keywords/kde 

bashrc

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

В каталоге /etc/portage/env можно создавать дополнительные файлы настроек интерпретатора bashrc для отдельных пакетов.

categories

Простой список существующих категорий, которые могут быть использованы в /usr/portage, PORTDIR_OVERLAY и PKGDIR (см. make.conf(5)). Это позволяет создавать пользовательские категории.

Формат:

- по одной категории на строку

Пример:

app-hackers 
media-other 

color.map

Содержит переменные для пользовательской настройки цветного вывода. См. color.map(5).

make.conf

Глобальные пользовательские настройки Portage. См. make.conf(5). Если этот файл существует, он имеет приоритет перед /etc/make.conf.

mirrors

Всякий раз, сталкиваясь с URI-ссылкой вида mirror://, portage обращается в поиске серверов сюда. Если mirrors не содержит перечня зеркал, portage обратится к глобальному файлу зеркал по адресу /usr/portage/profiles/thirdpartymirrors. Вы можете также указать особый тип зеркал, "local". Обращение к таким зеркалам происходит до считывания значения переменной GENTOO_MIRRORS; они используеются даже в том случае, если для пакета установлены параметры RESTRICT="mirror" или RESTRICT="fetch".

Формат:

- комментарии начинаются с символа # (внутритекстовые комментарии не допускаются) 
- сначала тип зеркала, затем список серверов 

Пример:

# локальные частные зеркала моей компании
local ftp://192.168.0.3/mirrors/gentoo http://192.168.0.4/distfiles 

# если вы находитесь в Японии, предпочтительным для вас, скорее всего, будет японский сервер sourceforge
sourceforge http://keihanna.dl.sourceforge.net/sourceforge 

# если вы находитесь в Тайване, предпочтительным для вас, скорее всего, будет местный сервер gnu
gnu ftp://ftp.nctu.edu.tw/UNIX/gnu/ 

modules

Этот файл позволяет переопределять кэш метаданных. На практике единственной используемой здесь переменной, которую имеет смысл менять пользователю, является portdbapi.auxdbmodule.

Пример:

portdbapi.auxdbmodule = portage.cache.sqlite.database 

После переопределения значения portdbapi.auxdbmodule может быть необходимо перенести или регенерировать кэш метаданных. Если вы используете дерево rsync и в make.conf(5) включено FEATURES="metadata-transfer", выполните `emerge --metadata`. Чтобы регенерировать метаданные для репозиториев из переменной PORTDIR_OVERLAY или дерева cvs, выполните `emerge --regen` (см. emerge(1)). Если вы используете, например, модуль sqlite и хотите, чтобы все метаданные сохранялись только в этом формате (удобно для запросов), включите FEATURES="metadata-transfer" в вашем make.conf(5).

package.accept_keywords и package.keywords

Позволяют назначать ACCEPT_KEYWORDS для отдельных пакетов. Это имеет смысл, если вам необходимо несколько нестабильных пакетов на стабильной системе или наоборот. ACCEPT_KEYWORDS получает здесь аргументом один определенный пакет. Если в системе присутствуют и package.accept_keywords, и package.keywords, будут использованы оба, причем значения из package.accept_keywords будут иметь приоритет перед package.keywords. Файл package.accept_keywords призван заменить package.keywords, поскольку профили поддерживают другой формат package.keywords, который изменяет действующие значения KEYWORDS (а не ACCEPT_KEYWORDS).

Формат:

- комментарии начинаются с символа # (внутритекстовые комментарии не допускаются)
- в каждой строке - один атом зависимости и дополнительное ключевое слово
- если в строке не указано ключевых слов, подразумевается, что используется нестабильная ветка

Пример: 
# всегда использовать нестабильные версии libgd 
media-libs/libgd ~x86 
# использовать только стабильные версии mplayer 
media-video/mplayer -~x86 
# всегда использовать нестабильные версии netcat
net-analyzer/netcat 

Примечание: В дополнение к стандартным значениям переменной ACCEPT_KEYWORDS package.keywords поддерживает три особых маркера:

*  пакет отображается только в том случае, если он стабилен на любой архитектуре 
~* пакет отображается только в том случае, если он тестируется на всех архитектурах 
** пакет отображается во всех случаях (ключевые слова игнорируются) 

Дополнительное примечание: Если вы видите значение -* KEYWORD, это означает, что пакет не работает ни на одной системе, кроме перечисленных в KEYWORDS. Например, для пакета, существующего лишь как бинарный и собранного под архитектуру x86, имеем следующую запись:

games-fps/quake3-demo-1.11.ebuild:KEYWORDS="-* x86"

Если вы всё же хотите, чтобы этот пакет был доступен, используете другое ключевое слово в package.accept_keywords, например:

games-fps/quake3-demo x86

package.env

Переменные окружения для отдельных пакетов. Каждая запись соответствует файлу окружения; все эти файлы хранятся в каталоге /etc/portage/env/ и имеют тот же формат, что и make.conf(5).

Формат:

- комментарии начинаются с символа # (внутритекстовые комментарии не допускаются)
- в одной строке - один атом зависимости и соответствующий/-е ему файл(ы) окружения 

Пример:

# использовать для пакета glibc переменные окружения из файла /etc/portage/env/glibc.conf
sys-libs/glibc glibc.conf 

package.license

Позволяет добавлять значения ACCEPT_LICENSE для отдельных пакетов.

Формат:

- комментарии начинаются с символа # (внутритекстовые комментарии не допускаются)
- в одной строке - один атом зависимости с дополнительными лицензиями или группами лицензий для него

package.mask

Список маскируемых атомов пакетов. Полезно в том случае, если не все версии требуемого пакета работают в вашей системе. Например, вам необходимы драйверы Nvidia drivers, но только версии до 1.0.4496. Нет ничего проще!

Формат:

- комментарии начинаются с символа # (внутритекстовые комментарии не допускаются)
- по одному атому зависимости на строку 

Пример:

# замаскировать драйверы nvidia
# версии 1.0.4496 и выше
>=media-video/nvidia-kernel-1.0.4496 
>=media-video/nvidia-glx-1.0.4496 

package.properties

Позволяет добавлять значения ACCEPT_PROPERTIES для отдельных пакетов.

Формат:

- комментарии начинаются с символа # (внутритекстовые комментарии не допускаются)
- в одной строке - один атом зависимости и дополнительные свойства для него

package.unmask

Аналогично описанному выше package.mask, но здесь, наоборот, перечисляются те пакеты, которые вы хотите размаскировать. Позволяет переопределить значения глобального файла package.mask (см. выше). Обратите внимание, что это не влияет на пакеты, которые были замаскированы посредством переменной KEYWORDS.

package.use

USE-флаги для отдельных пакетов. Удобно для отслеживания локальных USE-флагов, а также в случаях, когда флаги необходимо включать выборочно. Например, вы - разработчик GTK, поэтому вам необходима полная документация по данному проекту, а документация по QT не нужна. Элементарно, Ватсон.

Формат:

- комментарии начинаются с символа # (внутритекстовые комментарии не допускаются) 
- в одной строке - один атом зависимости и его USE-флаги, через пробел 

Пример:

# подключить документацию для GTK 2.x 
=x11-libs/gtk+-2* doc 
# отключить поддержку mysql для QT 
x11-libs/qt -mysql 

repos.conf

Содержит информацию о конфигурации отдельных репозиториев. Обратите внимание, что указанные здесь настройки конфигурации не относятся к таким утилитам как repoman(1) и egencache(1), поскольку выполняемые ими операции по определению не зависят от репозитория. ВНИМАНИЕ: в общем случае не рекомендуется использовать repos.conf, поскольку это повлечет за собой изменения в наследовании еклассов (прежде всего переопределение еклассов), которые, в свою очередь, в ряде случаев могут вызвать снижение производительности (см. ошибку #124041). При переопределении еклассов, дабы обойти ошибку #276264, вы должны убедиться, что ваше дерево портежей не содержит каталога metadata/cache/. Если же этот каталог существует, вам следует полностью его удалить и прописать значение переменной PORTAGE_RSYNC_EXTRA_OPTS="--exclude=/metadata/cache" в файле make.conf, чтобы исключить metadata/cache/ из операций *emerge --sync.

Пример:

[DEFAULT] 
# все репозитории будут наследовать еклассы из java-overlay и репозиториев 
# java-experimental, причем еклассы из java-experimental 
# будут иметь приоритет перед еклассами из java-overlay
eclass-overrides = java-overlay java-experimental 

[gentoo] 
# отключить переопределение еклассов для ебилдов из репозитория gentoo 
eclass-overrides = 
# при обработке данных metadata/layout.conf из других репозиториев, вставлять 
# 'gentoo' вместо алиасов-ссылок на репозитории 'foo' и 'bar', 
# а алиас 'baz', содержащийся в файле layout.conf для gentoo, игнорировать
aliases = foo bar -baz 

[kde-testing] 
# переопределять настройки metadata/layout.conf основной ветки репозитория kde-testing 
masters = gentoo kde 

[python] 
# переопределять настройки metadata/layout.conf основной ветки репозитория python, 
# чтобы эти настройки не наследовались из ветки и чтобы 
# репозиторий не тянул оттуда зависимости (пользователю необходимо 
# убедиться, что все необходимые зависимости, такие как еклассы, удовлетворены) 
masters = 

/etc/portage/env/

В этом каталоге могут располагаться дополнительные файлы настройки интерпретатора, bashrc, для отдельных пакетов. Имейте в виду, что, если необходимы лишь настройки переменных окружения для этих пакетов, следует использовать не bashrc, а /etc/portage/package.env.

Функции set_unless_changed и unset_unless_changed functions можно использовать для изменения значений данных переменных, но только в том случае, если их значения не противоречат значениям, выставленным в файле make.conf. Это удобно, когда требуется временно переопределить переменные окружения при вызове emerge. Значения переменных, которых было назначены без использования функции set_unless_changed, всегда переопределяют значения, установленные при вызове emerge.

Синтаксис:

set_unless_changed ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ 
unset_unless_changed ЗНАЧЕНИЕ 

Portage обрабатывает все файлы bashrc после /etc/portage/bashrc, в следующем порядке:

  1. /etc/portage/env/${CATEGORY}/${PN}
  2. /etc/portage/env/${CATEGORY}/${PN}:${SLOT}
  3. /etc/portage/env/${CATEGORY}/${P}
  4. /etc/portage/env/${CATEGORY}/${PF}

/usr/portage/metadata/

layout.conf

Содержит схему репозиториев. Поддерживается атрибут masters, используемый для указания репозиториев, которые удовлетворяют зависимости еклассов и/или ебилдов. Каждому репозиторию должно соответствовать значение записи repo_name одного из репозиториев, определенного переменными PORTDIR и PORTDIR_OVERLAY (см. make.conf(5)). Репозитории справа от masters имеют большие приоритет, чем указанные слева. Поддерживается также атрибут aliases, поведение которого аналогично этому же атрибуту из файла repos.conf. Значения layout.conf можно переопределять для отдельных репозиториев в файле /etc/portage/repos.conf. Настройки, содержащиеся в repos.conf, имеют приоритет перед значениями layout.conf, однако такие утилиты как repoman(1) и egencache(1) полностью игнорируют repos.conf, поскольку выполняемые ими операции по определению не зависят от репозитория.

Пример:

# еклассы, предоставляемые java-overlay, имеют приоритет перед одноименными
# еклассами, предоставляемыми gentoo 
masters = gentoo java-overlay 
# указать, что данный репозиторий может заменять foo-overlay 
aliases = foo-overlay 
# не подписывать manifest-файлы в данном репозитории 
sign-manifests = false 
# использовать "легкие" manifest-файлы, содержащие только записи DIST 
thin-manifests = true 
# указать, что в данном репозитории каждому пакету должен соответствовать manifest-файл, а если 
# его нет или он некорректен, это будет рассматриваться как ошибка 
use-manifests = strict 
# указать, что для данного репозитория по умолчанию включена опция repoman --echangelog=y
update-changelog = true 
# указать, что данный репозиторий содержит файлы формата как md5-dict, так и pms -
# их может генерировать egencache(1) 
cache-formats = md5-dict pms 
# указать, что данный репозиторий содержит профили, которые могут использовать
# package.mask, package.provided, package.use, package.use.mask, 
# package.use.force, use.mask и use.force как каталоги. 
profile-formats = portage-1 

/usr/portage/profiles/

Глобальные настройки Gentoo, контролируемые разработчиками. Переопределить их можно, используя файлы в каталоге /etc/portage/.

arch.list

Список всех доступных ключевых слов KEYWORDS. Модификаторы не учитываются.

Формат:

- по одному ключевому слову на строку 

Пример:

x86 
ppc 
sparc 

categories

Простой список доступных категорий, которые могут быть использованы в /usr/portage, PORTDIR_OVERLAY и PKGDIR (см. make.conf(5)).

Формат:

- по одной категории на строку

Пример:

app-admin 
dev-lang 
games-strategy 
sys-kernel 

info_pkgs

Список всех пакетов, которые будут выведены по команде `emerge --info`.

info_vars

Список всех переменных, которые будут выведены по команде `emerge --info`.

license_groups

Содержит группы лицензий, которые могут быть определены переменной ACCEPT_LICENSE (см. make.conf(5)). Подробнее об этом см. в GLEP 23: http://www.gentoo.org/proj/en/glep/glep-0023.html.

Формат:

- комментарии начинаются с символа # (внутритекстовые комментарии не допускаются) 
- в одной строке - одна группа с перечнем лицензий и вложенных групп
- вложенные группы должны иметь префикс @ 

Пример:

# Группа лицензий FSF-APPROVED полностью включает в себя группу GPL-COMPATIBLE и не только. 
FSF-APPROVED @GPL-COMPATIBLE Apache-1.1 BSD-4 MPL-1.0 MPL-1.1 
# Группа лицензий GPL-COMPATIBLE включает все лицензии, совместимые с GNU GPL. 
GPL-COMPATIBLE Apache-2.0 BSD BSD-2 GPL-2 GPL-3 LGPL-2.1 LGPL-3 X11 ZLIB 

package.accept_keywords

Значения ACCEPT_KEYWORDS, используемые профилями, для отдельных пакетов. Формат и повдение этого файла аналогичны /etc/portage/package.accept_keywords, включая возможность включения в список атомов без ключевых слов, тем самым разрешая использовать нестабильные соответствия все стабильных веток, перечисленных в ACCEPT_KEYWORDS.

package.keywords

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

Формат:

- комментарии начинаются с символа # (внутритекстовые комментарии не допускаются)
- в одной строке - один атом с зависимости с дополнительными ключевыми словами для него

Пример:

# добавить для libgd стабильную ветку
media-libs/libgd x86 
# заменить для mplayer стабильную ветку нестабильной
media-video/mplayer -x86 ~x86 
# удалить для netcat все ключевые слова 
net-analyzer/netcat -* 

package.mask

Содержит перечень атомов зависимости для пакетов, которые не должны устанавливаться ни в одном профиле. Имеет смысл, например, если вам необходимо добавить последние бета-версии KDE, но не допустить, чтобы кто-либо из пользователей мог до них обновиться. Удобно и для быстрой маскировки отдельных версий, если были обнаружены проблемы с безопасностью. ВСЕГДА сопровождайте записи комментарием, в котором указывались бы ПРИЧИНА, по которой пакет замаскирован, и тот, КТО его замаскировал.

Формат:

- комментарии начинаются с символа # (внутритекстовые комментарии не допускаются) 
- по одному атому зависимости на строку 

Пример:

# замаскировать по соображениям безопасности 
<sys-libs/zlib-1.1.4 
# <caleb@gentoo.org> (10 Sep 2003) 
# новые бета-версии kde 
=kde-base/kde-3.2.0_beta1 
=kde-base/kdeaccessibility-3.2.0_beta1 

profiles.desc

Список всех текущих профилей, предназначенных для пользователей и разработчиков. Каждый указанный здесь профиль обрабатывается утилитой repoman.

Формат:

- комментарии начинаются с символа # (внутритекстовые комментарии не допускаются) 
- в одной строке - один профиль, описанный в формате: _архитектура каталог состояние_, где:
- архитектура должна фигурировать в arch.list 
- каталог должен фигурировать в profiles.desc 
- поддерживаются три состояния профиля: 'stable', 'dev' и 'exp' 

Пример:

alpha        default/linux/alpha/10.0    stable 
m68k         default/linux/m68k/10.0     dev 
x86          default/linux/x86/10.0      stable 
x86-linux    prefix/linux/x86            exp 

repo_name

Первая строка файла должна определять уникальное имя репозитория. Это имя может содержать любые символы из набора [A-Za-z0-9_-], причем дефис не может стоять в начале имени.

thirdpartymirrors

Управляет обработкой URI вида mirror://, представляющих собой доступные для загрузки зеркала. Предотвращает перегрузку какого-либо одного сервера.

Формат:

- комментарии начинаются с символа # (внутритекстовые комментарии не допускаются) 
- в строке - тип сервера и перечень хостов 

Пример:

sourceforge http://aleron.dl.sourceforge.net/sourceforge http://unc.dl.sourceforge.net/sourceforge 

gentoo http://distro.ibiblio.org/pub/linux/distributions/gentoo/distfiles/ ftp://ftp.gtlib.cc.gatech.edu/pub/gentoo/distfiles 

kernel http://www.kernel.org/pub http://www.us.kernel.org/pub 

use.desc

Здесь должны быть перечислены все глобальные USE-флаги с их описанием.

Формат:

- комментарии начинаются с символа # (внутритекстовые комментарии не допускаются) 
- синтаксис строки: USE-флаг - описание

Пример:

3dfx - Adds support for 3dfx video cards 
acl - Adds support for Access Control Lists 
doc - Adds extra documentation 

use.local.desc

Здесь перечисляются все локальные USE-флаги с описанием и указанием пакетов, для которых они установлены. Этот файл генерируется автоматически на основе файлов метаданных metadata.xml, включаемых во все пакеты. Подробнее см. в GLEP 56: http://www.gentoo.org/proj/en/glep/glep-0056.html.

Формат: 
- комментарии начинаются с символа # (внутритекстовые комментарии не допускаются) 
- синтаксис строки: пакет:USE-флаг - описание 

Пример: 
app-editors/nano:justify - Toggles the justify option 
dev-libs/DirectFB:fusion - Adds Multi Application support 
games-emulation/xmess:net - Adds network support 

/usr/share/portage/config/

make.globals

Глобальные настройки по умолчанию для Portage. Они беруется непосредственно из пакета portage. Настройки, выставленные пользователем в make.conf или package.env, переопределяют их. Формат подробно описан в make.conf(5).

/var/cache/edb/

Этот каталог используется для хранения файлов внутреннего кэша portage. Имена и назначение этих файлов специально не документируются, дабы сэкономить ресурсы. Если вы не ведете разработку portage, вас, скорее всего, не касается описанное ниже.

Содержимое данного каталога может быть полностью удалено без какого-либо ущерба безопасности. Тем не менее убедительно рекомендуем не делать этого, поскольку повторное его генерирование может занять много времени.

/var/db/pkg/

Информация обо всех установленных пакетах хранится здесь. Portage определяет, установлен ли тот или иной пакет, путем обращения к этому каталогу.

Его структура в целом дублирует структуру дерева портежей: для каждой категории установленных пакетов предусмотрен подкаталог, а для каждой установленной версии пакета - вложенный в него каталог.

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

Мы не описываем здесь точное содержимое и формат файлов, поскольку они могут в любой момент изменены. Впрочем, как правило, обычно каждой значимой переменной окружения (например, CFLAGS) соответствует один файл в данном каталоге. Обычно присутствует файл CONTENTS, содержащий адреса и хэши всех объектов, установленных пакетом в вашу систему.

/var/lib/portage/

config

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

world

Всякий раз, когда вы устанавливаете какой-либо пакет, его имя вносится в этот файл. При вызове `emerge world -up` из world-файла считывается список пакетов. Обратите внимание, что пакеты, установленные как зависимости, не вносятся в world. Например, если вы введете в терминале `emerge mod_wsgi`, а apache у вас еще не установлен, в world-файл будет внесен пакет "www-apache/mod_wsgi", но не "www-servers/apache". Подробнее см. emerge(1).

Формат:

- по одному атому зависимости на строку 

Пример:

games-misc/fortune-mod-gentoo-dev 
dev-libs/uclibc 
app-cdr/cdemu 

world_sets

Аналогичен world-файлу, но вместо атомов пакетов содержит сеты пакетов (всегда начинаются с символа @).

Пример:

@kde 

БАГТРЕКЕР

Об обнаруженных ошибках сообщайте на http://bugs.gentoo.org/

АВТОРЫ

СМ. ТАКЖЕ

emerge(1), ebuild(1), ebuild(5), make.conf(5), color.map(5)

ПЕРЕВОД

 
 

Октябрь 2011

Спасибо!