EBUILD (5)

НАЗВАНИЕ

ebuild - внутренний формат, переменные и функции в сценарии ebuild

ОПИСАНИЕ

Программа ebuild (1) может принять в качестве аргумента только один сценарий ebuild. Сценарий ebuild содержит переменные и команды, которые определяют, каким образом следует загружать исходный код того или иного программного пакета, распаковывать его, накладывать патчи, компилировать, устанавливать и включать в дерево. Кроме того, в сценарий также входят команды, которые должны выполняться до и после установки/удаления пакетов. Все сценарии ebuild написаны на bash.

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

Атомы зависимости представляют собой не что иное как зависимости, к которым будет обращаться portage, выявляя отношения между пакетами. Обратите внимание, что если атом еще не в дереве пакетов, значение переменной совпадает с последней доступной версией.

Базовые атомы

Базовый атом - это полное имя пакета: категория/пакет.

Вот примеры базовых атомов:

    sys-apps/sed 
    sys-libs/zlib 
    net-misc/dhcp 

Версии атомов

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

Примеры:

    sys-apps/sed-4.0.5 
    sys-libs/zlib-1.1.4-r1 
    net-misc/dhcp-3.0_p2 

Номера версий обычно состоят из двух или трех чисел, разделенных точками, например, 1.2 или 4.5.2. После этой строки может идти буква - например, возможны такие номера версий как 1.2a или 4.5.2z. Имейте в виду, что эта буква не обозначает альфа- или бета-версию. Для этого используется специальный необязательный суффикс: _alpha, _beta, _pre (предрелиз), _rc (кандидат в релизы) или _p (патч). Таким образом, третий предрелиз пакета будет обозначен, например, как 1.2_pre3. Суффиксы можно добавлять один за другим в неограниченном количестве.

Префиксные операторы атома [> >= = <= <]

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

Примеры:

    >media-libs/libgd-1.6 
    >=media-libs/libgd-1.6 
    =media-libs/libgd-1.6 
    <=media-libs/libgd-1.6 
    <media-libs/libgd-1.6 

Расширенные префиксы [!~]и суффиксы атома [*]

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

~

означает любую ревизию указанной базовой версии. Так, в приведенном выше примере в выборке окажутся версии '1.0.2a', '1.0.2a-r1', '1.0.2a-r2' и т.д.

Пример:

    ~net-libs/libnet-1.0.2a 

!

предотвращает одновременную установку пакетов, блокирующих друг друга.

Пример:

    !app-text/dos2unix 

!!

предотвращает одновременную установку пакетов и при этом явно запрещает их одновременную временную установку в серии обновлений. Данный синтаксис поддерживается в EAPI 2 и выше.

Пример:

    !!<sys-apps/portage-2.1.4_rc1 

*

означает любую версию пакета при условии совпадения указанного префикса строки. Таким образом, если в качестве версии указано '2*', будут учитываться версии '2.1', '2.2', '2.2.1' и т.п., но не '1.0', '3.0', '4.1' и т.д. Не забудьте: в силу того, что вы используете подстановочный знак, шаблону '2*' будет соответствовать и '20'. Часть версии перед '*' должна быть корректным номером версии, без '*'.. Например, '2' - корректный номер версии, а '2.' - нет. Иными словами, вы можете использовать обозначение '2*', но не '2.*'.

Примеры:

    =dev-libs/glib-2* 
    !=net-fs/samba-2* 

Слоты атомов

Начиная с EAPI 1 может быть задан слот любого атома. Для этого необходимо указать имя слота, через двоеточие.

Например:

    x11-libs/qt:3 
    ~x11-libs/qt-3.3.8:3 
    >=x11-libs/qt-3.3.8:3 
    =x11-libs/qt-3.3*:3 

Подслоты

Начиная с EAPI 5 зависимость слота может содержать опциональный подслот, который указывается через слэш /.

Примеры:

    dev-libs/icu:0/0 
    dev-libs/icu:0/49 
    dev-lang/perl:0/5.12 
    dev-libs/glib:2/2.30 

Операторы атомов слотов

Начиная с EAPI 5, оператором слота выступает двоеточие, за которым следует один из следующих операторов:

*

Означает, что разрешается любое значение слота. Кроме того, для сборочных зависимостей обозначает, что пакет, совпадающий с запросом, может быть удалён и заменён другим совпадающим в другом слоте.

Примеры:

    dev-libs/icu:* 
    dev-lang/perl:* 
    dev-libs/glib:* 

=

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

Примеры:

    dev-libs/icu:= 
    dev-lang/perl:= 
    dev-libs/glib:= 

slot=

Означает то же, что и оператор равенства, за исключением того, что для слота допускается лишь одно определённое значение.

Примеры:

    dev-libs/icu:0= 
    dev-lang/perl:0= 
    dev-libs/glib:2= 

Чтобы использовать оператор равенства слота, пакетный менеджер должен сохранить пару слот/подслот новейшей установленной версии пакета. Описанный синтаксис обрабатывается только пакетным менеджером и не предназначен для ебилдов. Для этого пакетный менеджер при сохранении зависимостей пакета может вставлять соответствующий слот/подслот между двоеточием и знаком равенства. Обозначение подслота в этом случае опускать нельзя (когда это делает переменная SLOT, подразумевается, что пакет имеет подслот, совпадающий со слотом).

Примеры:

    dev-libs/icu:0/0= 
    dev-libs/icu:0/49= 
    dev-lang/perl:0/5.12= 
    dev-libs/glib:2/2.30= 

USE-флаги атомов

Начиная с EAPI 2 для любого атома могут быть заданы USE -флаги. Если при этом вы также указываете слоты, то зависимости USE -флагов будут выводится справа от зависимостей слотов.

Безусловные USE-зависимости

Пример Расшифровка
foo[bar] foo требует, чтобы был включен bar
foo[bar,baz] foo требует, чтобы были включены и bar, и baz
foo[-bar,baz] foo требует, чтобы bar был отключен, а baz включен

Условные USE-зависимости

Краткая запись Развернутая запись
foo[bar?] bar? ( foo[bar] ) !bar? ( foo )
foo[!bar?] bar? ( foo ) !bar? ( foo[-bar] )
foo[bar=] bar? ( foo[bar] ) !bar? ( foo[-bar] )
foo[!bar=] bar? ( foo[-bar] ) !bar? ( foo[bar] )

USE-флаги атомов по умолчанию

Начиная с EAPI 4 USE- зависимости умеют устанавливать значения по умолчанию для флагов, которые могут быть не прописаны в IUSE для данного пакета. Для этого непосредственно вслед за флагом поставьте соответственно (+) или (-): (+) указывает системе вести себя так, словно отсутствующий флаг присутствует и включен, (-) - так, словно отсутствующий флаг присутствует, но отключен.

