dpkg
remove diretórios vazios, limpando os pacotes removidos 1 . Esses arquivos .placeholder
que você vê nos vários diretórios relacionados com cron
são de propriedade do pacote cron
. Naturalmente, o pacote cron
não adiciona trabalhos a esses diretórios. Portanto, por si mesmos, eles seriam diretórios vazios. No entanto, outros pacotes podem soltar arquivos nesses diretórios para ativar os trabalhos agendados, diretamente ou por script.
O que acontecerá quando você limpar todos os pacotes instalados que adicionam tarefas agendadas? Então dpkg
tentará remover esses diretórios vazios para limpar. Para evitar isso, cron
adiciona .placeholder
arquivos. sudo
adiciona README
a /etc/sudoers.d
.
Correspondentemente, dpkg
não removerá diretórios não vazios. Se:
- um diretório era de propriedade de algum pacote e
- você adicionou um arquivo manualmente ou algum pacote adicionou um arquivo gerado a esse diretório e, em seguida,
- removeu o primeiro pacote,
dpkg
avisará que não está removendo esse diretório não vazio. Por exemplo:
$ 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
Vários módulos PHP tinham adicionado programaticamente arquivos a /etc/php5
, então dpkg
não removeu esse diretório, mesmo que o que parecia ser o último pacote que o possuía estivesse sendo removido.
Para contrastar, re-instalei php5-json
, que trouxe uma versão atualizada, onde php5-common
agora também possui /etc/php5
, onde anteriormente ele adicionava arquivos programaticamente:
$ 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 Para o caso de arquivos em /etc
, isso acontece quando você purga pacotes.