EBUILD(1)

НАЗВАНИЕ
ebuild - низкоуровневый интерфейс системы Portage

СИНТАКСИС
ebuild файл команда [команда]...

ОПИСАНИЕ
Программа ebuild представляет собой низкоуровневый интерфейс системы Portage. Она обеспечивает возможность непосредственного взаимодействия со сценарием ebuild при помощи специальных подкоманд или групп команд, выполняемых в контексте данного файла, и функций. Утилита ebuild принимает в качестве аргументов ebuild-сценарий и одну или более команд, подвергает сценарий синтаксическому анализу и выполняет указанные команды. Имеются отдельные команды для загрузки исходных файлов, их распаковки, компиляции, установки объектных файлов во временный каталог image, установки образа в локальную файловую систему, создания архива пакета из образа и т.д.

ФАЙЛ
Должен быть рабочим ebuild-сценарием. Подробнее смотри в руководстве по ebuild(5).

КОМАНДЫ
По умолчанию portage выполняет все функции по порядку вплоть до указанной, кроме функций, которые уже были вызваны в предыдущих вызовах ebuild. Например, если вы дадите команду compile, то вызовете тем самым и предшествующие ей функции (такие как setup и unpack), если они не были запущены в предыдущем запуске ebuild. Если вы хотите быть уверенным, что все они были выполнены, вам нужно сначала использовать команду clean. Если вы хотите, чтобы запускалась только одна команда, вам следует добавить опцию noauto к значению переменной окружения FEATURES. Подробнее смотри в справке по make.conf(5).

help
    Выводит справочную информацию о программе в сжатом изложении, а также целый ряд сведений о пакете.

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

clean
    Очищает временный каталог сборки, созданный Portage специально для этого файла ebuild. Временный каталог сборки обычно содержит извлеченный из архива исходный код, а также, возможно, так называемый установочный образ (все файлы, которые будут установлены в локальную файловую систему или сохранены в пакете). Расположение каталога сборки определяется значением переменной PORTAGE_TMPDIR. Чтобы узнать ее текущее значение, выполните emerge --info. О том, как переопределить эту переменную, смотри make.conf(5). Примечание: Portage удаляет практически все данные, оставшиеся после успешной установки пакета, за исключением тех случаев, когда в переменной FEATURES явно указано 'noclean'. Если вы добавите noclean в значение FEATURES, очень скоро большой объем дискового пространства будет занят ненужными файлами. Не рекомендуется пользоваться этим режимом постоянно, а лишь в том случае, если исходники пакетов потребуются вам после установки. Впрочем, возможно и ручное удаление этих файлов: для этого следует выполнить rm -rf /var/tmp/portage.

fetch
    Проверяет, все ли источники данных, фигурирующие в SRC_URI, доступны в каталоге DISTDIR (подробнее см. в make.conf(5)) и имеют верную контрольную сумму. Если исходные коды недоступны, будет предпринята попытка загрузить их с серверов, адреса которых указаны в SRC_URI. Если для того или иного файла имеется несколько адресов загрузки, Portage проверит каждый из них и выберет тот сервер, который ближе. (Точность этого выбора на данный момент не гарантируется.) В первую очередь всегда обрабатываются зеркала Gentoo Linux, содержащиеся в переменной GENTOO_MIRRORS. Если по какой-либо причине контрольная сумма текущих или только что загруженных исходных кодов не совпадает с контрольной суммой, записанной в файле files/digest-[пакет]-[версия-ревизия], выводится предупреждение, и программа ebuild завершает работу с кодом ошибки 1.

digest
    В настоящее время - эквивалент команды manifest.

manifest
    Обновляет Manifest-файл пакета. В результате создаются контрольные суммы для всех файлов, обнаруженных в одном каталоге с обрабатываемым файлом ebuild, а также содержимое вложенных каталогов подкаталога files. При этом контрольные суммы генерируются и для всех файлов, перечисленных в SRC_URI для каждого файла ebuild. Подробнее о поведении данной команды, см. в разделе о смысле значения assume-digests переменной FEATURES справочного руководства по make.conf(5). Если вы не хотите, чтобы дайджесты принимались неявно, см. опцию --force.

unpack
    Извлекает исходные коды в подкаталог каталога сборки (BUILD_PREFIX), вызывая функцию src_unpack() внутри файла ebuild. Если функция src_unpack() не определена, для распаковки всех файлов, перечисленных в SRC_URI, будет использована стандартная src_unpack(). Как правило, исходники распаковываются в каталог ${BUILD_PREFIX}/[пакет]-[версия-ревизия]/work. Обращаться к нему можно с помощью переменной ${WORKDIR}. Создавая файл ebuild самостоятельно, убедитесь, что переменная S (каталог исходных файлов), определенная в начале ebuild-сценария, указывает на каталог, в котором действительно содержатся распакованные исходные коды. По умолчанию он определяется как ${WORKDIR}/${P}, поэтому, как правило, ничего не требуется исправлять. Функция src_unpack() также отвечает за наложение патчей перед компиляцией пакетов.