media-video/ffmpeg[threads(+)] 
media-video/ffmpeg[threads(-)] 

Динамические зависимости

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

переменная_use? ( атом )

Так, чтобы включить библиотеку jpeg, при указании пользователем jpeg в переменной USE, используйте следующую конструкцию:

jpeg? ( media-libs/jpeg )

!переменная_use? ( атом )

Если пакет необходимо включать только при отсутствии определенной опции в пользовательском значении переменной USE, используйте конструкцию, подобную:

!nophysfs? ( dev-games/physfs )

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

переменная_use? ( атом, если истинно ) !переменная_use? ( атом, если ложно )

Для обработки аналогично тернарному оператору языка C используйте два утверждения, одно прямое, другое обратное. Так, если пакет использует GTK2 или GTK1, но не оба вместе, это можно выразить следующим образом:

gtk2? ( =x11-libs/gtk+-2* ) !gtk2? ( =x11-libs/gtk+-1* )

В результате по умолчанию будет использоваться более новая библиотека, GTK2.

|| ( Atom Atom ... )

Если пакет может работать с несколькими различными пакетами, но категория virtual не подходит, может быть использован следующий синтаксис:

|| ( 
    app-games/unreal-tournament 
    app-games/unreal-tournament-goty 
) 

В приведенном примере мы видим, что пакет unreal-tournament существует в обычной версии и в версии goty. Поскольку обе они предоставляют один и тот же базовый набор файлов, другой пакет может использовать любой из них. Добавление категории virtual не подходит, поскольку она не охватывает соответствующие файлы.

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

Например:

|| ( 
    sdl? ( media-libs/libsdl ) 
    svga? ( media-libs/svgalib ) 
    opengl? ( virtual/opengl ) 
    ggi? ( media-libs/libggi ) 
    virtual/x11 
) 

В данном случае будет выбран только один из пакетов, а приоритет определяется порядком их перечисления. Поэтому наиболее вероятным кандидатом является библиотека sdl, далее идут svga, opengl, ggi - и, наконец, по умолчанию, если пользователь не задал явно одну из предлагаемых библиотек, будет использоваться X.

Имейте в виду, что, если один из перечисленных пакетов уже установлен, менеджер пакетов будет руководствоваться этим для удовлетворения зависимости.

Перекрёстная компиляция

Portage поддерживает перекрёстную компиляцию в каталоге, определяемом переменной ROOT.

Хост

В данном случае под хостом понимается платформа, на которой разворачивается процесс сборки - в системе сборки GNU это значение переменной CBUILD. Пакеты хоста хранятся в корневом каталоге системы ("/").

Если ROOT - "/", сюда будут устанавливаться все типы зависимостей. Если это не так, для EAPI, поддерживающих переменную HDEPEND (экспериментальный EAPI 5-hdepend), в каталог "/" будут устанавливаться только пакеты HDEPEND. Для EAPI без поддержки HDEPEND это поведение управляется опцией t --root-deps команды emerge(1); по умолчанию в _хост_ будут устанавливаться только пакеты DEPEND.

Цель

Под целью подразумевается платформа, на которой пакет в дальнейшем будет работать - в системе сборки GNU это значение переменной CHOST. Каталог, где располагается данная система, определяется переменной ROOT. Если этот каталог - не "/", то есть если хост и цель не совпадают, то путь, который хранится в переменной, указывает на каталог, в котором находится цель.

Для EAPI с поддержкой HDEPEND (экспериментальный EAPI 5-hdepend), переменные DEPEND, RDEPEND и PDEPEND содержат списки зависимостей цели - иными словами, перечни пакетов, которые должны быть установлены в каталог ROOT. Для EAPI, которые не поддерживают HDEPEND, за установку в этот каталог отвечает опция --root-deps пакетного менеджера emerge(1). Если данная опция не включена, emerge по умолчанию будет устанавливать сборочные зависимости (то есть пакеты RDEPEND и PDEPEND) только в каталог ROOT.

Подробнее о переменных DEPEND, RDEPEND и HDEPEND см. в разделе ПЕРЕМЕННЫЕ.

USE-флаг targetroot

Для EAPI, которые поддерживают USE-флаг "targetroot", пакетный менеджер автоматически включает данный флаг, если host и target не совпадают - иными словами, если значение ROOT - не "/". Это необходимо в том случае, если пакету в процессе сборки требуется исполняемая копия себя самого. Распространённым примером такой ситуации может служить пакет dev-lang/python, который при компиляции требует запуска интерпретатора Python.

ПЕРЕМЕННЫЕ

Замечания по синтаксису

- В сценариях ebuild можно использовать все переменные, определенные в make.conf(5) (такие как PORTAGE и PORTDIR)
- Присваивая значения переменным в сценарии, нельзя оставлять пробел между именем переменной и знаком равенства.
- Значения переменных могут содержать только символы из таблицы ascii(7). Это требование GLEP 31.

P

Эта переменная содержит имя пакета без указания ревизии сценария. Ее НЕЛЬЗЯ изменять.

xfree-4.2.1-r2.ebuild --> $P=='xfree-4.2.1'

PN

Содержит имя сценария без номера версии.

xfree-4.2.1-r2.ebuild --> $PN=='xfree'

PV

Содержит номер версии без указания ревизии.

xfree-4.2.1-r2.ebuild --> $PV=='4.2.1'

PR

Содержит номер ревизии или, если его не существует, 'r0'.

xfree-4.2.1-r2.ebuild --> $PR=='r2'

PVR

Содержит номер версии с указанием ревизии.

xfree-4.2.1-r2.ebuild --> $PVR=='4.2.1-r2'

PF

Содержит полное имя пакета PN-PVR

xfree-4.2.1-r2.ebuild --> $PF=='xfree-4.2.1-r2'

КАТЕГОРИЯ

Содержит имя категории пакета.

A

CСодержит все исходные файлы, необходимые пакету. Эта переменная не должна определяться: она генерируется автоматически на основе переменной SRC_URI.

WORKDIR = ${PORTAGE_TMPDIR}/portage/${CATEGORY}/${PF}/work

Содержит путь доступа к корневому каталогу сборки пакета. Не изменяйте эту переменную.

FILESDIR = ${PORTDIR}/${CATEGORY}/${PN}/files

Содержит путь доступа к подкаталогу 'files' в каталоге пакета в дереве портежей. Не изменяйте эту переменную.

EBUILD_PHASE

