Quais diretórios o dpkg remove?

0

Enquanto navegava no sistema de arquivos, encontrei um arquivo chamado .placeholder in /etc/cron.d/ . No arquivo, o seguinte foi escrito:

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

Então, pergunto-me, o dpkg remove diretórios à sua vontade? Ou mais precisamente; que tipos de diretórios dpkg remove?

    
por Utku 04.10.2015 / 23:36

1 resposta

1

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:

  1. um diretório era de propriedade de algum pacote e
  2. você adicionou um arquivo manualmente ou algum pacote adicionou um arquivo gerado a esse diretório e, em seguida,
  3. 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.

    
por muru 05.10.2015 / 02:26