prepare
    Подготавливает извлеченные из архива исходные коды, вызывая функцию src_prepare(), определенную в ebuild-файле. При запуске src_prepare() текущим рабочим каталогом становится ${S}. Данная функция поддерживается, начиная с EAPI 2.

configure
    Производит конфигурирование распакованных исходных кодов, вызывая функцию src_configure(), определенную в ebuild-файле. При запуске src_configure() текущим рабочим каталогом становится ${S}. Данная функция поддерживается начиная с EAPI 2.

compile
    Компилирует распакованные исходные коды, вызывая функцию src_compile(), определенную в ebuild-файле. При запуске src_compile() текущим рабочим каталогом становится ${S}. По завершении работы src_compile() исходные коды должны быть полностью скомпилированы.

test
    Выполняет специальные тесты для отдельных пакетов, проверяя сборку.

preinst
    Выполняет специальные действия для отдельных пакетов, которые требуется произвести до установки пакета в текущую файловую систему.

install
    Устанавливает пакет во временный каталог установки, вызывая функцию src_install(). По завершении каталог установки в (${BUILD_PREFIX}/[пакет]-[версия-ревизия]/image) будет содержать все файлы, которые должны быть либо установлены в текущую файловую систему, либо включены в бинарный пакет.

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

qmerge
    Эта функция устанавливает все файлы в каталоге установки на текущую файловую систему. Это производится следующим образом: сначала запускается функция pkg_preinst() (если она существует). Затем все файлы устанавливаются в файловую систему, а их контрольные суммы записываются в /var/db/pkg/${CATEGORY}/${PN}-${PVR}/CONTENTS. Наконец, по завершении установки всех файлов выполняется функция pkg_postinst() (если она существует).

merge
    Обычно для установки файла ebuild, необходимо последовательно выполнить следующие действия: fetch, unpack, compile, install и qmerge. Если вам нужно только установить файл ebuild, вы можете использовать данную команду: она сама выполнит все перечисленные операции и остановится в процессе выполнения только в том случае, если какая-либо функция отрабатывает с ошибкой.

unmerge
    Эта команда сначала вызывает функцию pkg_prerm() (если она существует). Затем она удаляет все файлы из текущих файловых систем, файл содержимого пакета для которых имеет верную контрольную сумму и время изменения. Все пустые каталоги удаляются вместе с вложенными. Наконец, команда запускает функцию pkg_postrm() (если она существует). Можно сначала установить новую версию пакета, а затем удалить прежнюю - собственно, именно в этом заключается рекомендуемый метод обновления.

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

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

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

package
    Эта команда очень напоминает merge, за исключением того, что после загрузки, распаковки, компиляции и установки создается .tbz2-архив бинарного пакета, который затем сохраняется в каталоге PKGDIR (см. make.conf(5)).

rpm Собирает RPM-пакет RedHat из файлов во временном каталоге установки. На данный момент сведения о зависимостях файла ebuild не включаются в RPM.

ОПЦИИ

--debug
    Запустить bash с опцией -x, в результате чего стандартный вывод будет включать подробную отладочную информацию.

--color < y | n >
    Включить или отключить цветное отображение. Эта опция переопределяет значение переменных NO_COLOR и NOCOLOR (см. make.conf(5)) и может быть использована для принудительного назначения цвета в том случае, если стандартный вывод - не терминал (по умолчанию цвет включен только в том случае, если стандартный вывод - терминал).

--force
    При использовании в связке с командой digest или manifest данная опция принудительно генерирует новые дайджесты для всех файлов исходного кода, относящихся к данному файлу ebuild. Если в каталоге ${DISTDIR} требуемых исходников нет, они будут автоматически загружены.

--ignore-default-opts
    Не использовать переменную окружения EBUILD_DEFAULT_OPTS.

--skip-manifest
    Пропустить проверку Manifest-файлов.

БАГТРЕКЕР
Об обнаруженных ошибках сообщайте на https://bugs.gentoo.org/

АВТОРЫ
Achim Gottinger <achim@gentoo.org>
Daniel Robbins <drobbins@gentoo.org>
Nicholas Jones <carpaski@gentoo.org>
Mike Frysinger <vapier@gentoo.org>

ФАЙЛЫ

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

/etc/portage/color.map
    Содержит переменные, позволяющие назначать пользовательские настройки цветного вывода.

СМОТРИ ТАКЖЕ
emerge(1), ebuild(5), make.conf(5), color.map(5)

Сценарий /usr/lib/portage/bin/ebuild.sh.

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

ПЕРЕВОД
Переводчик: Елена Гаврилова <e.vl.gavrilova@yandex.ru>
Правка и обновление: Романов Владимир <blueboar2@gmail.com>
Переведенная версия соответствует английской версии от 2013-07-31