Contains the abreviated name of the phase function that is currently executing, such as "setup", "unpack", "compile", or "preinst".

EBUILD_PHASE_FUNC

Начиная с EAPI 5 содержит полное имя выполняемой в данный момент фазовой функции, например, "pkg_setup", "src_unpack", "src_compile", "pkg_preinst".

EPREFIX

Начиная с EAPI 3 для этой переменной определено смещение, для которого был конфигурирован данный portage в ходе установки. Смещение иногда необходимо в ебилдах и еклассах; в этом случае оно определяется как ${EPREFIX}. EPREFIX не содержит слэша, поэтому отсутствию смещения соответствует пустая строка. Не изменяйте эту переменную.

S = ${WORKDIR}/${P}

Содержит путь доступа к временному каталогу сборки. Эта переменная используется функциями src_compile и src_install. Обе они выполняются в каталоге S. Данная переменная может быть изменена, если необходимо указать другой каталог для распаковки архива пакета.

T = ${PORTAGE_TMPDIR}/portage/${CATEGORY}/${PF}/temp

Содержит путь доступа к временному каталогу. Может использоваться в любых целях.

D = ${PORTAGE_TMPDIR}/portage/${CATEGORY}/${PF}/image/

Содержит путь доступа к временному каталогу для установки. Каждая операция записи, выполняемая не через вспомогательные утилиты и функции (они описаны ниже), должна выполняться в каталоге ${D}. Начиная с EAPI 3 здесь, как правило, приходится учитывать префикс смещения, для которого отведена переменная ${ED} (см.ниже). Не изменяйте эту переменную.

ED = ${PORTAGE_TMPDIR}/portage/${CATEGORY}/${PF}/image/${EPREFIX}/

Начиная с EAPI 3 для удобства содержит путь "${D%/}${EPREFIX}/". Для версий EAPI ниже EAPI 3, не поддерживающих ${ED}, в тех случаях, когда в новых версиях используется ${ED}, вспомогательные функции обращаются к ${D}. Не изменяйте эту переменную.

MERGE_TYPE

Начиная с EAPI 4 переменная MERGE_TYPE может использоваться для запроса текущего типа установки. Для неё допустимы следующие значения:

Значение Расшифровка
binary прекомпилированный пакет назначен для установки
buildonly пакет будет скомпилирован из исходного кода, но не назначен для установки
source пакет будет скомпилирован из исходного кода и назначен для установки

PORTAGE_LOG_FILE

Содержит путь доступа к журналу сборки. Если значение переменной PORT_LOGDIR не назначено, то PORTAGE_LOG_FILE="${T}/build.log".

REPLACED_BY_VERSION

Начиная с EAPI 4 переменная REPLACED_BY_VERSION может использоваться функциями pkg_prerm и pkg_postrm для запроса версии пакета, которая заменит текущую. Переменная пуста, если нет нового пакета; если же такой пакет имеется, переменная будет содержать только номер версии.

REPLACING_VERSIONS

Начиная с EAPI 4 переменная REPLACING_VERSIONS может использоваться pkg_pretend, pkg_setup, pkg_preinst и pkg_postinst для запроса версии (версий) пакета, которую (которые) заменит данный пакет. Переменная пуста, если нет пакетов, которые подлежат замене; если есть хотя бы один такой пакет, переменная содержит, через пробел, номера версии (версий) пакета, которые будет/-ут заменена/-ы. Как правило, эта переменная не содержит более одной версии, хотя, согласно PMS, может содержать несколько их.

ROOT = /

Содержит путь, по которому portage обращается к корневому каталогу текущей файловой системы. Когда пакеты вносят изменения в эту файловую систему, они должны использовать для этого дерево с префиксом ${ROOT}. Часто при этом необходимо учитывать префикс смещения, за который отвечает переменная ${EROOT} (см. ниже). Не изменяйте эту переменную.

EROOT = ${ROOT%/}${EPREFIX}/

Начиная с EAPI 3 для удобства содержит "${ROOT%/}${EPREFIX}/". Не изменяйте эту переменную.

DESCRIPTION = A happy little package

Содержит краткое описание пакета.

EAPI = 0

Определяет версию API ебилда, которой соответствует данный пакет. Если значение не определено, то по умолчанию выставляется "0". Если portage не распознал значение EAPI, пакет будет замаскирован и какие-либо операции над ним будут невозможны; в этом случае сначала необходимо обновить portage. Для максимальной обратной совместимости пакет должен соответствовать как можно более ранней версии EAPI. Обратите внимание, что использование команд ebuild(1) и repoman(1) с пакетом требует версии portage, которая умеет работать с соответствующей данному пакету версией EAPI.

SRC_URI = http://example.com/path/${P}.tar.gz

Содержит перечень URI необходимых файлов исходного кода. Одному файлу при этом могут соответствовать несколько URI. Список обрабатывается в порядке следования элементов: если элемент не удается найти ни на одном из зеркал _GENTOO_MIRRORS, система переходит к следующему элементу. Начиная с EAPI 2 имя файла вывода определенного URI может быть изменено по вашему желанию: для этого справа ставится оператор "->" и, вслед за ним, имя файла вывода, какое вы предпочитаете. Все элементы, в частности, оператор и имя файла вывода, разделяются пробелом.

HOMEPAGE = http://example.com/

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

KEYWORDS = [-~][x86,ppc,sparc,mips,alpha,arm,hppa]

Эта переменная должна содержать корректный список архитектур, под которыми работает/не работает ебилд. По умолчанию, если неизвестно, требует ли ебилд определенной архитектуры, соответствующее значение KEYWORD просто не указывается. Если известно, что ебилд не работает под той или иной архитектурой, укажите ее с минусом, например, -ppc. Если ебилд посылается для включения в дерево, он должен иметь ключ ~arch для архитектур, на которых он ПРЕДПОЛОЖИТЕЛЬНО РАБОТАЕТ. (Чтобы размаскировать для тестирования пакеты, помеченные такими ключевыми словами, укажите ACCEPT_KEYWORDS="~arch" в командной строке или непосредственно в файле make.conf(5)) Полный список архитектур см. в /usr/portage/profiles/arch.list. Старайтесь соблюдать алфавитный порядок списка.

SLOT

Устанавливает слот для пакетов, для работы которых может понадобиться сосуществование несколько версий. Значение по умолчанию - SLOT="0". Если вы не вполне уверены в своих действиях, не пытайтесь экспериментировать с этой переменной. В любом случае, ее значение НИКОГДА не должно оставаться неопределенным.

