Working with ebuild

Updated 4 July 2019

emerge and ebuild

The ebuild program is a low-level interface of Portage. С ее помощью можно выполнять определенные действия над заданными сборками ebuild. Например, вы можете самостоятельно выполнить отдельные этапы установки.

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

Manual installation

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

Каждый раз, когда вы вызываете ebuild для какого-то ebuild-файла, проверяется совпадение контрольной суммы всех задействованных файлов с указаной в файлах Manifest или files/digest-<имя>-<версия>. The check is performed after downloading the sources.

To fetch sources with ebuild, run:

ebuild path/to/file-ebuild fetch

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

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

The next line highlights the defective file.

If you are absolutely sure that the sources you downloaded and the ebuild file itself are exactly what you need, you can regenerate the Manifest and digest-[HTML_REMOVED] files using the digest function of ebuild. Here is how Manifest and digest are created:

ebuild path/to/file-ebuild digestra

Extract sources

Чтобы рапаковать исходные коды в @/var/tmp/portage@ (или любой другой каталог, указанный в make_conf, запустите функцию unpack программы <[HTML_REMOVED]>. Here is how to extract source code:

ebuild path/to/file-ebuild unpack}

This command will execute the src_unpack() function of ebuild (which by default simply unpacks a file if the src_unpack() function has not been defined). That is when all necessary patches are applied, too.

Compile from source

The next step is compilation. To compile, the src_compile() function of your ebuild will be used. Setup will be done too, if necessary. Here is how to compile:

ebuild path/to/file-ebuild compile

Если вы хотите изменить инструкции компиляции, советуем отредактировать функцию src_compile(). Однако, вы можете также обмануть Portage, заставив ее поверить, что программа ebuild уже завершила компиляцию. Run the required commands manually and create an empty .compile file in the operating directory:

touch .compiled

Move files to temporary location

At the next step, you must put collect all necessary files in a temporary directory. It will contain all files to be integrated in the operating filesystem. Вы можете выполнить этот этап, запустив функцию установки программы <[HTML_REMOVED]>, которая исполняет функцию src_install() сборочного файла:

ebuild path/to/file-ebuild install

Move files to actual filesystem

Последний этап — перенос всех файлов в рабочую файловую систему и их регистрация в системе Portage. ebuild calls this step qmerge. It includes the following:

  • if applies, the pkg_preinst() function is called
  • all files are copied to the operating filesystem
  • and registered in Portage
  • if applies, the pkg_postinst() function is called

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

ebuild path/to/file-ebuild qmerge

Clean temporary files

You can remove temporary data with theclean function of ebuild:

ebuild path/to/file-ebuild clean

Go even further with ebuild

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

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

ebuild path/to/file-ebuild merge

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

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

ebuild path/to/file-ebuild config

RPM compilation

Вы можете попросить Portage создать двоичный пакет или даже RPM из вашего сборочного файла, воспользовавшись командами package и rpm, соответственно. These two commands are somewhat different.

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

Examples:

creating a binary package, compatible with Portage:

ebuild path/to/file-ebuild package

creating an RPM package:

ebuild path/to/file-ebuild rpm

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

Getting more info

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

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

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