dpkg什么时候会删除目录?

dpkg什么时候会删除目录?

在 Debian Jessie 中/etc/cron.d/有一个名为 的文件.placeholder,其内容如下:

# DO NOT EDIT OR REMOVE
# This file is a simple placeholder to keep dpkg from removing this directory

现在,.placeholder 文件是提及各种各样的地方,但在什么条件下才有必要呢? dpkg 什么时候会决定删除 下的空目录/etc

答案1

这可能是历史行为遗留下来的dpkg。如今,拆除是在remove.c,并且仅当目录为空并且当前包(正在删除)是唯一使用它们的包时才会删除目录(这是在help.c,在dir_is_used_by_others()dir_is_used_by_pkg())。

查看该cron包可以发现占位符是在 2004 年引入的,作为 bug 的补救措施#217760;可能当时dpkg没有像现在那样彻底检查,这样如果删除软件包导致目录变空,那么该目录也会被删除。所以cron会安装/etc/cron.d,但该目录内没有文件;然后另一个包会在那里放置一个文件,删除该包会删除该文件和目录(因为它随后变为空)。这打破了cron,所以为了避免这个错误,添加了一个占位符。

相关内容