Начиная с EAPI 5 переменная SLOT может опционально содержать подслот; он указывается вслед за слотом, от которого отделяется слэшем /. Подслот должен представлять собой корректное имя слота. Подслоты используются в тех случаях, когда обновление пакета до новой версии с другим подслотом может потребовать пересборки пакетов-зависимостей. Если подслот в переменной SLOT не определён, подразумевается, что пакет имеет подслот, совпадающий с основным слотом. Подробнее об использовании подслотов см. в разделе Операторы атомов слотов.

LICENSE

Представляет собой перечень, через пробел, лицензий, под которые подпадает пакет. Этот список должен соответствовать содержимому /usr/portage/licenses/. Если той или иной лицензии нет в portage, следует добавить ее явно.

IUSE

Представляет собой практически исчерпывающий список USE-флагов, которые используются в вашем сценарии ebuild. Здесь не фигурируют только те USE-флаги, которые описывают архитектуру (см. KEYWORDS). Начиная с EAPI 1 можно создавать настройки по умолчанию, включая или отключая USE -флаги путем выставления перед именами флагов соответственно + и - . Более подробно о порядке помещения в стек USE -флагов см. в разделе, посвященном переменной USE_ORDER в make.conf(5). С учетом значения по умолчанию USE_ORDER, отрицательные настройки IUSE по умолчанию действуют на USE только на уровне репозитория, поскольку параметры профиля и пользовательские настройки имеют над ними приоритет.

DEPEND

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

Начиная с экспериментального EAPI 5-hdepend список утилит следует хранить не здесь, а в переменной HDEPEND, поскольку пакеты DEPEND будут установлены в каталог цели, а значит, не смогут выполняться при перекрёстной компиляции (подробнее см. в разделе Перекрёстная компиляция).

Здесь вы можете использовать синтаксис, описанный в разделе Зависимости.

RDEPEND

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

EAPI 3 и ниже, если она не определена, по умолчанию будет использовано значение переменной DEPEND. В EAPI 4 и выше переменная RDEPEND никогда не задается явно.

Здесь вы можете использовать синтаксис, аналогичный описанному выше в разделе Зависимости.

HDEPEND

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

Эта переменная была введена в экспериментальном EAPI 5-hdepend и будет установлена в каталог хоста (подробнее см. в разделе Перекрёстная компиляция).

Здесь вы можете использовать синтаксис, аналогичный описанному выше в разделе Зависимости.

PDEPEND

Эта переменная должна содержать перечень всех пакетов, которые следует установить после установки данного пакета (постсборочные зависимости), но фактически они могут быть установлены раньше.

***ВНИМАНИЕ***
Используйте эту возможность только в крайнем случае для прерывания циклических зависимостей!

Здесь вы можете использовать синтаксис, аналогичный описанному выше в разделе Зависимости.

REQUIRED_USE

Начиная с EAPI 4 используется переменная REQUIRED_USE, позволяющая указывать допустимые и недопустимые комбинации USE- флагов. При необходимости можно использовать вложения.

Действие Выражение
Если флаг1 включен, то флаг2 отключен флаг1? ( !флаг2 )
Если флаг1 включен, то флаг2 включен флаг1? ( флаг2 )
Если флаг1 отключен, то флаг2 включен !флаг1? ( флаг2 )
Если флаг1 отключен, то флаг2 отключен !флаг1? ( !флаг2 )
Следует включить любой из флагов (включающее ИЛИ) || ( флаг1 флаг2 флаг3 )
Следует включить только один определенный флаг (исключающее ИЛИ) ^^ ( флаг1 флаг2 флаг3 )
(Начиная с EAPI 5:) Можно включить в крайнем случае один определённый флаг ?? ( флаг1 флаг2 флаг3 )

RESTRICT = [strip,mirror,fetch,userpriv]

Задает ограничения возможностей системы портежей, через пробел. Для задания динамических ограничений можно использовать условные конструкции, аналогичные описанным выше для переменной DEPEND.

binchecks

Отключает проверку бинарных файлов. Используйте это значение ТОЛЬКО в том случае, если такая проверка не имеет смысла (например, для оригинальных заголовков и исходных кодов ядра, которые не имеют бинарных версий). Если опрос бинарных файлов следует пропустить по другим причинам (например, если речь идет о проприетарных бинарных компонентах), см. подробнее в разделе УПРАВЛЯЮЩИЕ QA-ПЕРЕМЕННЫЕ.

bindist

Ограничение по собранным пакетам.

fetch

Аналогично mirror, но файлы не будут выбираться и через переменную SRC_URI.

installsources

Отключает installsources для определенных пакетов. Предназначено для пакетов, имеющих бинарные файлы, которые не совместимы с debugedit.

mirror

Файлы, указанные в переменной SRC_URI, не будут загружаться с зеркал GENTOO_MIRRORS

primaryuri

Файлы будут загружаться сначала с URI, указанных в переменной SRC_URI, и лишь потом с зеркал GENTOO_MIRRORS.

strip

Из результирующих двоичных модулей/библиотек не будет удаляться отладочная информация.

test

src_test не будет запускаться, даже если пользовательское значение FEATURES=test.

userpriv

Отключает userpriv для определенных пакетов.

PROPERTIES = [interactive]

Список параметров через пробел; поддерживается синтаксис условных конструкций.

interactive

На одной или нескольких фазах ебилда пользователю будет предложено ввести данные.

PROVIDE = "virtual/ЦЕЛЬ"

Эту переменную следует использовать, только если пакет имеет виртуальную цель. Например, blackdown-jdk и sun-jdk предоставляют virtual/jdk. Это позволяет пакетам задавать зависимости от virtual/jdk, а не явно от реализации blackdown или sun.

DOCS

Начиная с EAPI 4 эта переменная содержит массив или разделенный пробелами список документационных файлов для функции src_install по умолчанию для установки с помощью dodoc. Если она не определена, будет использован разумный список по умолчанию. См. ниже справку по src_install.

УПРАВЛЯЮЩИЕ QA-ПЕРЕМЕННЫЕ

Замечания по синтаксису

Существует ряд QA-переменных, которые позволяют сценарию управлять некоторыми QA-тестами, выполняемыми portage. В ебилдах к ним следует прибегать как можно реже, поскольку в противном случае теряет смысл сам контроль качества. QA-переменные предназначены прежде всего для сценариев, которые устанавливают бинарные объекты из закрытых исходных кодов, которые не могут быть изменены.

Обратите внимание, что объекты, которые не соответствуют данным правилам, могут выдавать ошибку на некоторых архитектурах.

QA_PREBUILT

