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

Обновлено 24 сентября 2019

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@ (или любой другой каталог, указанный в make_conf), запустите функцию unpack программы <[HTML_REMOVED]>. Пример распаковки исходных кодов:

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

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

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

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

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

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

touch .compiled

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

Следующий шаг — установка всех необходимых файлов во временный каталог. В него помещаются все файлы, подлежащие включению в рабочую файловую систему. Вы можете выполнить этот этап, запустив функцию установки программы <[HTML_REMOVED]>, которая исполняет функцию 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)

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