10. Использование ebuild

emerge и ebuild

Программа ebuild — это низкоуровневый интерфейс системы Portage. С ее помощью можно выполнять определенные действия над заданными сборками ebuild. Например, вы можете самостоятельно выполнить отдельные этапы установки.

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

Ручная установка программ

Извлечение исходных кодов и проверка контрольных сумм

Каждый раз, когда вы вызываете ebuild для какого-то ebuild-файла, проверяется совпадение контрольной суммы всех задействованных файлов с указаной в файлах Manifest или files/digest-<имя>-<версия>. Проверка выполняется после загрузки исходных кодов.

Чтобы загрузить исходные коды с помощью ebuild, запустите:

ebuild путь/к/файлу-ebuild fetch

Если контрольная сумма md5 сборочного файла не совпадает с той, что указана в файле Manifest, или же один из загруженных файлов не совпадает с описанием в файле files/digest<пакет>, вы получите сообщение об ошибке, похожее на такое:

!!! File is corrupt or incomplete. (Digests do not match)
>>> our recorded digest: db20421ce35e8e54346e3ef19e60e4ee
>>>  your file's digest: f10392b7c0b2bbc463ad09642606a7d6

(!!! Файл поврежден или усечен. (Контрольные суммы не совпадают) )

На следующей строке указывается проблемный файл.

Если вы абсолютно уверены, что загруженные исходные коды и сам сборочный файл ebuild именно те, что вам нужны, можете пересоздать файлы Manifest и digest-<пакетe>, используя фукцию digest программы ebuild. Пример создания новых файлов Manifest и digest:

ebuild путь/к/файлу-ebuild digest

Распаковка исходных кодов

Чтобы рапаковать исходные коды в /var/tmp/portage (или любой другой каталог, указанный в /etc/make.conf), запустите функцию unpack программы ebuild. Пример распаковки исходных кодов:

ebuild путь/к/файлу-ebuild unpack

Эта команда выполнит функцию src_unpack() программы ebuild (которая по умолчанию просто выполняет распаковку, если функция src_unpack() не определена). Все необходимые заплатки накладываются также на этом этапе.

Компиляция исходных кодов

Следующий шаг в процессе установки — компиляция исходных кодов. Для этого выполняется функция src_compile() вашего сборочного файла. Если нужно, заодно выполняется конфигурация. Пример компиляции исходных кодов:

ebuild путь/к/файлу-ebuild compile

Если вы хотите изменить инструкции компиляции, советуем отредактировать функцию src_compile(). Однако, вы можете также обмануть Portage, заставив ее поверить, что программа ebuild уже завершила компиляцию. Запустите нужные команды самостоятельно и создайте пустой файл .compile в рабочем каталоге:

touch .compiled

Установка файлов во временное место

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

ebuild путь/к/файлу-ebuild install

Помещение файлов в рабочую файловую систему

Последний этап — перенос всех файлов в рабочую файловую систему и их регистрация в системе Portage. В ebuild этот этап называется "qmerge", и включает следующие действия:

  • выполняется функция pkg_preinst(), если она определена
  • все файлы копируются в рабочую файловую систему
  • файлы регистрируются в системе Portage
  • выполняется функция pkg_postinst(), если она определена

Запустите функцию qmerge программы ebuild, чтобы выполнить этот этап:

ebuild путь/к/файлу-ebuild qmerge

Очистка временного каталога

Наконец, можно очистить временный каталог, используя команду clean программы ebuild:

ebuild путь/к/файлу-ebuild clean

Дополнительные возможности Ebuild

Запуск всех команд установки

С помощью функции merge программы ebuild, можно запустить команды извлечения, распаковки, компиляции, установки и помещения за один раз:

ebuild путь/к/файлу-ebuild merge

Выполнение действий по настройке

В некоторых приложениях содержатся инструкции по дальнейшей настройке установленного пакета. Эти инструкции могут потребовать участия пользователя, и, следовательно, не выполняться автоматически. Для запуска шагов настройки, указанных в необязательной функции config() сборочного файла, используйте команду config программы ebuild. Пример настройки пакета:

ebuild путь/к/файлу-ebuild config

Сборка пакета (RPM)

Вы можете попросить Portage создать двоичный пакет или даже RPM из вашего сборочного файла, воспользовавшись командами package и rpm, соответственно. Эти команды несколько различаются:

  • команда package во многом похожа на merge, выполняя все необходимые шаги (извлечение, распаковку, компиляцию, установку) перед созданием пакета
  • команда rpm собирает пакет RPM из файлов созданных после запуска окончания функции install программы ebuild

Пример создания пакетов:

#(cоздание двоичного пакета, совместимого с Portage)
ebuild путь/к/файлу-ebuild package

#(создание пакета RPM)
ebuild путь/к/файлу-ebuild rpm

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

Дополнительная информация

За дополнительными сведениями о системе Portage, программе ebuild и сценариях ebuild обращайтесь к следующим страницам справки man:

man portage    (сама система Portage)
man emerge     (команда emerge)
man ebuild     (команда ebuild)
man 5 ebuild   (синтаксис файлов ebuild)

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

Спасибо!