Содержит перечень путей доступа к прекомпилированным, бинарным файлам в каталоге образа. Указанные здесь пути добавляются к каждой из перечисленных ниже переменных QA_. Пути могут включать fnmatch-подобные шаблоны, которые встроенными средствами переводятся в регулярные выражения для переменных QA_: последние не поддерживают такие шаблоны, а регулярные выражения - поддерживают. Переводчик просто заменяет "*" на ".*".

QA_TEXTRELS

Может содержать перечень путей доступа к файлам в каталоге образа, которые содержат неустранимые text relocation. Пути могут включать шаблоны fnmatch.

Эта переменная предназначена для использования с бинарными объектами, установленными из закрытых исходных кодов, которые не могут быть изменены.

QA_EXECSTACK

Содержит список путей доступа к объектам в каталоге образа, которые для запуска требуют исполняемый стек. Пути могут включать шаблоны fnmatch.

Эта переменная предназначена для использования с объектами, которым действительно нужен исполняемый стек (а не с теми, которые лишь маркированы соответствующим образом).

QA_WX_LOAD

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

QA_FLAGS_IGNORED

Эта переменная должна содержать список путей доступа к файлам в каталоге образа, которые не содержат .GCC.command.line-секции или содержат .hash-секции. Пути могут содержать регулярные выражения с экранированными символами, заключенными в управляющие кавычки.

Переменная предназначена для использования с файлами бинарных пакетов, которые игнорируют переменные CFLAGS, CXXFLAGS, FFLAGS, FCFLAGS, LDFLAGS.

QA_MULTILIB_PATHS

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

QA_PRESTRIPPED

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

QA_SONAME

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

QA_SONAME_NO_SYMLINK

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

QA_DT_NEEDED

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

QA_DESKTOP_FILE

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

ОБЪЯВЛЕНИЯ PORTAGE

inherit

Inherit обеспечивает поддержку в portage т.н. еклассов функций, внешних по отношению к ебилдам и обладающих наследуемыми методами и данными. Они определяют функции и устанавливают типы данных как drop-in-замены, расширенные, упрощенные подпрограммы для самых обычных задач, с целью упорядочения процесса сборки. Вызов inherit не может зависеть от условий, которые могут меняться в пределах одного ебилда. Спецификация еклассов содержит только их имена, без расширения .eclass. Обратите также внимание, что оператор inherit должен предшествовать объявлению других переменных, если только эти переменные не используются в глобальном контексте еклассов.

ФАЗОВЫЕ ФУНКЦИИ

pkg_pretend

Эта функция может быть определена начиная с EAPI 4; она используется для проверки выполнения различных требований. Она должна вызываться как можно раньше, до того, как будет предпринята попытка удовлетворить зависимости. Если функция обнаружит проблему, она должна вызвать eerror и die. Окружение (переменные, функции, временные каталоги и т.д.), используемое для выполнения pkg_pretend, не сохраняется и, следовательно, не будет доступно на последующих фазах.

pkg_nofetch

Если в переменной RESTRICT указано fetch, эта функция будет запущена, если не удается найти файлы в SRC_URI. Таким образом удобно сообщать пользователю, как получить данные файлы. Достаточно выдать сообщение и нормально завершить работу функции; не завершайте ее вызовом die.

pkg_setup

Эта функция может использоваться в том случае, если пакету требуется особая настройка или проверка, прежде чем будут выполняться другие действия.
Исходный рабочий каталог ${PORTAGE_TMPDIR}.

src_unpack

Эта функция используется для распаковки всех исходных текстов, указанных в A, в каталог WORKDIR. Если эта функция в сценарии ebuild не определена, вызывается unpack ${A}. В этой функции производится наложение патчей и выполняются все остальные изменения, необходимые перед конфигурированием/компиляцией.
Исходный рабочий каталог $WORKDIR.

src_prepare

Все действия по подготовке исходного кода, в частности, наложение патчей, должны выполняться в этой функции. Она поддерживается в версиях EAPI начиная с EAPI 2.
Исходный рабочий каталог $S.

src_configure

Все необходимые действия по конфигурированию должны выполняться в этой функции. Она поддерживается в версиях EAPI начиная с EAPI 2.
Исходный рабочий каталог $S.

src_compile

В EAPI 2 и ниже все необходимые шаги по конфигурированию и компиляции должны выполняться в этой функции; начиная с EAPI 2 она отвечает лишь за компиляцию.
Исходный рабочий каталог $S.

src_test

Запускает все тест-кейсы, определенные для данного пакета. По умолчанию будет выполнено 'make check', а затем 'make test'.
Исходный рабочий каталог $S.

src_install

Должна содержать все необходимое для установки пакета во временном каталоге установки.
Исходный рабочий каталог $S.

Начиная с EAPI 4, если src_install не определена, используется следующее умолчание:

src_install() { 
    if [[ -f Makefile || -f GNUmakefile || -f makefile ]] ; then 
        emake DESTDIR="${D}" install 
    fi 

    if ! declare -p DOCS &>/dev/null ; then 
        local d 
        for d in README* ChangeLog AUTHORS NEWS TODO CHANGES \ 
                THANKS BUGS FAQ CREDITS CHANGELOG ; do 
            [[ -s "${d}" ]] && dodoc "${d}" 
        done 
    elif [[ $(declare -p DOCS) == "declare -a "* ]] ; then 
        dodoc "${DOCS[@]}" 
    else 
        dodoc ${DOCS} 
    fi 
} 

pkg_preinst pkg_postinst

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

pkg_prerm pkg_postrm

Аналогично функциям pkg_*inst, но для исключения пакета из дерева.
Исходный рабочий каталог $PWD.

pkg_config

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

ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ

Фазы

default

Вызывает фазовые функции по умолчанию для текущей фазы выполнения. Эта функция поддерживается начиная с EAPI 2.

default_*

Начиная с EAPI 2 функции pkg_nofetch и src_* с параметрами по умолчанию доступны через функцию с именем, начинающимся с default_ и заканчивающимся соответствующим именем фазовой функции. Например, вызвав функцию default_src_compile, вы фактически запускаете функцию src_compile с параметрами по умолчанию.

Фазовые функции по умолчанию
default_pkg_nofetch
default_src_unpack
default_src_prepare
default_src_configure
default_src_compile
default_src_test

Разное

die [причина]

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

Начиная с EAPI 4 все вспомогательные функции автоматически вызывают die при любой ошибке. Вызывы вспомогательных функций могут иметь префиксом функцию nonfatal, дабы ошибки не рассматривались системой как фатальные.

nonfatal <вспомогательная функция>

Выполняет вспомогательную функцию, но в случае ошибки не вызывает die. Функция nonfatal доступна начиная с EAPI 4.

use <элемент USE>

