При просмотре файловой системы я встретился с названным файлом .placeholder
в /etc/cron.d/
. В файле было записано следующее:
#DO NOT EDIT OR REMOVE
#This file is a simple placeholder to keep dpkg from removing this directory
Так интересно, делает dpkg
удаляет каталоги в его желании? Или более точно; какие типы каталогов делает dpkg
удалить?
dpkg
удаляет пустые каталоги, моясь после пакетов что Вы remove1. Они .placeholder
файлы, которые Вы видите в различном cron
- связанные каталоги принадлежат cron
пакет. Конечно, cron
пакет не добавляет заданий к этим каталогам. Поэтому собой, они были бы пустыми каталогами. Однако другие пакеты могут бросить файлы в эти каталоги для активации заданий крона, или непосредственно или путем сценариев.
Что произойдет, когда Вы произведете чистку всех установленных пакетов, которые добавляют задания крона? Затем dpkg
попытается удалить эти теперь пустые каталоги для чистки. Предотвратить это, cron
добавляет .placeholder
файлы. sudo
добавляет a README
кому: /etc/sudoers.d
.
Соответственно, dpkg
не удалит непустые каталоги. Если:
dpkg
предупредит Вас, что это не удаляет тот непустой каталог. Например:
$ dpkg -S /etc/php5
php5-cli, php5-json: /etc/php5
$ sudo apt-get remove --purge php5-cli
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED
php5-cli*
0 to upgrade, 0 to newly install, 1 to remove and 8 not to upgrade.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n]
(Reading database ... 479105 files and directories currently installed.)
Removing php5-cli (5.6.11+dfsg-1+deb.sury.org~trusty+1) ...
Purging configuration files for php5-cli (5.6.11+dfsg-1+deb.sury.org~trusty+1) ...
$ sudo apt-get remove --purge php5-json
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED
php5-json*
0 to upgrade, 0 to newly install, 1 to remove and 8 not to upgrade.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n]
(Reading database ... 479104 files and directories currently installed.)
Removing php5-json (1.3.7-1+deb.sury.org~trusty+1) ...
Purging configuration files for php5-json (1.3.7-1+deb.sury.org~trusty+1) ...
WARN: php5-common has been removed, you need to cleanup /etc/php5 yourself.
dpkg: warning: while removing php5-json, directory '/etc/php5/mods-available' not empty so not removed
Различные модули PHP программно добавили файлы к /etc/php5
, так dpkg
не удалил тот каталог даже при том, что, что, казалось, было последним пакетом, владеющим им, очищался.
Для контрастирования я переустановил php5-json
, который ввел обновленную версию, где php5-common
также теперь владеет /etc/php5
, где ранее это добавило файлы программно:
$ dpkg -S /etc/php5
php5-json, php5-common: /etc/php5
$ sudo apt-get purge php5-{readline,common,mysql}
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package 'php5-mysql' is not installed, so not removed
The following packages will be REMOVED
php5-common* php5-json* php5-readline*
0 to upgrade, 0 to newly install, 3 to remove and 8 not to upgrade.
After this operation, 1,336 kB disk space will be freed.
Do you want to continue? [Y/n]
(Reading database ... 479151 files and directories currently installed.)
Removing php5-json (1.3.7-1+deb.sury.org~trusty+1) ...
Purging configuration files for php5-json (1.3.7-1+deb.sury.org~trusty+1) ...
Removing php5-readline (5.6.11+dfsg-1+deb.sury.org~trusty+1) ...
Purging configuration files for php5-readline (5.6.11+dfsg-1+deb.sury.org~trusty+1) ...
Removing php5-common (5.6.13+dfsg-1+deb.sury.org~trusty+3) ...
Purging configuration files for php5-common (5.6.13+dfsg-1+deb.sury.org~trusty+3) ...
$ ls /etc/php5
ls: cannot access /etc/php5: No such file or directory
1 Для случая файлов в /etc
, это происходит при чистке пакетов.