配置文件保护
Portage 包含一个配置文件保护系统,这意味着 ebuild 不用担心意外地覆盖 /etc
中的文件。这被称为“保护”,由 CONFIG_PROTECT
和 CONFIG_PROTECT_MASK
变量控制。
任何在 CONFIG_PROTECT
中列出的目录(及其所有子目录),除了在 CONFIG_PROTECT_MASK
中列出的目录(及其子目录),都会在 Portage 将镜像从 DESTDIR
复制到 ROOT
时自动“保护”。Portage 不会直接安装受保护的文件,而是将其安装为 ._cfg0000_filename
。然后,用户可以根据需要使用 etc-update
或 dispatch-conf
文件来处理这些文件。
软件包不得通过 pkg_postinst
或类似方法来尝试覆盖此系统。如果您需要以特定方式重命名、删除或更改文件,则应显示一条消息通知用户。
ebuild 可以使用 Portage 的 环境文件 机制来追加到 CONFIG_PROTECT_MASK
变量。ebuild 必须生成一个 env.d
文件,然后使用 doenvd
或 newenvd
安装它。 emerge
将调用 env-update
并生成适当的环境以继续其合并操作。以下代码片段(来自 src_install
)将导致 /etc/test.cfg
自动合并,而无需在合并软件包后调用 etc-update
newenvd - 99my-pkg <<< "CONFIG_PROTECT_MASK=\"/etc/test.cfg\""