Если элемент USE указан в переменной USE, функция без дополнительных сообщений возвращает 0 ("истинно"). Если же элемент USE в переменной USE не указан, функция без дополнительных сообщений возвращает 1 ("ложно"). Если вам нужен подробный вывод use, используйте вспомогательную функцию usev.

Пример:

if use gnome ; then 
    guiconf="--enable-gui=gnome --with-x" 
elif use gtk ; then 
    guiconf="--enable-gui=gtk --with-x" 
elif use X ; then 
    guiconf="--enable-gui=athena --with-x" 
else 
    # gui-версия собираться не будет 
    guiconf="" 
fi 

usex <USE-флаг> [вывод, если истинно] [вывод, если ложно] [суффикс, если истинно] [суффикс, если ложно]

Если USE-флаг установлен, то будет выполнено echo [true output][true suffix] (по умолчанию "yes"), иначе echo [false output][false suffix] (по умолчанию "no"). Функция usex доступна начиная с EAPI 5.

use_with <элемент USE> [имя configure] [опция configure]

Эта функция удобна для создания специфических опций, передаваемых сценарию configure. Если элемент USE указан в переменной USE, будет выведена строка --with-[имя configure]=[опция configure]. Если опция configure не указана, будет выведено только --with-[имя configure]. Если элемент USE не указан в переменной USE, будет выведена строка --without-[имя configure]. Если имя configure не указано, вместо него будет использоваться элемент USE. Начиная с EAPI 4 добавлено распознавание пустого аргумента опция configure. В EAPI 3 и ниже пустая опция configure обрабатывается так, как если бы она не была указана.

Примеры:

USE="opengl" 
myconf=$(use_with opengl) 
(новое значение myconf - "--with-opengl") 

USE="jpeg" 
myconf=$(use_with jpeg libjpeg) 
(новое значение myconf - "--with-libjpeg") 

USE="" 
myconf=$(use_with jpeg libjpeg) 
(новое значение myconf - "--without-libjpeg") 

USE="sdl" 
myconf=$(use_with sdl SDL all-plugins) 
(новое значение myconf - "--with-SDL=all-plugins") 

use_enable <USE> [имя configure] [опция configure]

Аналогична описанной выше use_with, но с опциями configure --enable- вместо --with- и --disable- вместо --without-. Начиная с EAPI 4 добавлено распознавание пустого аргумента опция configure. В EAPI 3 и ниже пустая опция configure обрабатывается так, как если бы она не была указана.

hasv <элемент> <список элементов>

Если элемент входит в список элементов, он выводится и функция hasv возвращает 0; в противном случае не выводится ничего, а функция возвращает 1. Как говорилось выше для use, существует версия этой фукции, которая ничего не выводит, has. Используйте has во всех случаях, когда вывод информации не нужен. В частности, никогда не используйте вывод для вычислений.
Разделитель списка элементов определяется переменной IFS. По умолчанию значение этой переменной - ' ' или пробел. Это переменная bash(1).

has_version <категория/пакет-версия>

Проверяет, установлен ли в системе пакет категория/пакет-версия. Параметр может принимать любые значения, допустимые для переменной DEPEND. Функция возвращает 0 если пакет, указанный аргументом, установлен, иначе возвращает 1. Начиная с EAPI 5 здесь можно использовать опцию --host-root, чтобы запрос относился к корню хоста вместо ${ROOT}.

best_version <пакет>

Эта функция ищет пакет в текущей базе данных установленных программ и выдает "лучшую версию" устанавливаемого пакета.Начиная с EAPI 5 здесь можно использовать опцию --host-root, чтобы запрос относился к корню хоста вместо ${ROOT}.

Пример:

VERINS="$(best_version net-ftp/glftpd)"
(теперь VERINS имеет значение "net-ftp/glftpd-1.27", если установлен glftpd-1.27)

Ловушки

register_die_hook [имена функций]

Привязывает вызов одной или более функций к ошибке ебилда, в том числе в случае конфликта с другими пакетами.

register_success_hook [имена функций]

Привязывает вызов одной или более функций к успешной сборке и/или установке ебилда.

Вывод

einfo "текущее сообщение"

Функция аналогична elog, но должна использоваться применительно к сообщениям, не критичным для пользователя (таким как сообщение о ходе сборки или вывод состояния операции).

elog "важная информация"

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

ewarn "предупреждение"

Аналогична einfo, но должна использоваться для вывода пользователю предупреждающих сообщений.

eqawarn "предупреждение QA"

Аналогична einfo, но должна использоваться для вывода пользователю предупреждающих сообщений по QA.

eerror "сообщение об ошибке"

Аналогична einfo, но должна использоваться для вывода пользователю сообщений об ошибках.

ebegin "полезное сообщение"

Аналогично функции einfo, выводит полезное сообщение и сообщает о том, что выполнение последующей операции может занять некоторое время. По завершении должна вызываться функция eend.

eend <состояние> ["сообщение об ошибке"]

После того, как отработала функция ebegin, выводит сообщение, маркированное либо "OK" (при успешном завершении), либо "!!" (в случае ошибки). Если состояние не равно нулю, будет выведено дополнительное сообщение об ошибке.

Распаковка

unpack <исходный код> [другие исходные коды]

Эта функция распаковывает и/или разархивирует исходный код в текущий каталог. Он будет добавлен в переменную DISTDIR.

Компиляция

econf [опции configure]

Эта функция используется вместо configure. Она выполняет следующее:

${ECONF_SOURCE:-.}/configure \ 
    ${CBUILD:+--build=${CBUILD}} \ 
    --datadir="${EPREFIX}"/usr/share \ 
    --host=${CHOST} \ 
    --infodir="${EPREFIX}"/usr/share/info \ 
    --localstatedir="${EPREFIX}"/var/lib \ 
    --prefix="${EPREFIX}"/usr \ 
    --mandir="${EPREFIX}"/usr/share/man \ 
    --sysconfdir="${EPREFIX}"/etc \ 
    ${CTARGET:+--target=${CTARGET}} \ 
    --disable-dependency-tracking \ 
    ${EXTRA_ECONF} \ 
    опции configure || die "econf failed" 

Обратите внимание, что переменная EXTRA_ECONF отведена для пользователей и не предназначена для написания ebuild-сценариев. Если небходимо передать configure дополнительные опции, делайте это с помощью econf. Заметьте также, что, если сценарий configure выдает ошибку, econf автоматически вызывает функцию die. Начиная с EAPI 3 функция econf обращается к переменной ${EPREFIX}, которая в предыдущих версиях EAPI не использовалась, а начиная с EAPI 4 - добавляет --disable-dependency-tracking к аргументам, если в выводе команды configure --help встречается строка disable-dependency-tracking. Начиная с EAPI 5, econf добавляет к аргументам disable-silent-rules, если в выводе configure --help встречается строка_disable-silent-rules_.

