Ebuild 阶段函数
从源安装软件包时,函数调用顺序为 pkg_pretend
,pkg_setup
,src_unpack
,src_prepare
,src_configure
,src_compile
,src_test
(可选,FEATURES ="test"
),src_install
,pkg_preinst
,pkg_postinst
。从二进制文件安装软件包时,函数调用顺序为 pkg_pretend
,pkg_setup
,pkg_preinst
,pkg_postinst
。由于尚未从一开始就引入某些阶段,因此您可以查看EAPI 使用和描述以获取概述,其中介绍了在哪个 EAPI 中引入了哪些内容。
pkg_pretend
函数将用于执行各种早期的完整性检查,例如确保启用了某些内核选项。重要的是要记住,pkg_pretend
与其余阶段功能序列分开运行。因此,没有节省环境或传播到下一阶段。此外,在此阶段不能保证满足 ebuild 依赖关系。
卸载软件包时,将调用 pkg_prerm
和 pkg_postrm
函数。 pkg_config
函数用于任何特殊的软件包配置——仅在用户明确请求时运行。当 RESTRICT ="fetch"
包需要获取某些 SRC_URI
组件时,将使用 pkg_nofetch
函数。
在从 pkg_preinst
到 pkg_postinst
的过渡之间,文件从 沙盒 临时安装位置复制到活动文件系统,并且 Portage 记录已安装文件的摘要。
在测试或调试时,可以使用 ebuild 命令指示 Portage 从 ebuild
执行特定功能,有关更多信息,请参见 ebuild(1)
手册页。
下载软件包的源代码是在上述任何一个阶段之前进行的,因此,emerge --fetchonly
应该执行您需要的所有网络访问(除非您正在使用实时 ebuild)。超出此范围的网络访问将不会在本地缓存(例如,在${DISTDIR}
中,请参阅预定义的只读变量),这使得很难生成可复制的内部版本(请参见 VCS Sources 的缺点)。通过使用本地文件,扩展 SRC_URI
(请参阅 Ebuild 定义变量)等,避免在任何阶段进行网络访问。
默认阶段函数是:
缺省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
default_src_install
在上述每个阶段都重新定义了一个名为default
的函数,因此它将调用与当前阶段相对应的default_*
函数。例如,在src_compile
阶段对默认函数的调用等效于对default_src_compile
函数的调用。