emake [опции make]

Эта функция используется вместо make. Она выполняет 'make ${MAKEOPTS} опции make' (согласно настройкам в make.globals); по умолчанию выставлено MAKEOPTS="-j2".

***ВНИМАНИЕ***
Прежде чем использовать emake, убедитесь, что сборка возможна при распараллеливании (make -j2). Важно знать это наверняка, поскольку распараллеливание хотя и не всегда, но может приводить к ошибкам. Если при параллельной сборке пакет выдает ошибку, которую не удается разрешить, вместо 'make' воспользуйтесь 'emake -j1'.

Установка

einstall [опции make]

Эта функция используется вместо make install. Она выполняет следующее:

make \ 
    prefix=${ED}/usr \ 
    datadir=${ED}/usr/share \ 
    infodir=${ED}/usr/share/info \ 
    localstatedir=${ED}/var/lib \ 
    mandir=${ED}/usr/share/man \ 
    sysconfdir=${ED}/etc \ 
    ${EXTRA_EINSTALL} \ 
    опции make \ 
    install 

Не используйте эту функцию вместо 'emake install DESTDIR=${D}': данный способ установки предназначен преимущественно для пакетов, собираемых с помощью make. Не используйте также переменную EXTRA_EINSTALL, так как она зарезервирована для пользователей.

prepall

prepalldocs

prepallinfo

prepallman

prepallstrip

Эти функции удобны в случае, когда пакет устанавливается в каталог ${D} с помощью сценариев (например, make-файлов). Если необходимо гарантировать, что библиотеки являются выполняемыми, файлы aclocal установлены правильно, все файлы doc/info/man упакованы, из выполняемых файлов удалена отладочная информация, используйте этот набор функций.

prepall:

Запускает функции prepallman, prepallinfo, prepallstrip, устанавливает для библиотек права +x, а затем проверяет каталоги aclocal.
Обратите внимание, что функция prepalldocs при этом *не вызывается*.

prepalldocs:

Упаковывает все doc-файлы в каталоге ${ED}/usr/share/doc.

prepallinfo:

Упаковывает все info-файлы в каталоге ${ED}/usr/share/info.

prepallman:

Упаковывает все man-файлы в каталоге ${ED}/usr/share/man.

prepallstrip:

Удаляет отладочную инфомацию из всех выполняемых файлов - в частности, из библиотек.

prepinfo [каталог]

prepman [каталог]

prepstrip [каталог]

Аналогична функциям prepall, но с небольшими различиями.

prepinfo:

Если каталог не указан аргументом, то prepinfo принимает за каталог usr. Затем prepinfo упакует все файлы в каталоге ${ED}/dir/info.

prepman:

Если каталог не указан аргументом, то prepman принимает за каталог usr. Затем prepman упакует все файлы в каталоге ${ED}/dir/man/*/.

prepstrip:

Из всех файлов в каталоге ${ED}/dir удаляется отладочная информация. Можно указывать несколько каталогов.

docompress <путь> [другие пути]

Начиная с EAPI 4 вспомогательная функция docompress используется для управления списками файлов на включение или исключение для необязательной упаковки. Если первый аргумент - -x, каждый из последующих аргументов будет добавлен в список на исключение. Без -x все аргументы будут добавлены в список на включение. Изначально список на включение содержит каталоги /usr/share/doc, /usr/share/info, and /usr/share/man. Изначальный список на исключение содержит каталог_/usr/share/doc/${PF}/html_.

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

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

Если это файл, он может быть упакован, если только он не был исключен (см. ниже).

Если элемент не существует, он будет проигнорирован.

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

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

Если это файл, он не будет упакован.

Если элемент не существует, то он будет проигнорирован.

dosed "s:orig:change:g" <имя файла>

Начиная с EAPI 4, вспомогательная функция dosed не существует. Ебилды должны вызывать команду sed(1) напрямую (принимая, что это sed GNU).

Выполняет команду sed для файла имя файла в каталоге ${ED}. Если никакого выражения не задано, то "s:${D}::g" выступает как выражение по умолчанию. Обратите внимание, что для этого выражения НЕ ИСПОЛЬЗУЕТСЯ префикс смещения.
'dosed\ s:/usr/local:/usr:g \ /usr/bin/some-script' выполняет команду для файла ${ED}/usr/bin/сценарий.

dodir <путь>

Создает каталог в ${ED}.
'dodir\ /usr/lib/apache' создает ${ED}/usr/lib/apache. Обратите внимание, что функции do* будут вызывать функцию dodir.

diropts [опции для install(1)]

Может использоваться для задания опций утилиты install, к которым обращается функция dodir. Значение по умолчанию - -m0755.

into <путь>

Назначает корневой каталог (DESTTREE) для других функций, таких как dobin, dosbin, doman, doinfo, dolib.
Корневой каталог по умолчанию - /usr.

keepdir <путь>

Заставляет portage оставить каталог, даже если он пуст. Работает аналогично функции dodir.

dobin <бинарный файл> [другие бинарные файлы]

Устанавливает один или несколько бинарных файлов в каталог DESTTREE/bin. Функция создает все необходимые каталоги.

dosbin <бинарный файл> [другие бинарные файлы]

Устанавливает один или несколько бинарных файлов в каталог DESTTREE/sbin. Функция создает все необходимые каталоги.

doinitd <сценарий init.d> [другие сценарии init.d]

Устанавливает сценарии init.d для Gentoo по стандартному для init.d пути (/etc/init.d/). Функция создает все необходимые каталоги.

doconfd <файл conf.d> [другие файлы conf.d]

Устанавливает файлы conf.d для Gentoo по стандартному для conf.d пути (/etc/conf.d/). Функция создает все необходимые каталоги.

doenvd <запись env.d> [другие записи env.d]

Устанавливает записи env.d для Gentoo по стандартному для env.d пути (/etc/env.d/). Функция создает все необходимые каталоги.

dolib <библиотека> [другие библиотеки]

dolib.a <библиотека> [другие библиотеки]

dolib.so <библиотека> [другие библиотеки]

Устанавливает одну или несколько библиотек в каталог DESTTREE/lib. Функция создает все необходимые каталоги.

libopts [опции для install(1)]

Может использоваться для задания опций утилите install, к которым обращаются функции dolib. Значение по умолчанию - -m0644.

doman [-i18n=<локаль>] <man-файл> [другие man-файлы]

Устанавливает файлы man-руководств в каталог /usr/share/man/man[0-9], в зависимости от суффикса файла. Если это необходимо, файлы будут упакованы. Опция -i18n позволяет устанавливать руководства на определенном языке. Затем man-файлы будут установлены в каталог /usr/share/man/<локаль>/man[0-9]. Начиная с EAPI 2 man-страницы для определенной локали, в имени которых содержится суффикс локали, устанавливаются в каталог /usr/share/man/<локаль>/man[0-9], причем часть имени файла, обозначающая локаль, удаляется, а опция -i18n будет проигнорирована. Например, если используется EAPI 2, man-страница с именем foo.<локаль>.1 будет установлена как /usr/share/man/<локаль>/man1/foo.1. Начиная с EAPI 4 атрибут опции -i18n имеет приоритет перед суффиксом локали в имени файла.

dohard <имя файла> <имя ссылки>

Начиная с EAPI 4 вспомогательная функция dohard не существует. Ебилды должны вызывать утилиту ln(1) напрямую.

dosym <имя файла> <имя ссылки>

Выполняет команду ln, создавая тем самым символическую ссылку.

doheader <имя файла> [другие файлы]

Устанавливает данные файлы заголовков в каталог /usr/include/ с правами по умолчанию 0644 (можно переопределить через функцию insopts). Опция -r включит в обработку содержимое подкаталогов. Вспомогательная функция doheader доступна начиная с EAPI 5.

dohtml _ [-a типы-файлов] [-r] [-x игнорируемые-каталоги] [файлы-и-каталоги]_

Устанавливает файлы из списка файлов (разделяются пробелом) в каталог /usr/share/doc/${PF}/html, если файлы имеют расширение .htm, .html, .css, .js, .gif, .jpeg, .jpg или .png. Опция -a позволяет ограничить действие определенными типами файлов, опция -A добавляет типы к перечню по умолчанию, -x определяет каталоги, которые необходимо пропустить (по умолчанию пропускается CVS), -p определяет префикс документа, с опцией -r каталоги обрабатываются рекурсивно.

doinfo <info-файл> [другие info-файлы]

Устанавливает info-файлы в каталог DESTDIR/info. Все они автоматически архивируются с помощью gzip. Функция создает все необходимые каталоги.

domo _<файл локали> [другие файлы локали] _

Устанавливает файлы локали в каталог DESTDIR/usr/share/locale/[ЯЗЫК], исходя из их суффикса. Функция создает все необходимые каталоги.

fowners <права доступа> <файл> [файлы]

fperms <права доступа> <файл> [файлы]

Выполняет chown (fowners) или chmod (fperms), назначая тем самым права доступа к файлам.

insinto [путь]

Устанавливает корневой каталог для функции doins.
По умолчанию им является /.

insopts [опции для install(1)]

Может быть использована для задания опций утилите install, используемой в функции doins. Значение по умолчанию - -m0644.

doins <файл> [другие файлы]

Устанавливает файлы по пути, который управляется функцией insinto. Эта функция использует утилиту install(1). Все необходимые каталоги будут созданы. Опция -r устанавливает рекурсивный режим. Начиная с EAPI 4 и doins, и newins сохраняют символические ссылки, тогда как в EAPI 3 и более ранних версиях символические ссылки не сохранялись, а происходило разыменование.

exeinto [путь]

Устанавливает корневой каталог для функции doexe.
По умолчанию им является /.

exeopts [опции для install(1)]

Может использоваться для задания опций утилите install, используемых в функции doexe. Значение по умолчанию - -m0755.

doexe <исполняемый файл> [другие исполняемые файлы]

Устанавливает исполняемые файлы в каталог, управляемый exeinto. Эта функция использует утилиту install(1). Функция создает все необходимые каталоги.

docinto [путь]

Назначает подкаталог, используемый функциями dodoc и dohtml при установке в дерево документов (на основе /usr/share/doc/${PF}/). По умолчанию подкаталога либо нет, либо установлено значение "".

dodoc <документ> [другие документы]

Устанавливает один или несколько документов в каталог /usr/share/doc/${PF}/<путь docinto>. Документы помечаются для упаковки. Функция создает все необходимые каталоги. Начиная с EAPI 4 поддерживается рекурсивная обработка подкаталогов; чтобы включить ее, используйте опцию -r.

newbin <прежний файл> <новое имя файла>

newsbin <прежний файл> <новое имя файла>

newinitd <прежний файл> <новое имя файла>

newconfd <прежний файл> <новое имя файла>

newenvd <прежний файл> <новое имя файла>

newlib.so <прежний файл> <новое имя файла>

newlib.a <прежний файл> <новое имя файла>

newman <прежний файл> <новое имя файла>

newinfo <прежний файл> <новое имя файла>

newins <прежний файл> <новое имя файла>

newexe <прежний файл> <новое имя файла>

newdoc <прежний файл> <новое имя файла>

Все эти функции работают аналогично функциям do, но только с одним файлом, который устанавливается с [новым именем]. Начиная с EAPI 5, если первый параметр - дефис (-), происходит обращение к стандартному вводу.

ПРИМЕРЫ

# Copyright 1999-2009 Gentoo Foundation 
# Distributed under the terms of the GNU General Public License v2 
# $Header: $ 

EAPI="5" 

inherit some_eclass another_eclass 

DESCRIPTION="Super-useful stream editor (sed)" 
HOMEPAGE="http://www.gnu.org/software/sed/sed.html" 
SRC_URI="ftp://alpha.gnu.org/pub/gnu/${PN}/${P}.tar.gz" 

LICENSE="GPL-2" 
SLOT="0" 
KEYWORDS="~x86" 
IUSE="" 

RDEPEND="" 
DEPEND="nls? ( sys-devel/gettext )" 

src_configure() { 
    econf 
        --bindir="${EPREFIX}"/bin 
} 

src_install() { 
    emake DESTDIR="${D}" install 
    dodoc NEWS README* THANKS AUTHORS BUGS ChangeLog 
} 

ФАЙЛЫ

Сценарий /usr/sbin/ebuild.sh.

Вспомогательные приложения в каталоге /usr/lib/portage/bin.

/etc/make.conf

Содержит переменные для процесса сборки; они имеют приоритет над заданными в make.defaults.

/usr/share/portage/config/make.globals

Содержит переменные по умолчанию для процесса сборки. Редактировать значения следует не здесь, а в файле /etc/make.conf.

/etc/portage/color.map

Содержит переменные для пользовательских настроек цветного вывода.

СМ. ТАКЖЕ

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

БАГТРЕКЕР

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

АВТОРЫ

ПЕРЕВОД

 
 

Октябрь 2012

Спасибо!