Какие каталоги dpkg удаляет?

При просмотре файловой системы я встретился с названным файлом .placeholder в /etc/cron.d/. В файле было записано следующее:

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

Так интересно, делает dpkg удаляет каталоги в его желании? Или более точно; какие типы каталогов делает dpkg удалить?

0
задан 5 October 2015 в 00:36

1 ответ

dpkg удаляет пустые каталоги, моясь после пакетов что Вы remove1. Они .placeholder файлы, которые Вы видите в различном cron- связанные каталоги принадлежат cron пакет. Конечно, cron пакет не добавляет заданий к этим каталогам. Поэтому собой, они были бы пустыми каталогами. Однако другие пакеты могут бросить файлы в эти каталоги для активации заданий крона, или непосредственно или путем сценариев.

Что произойдет, когда Вы произведете чистку всех установленных пакетов, которые добавляют задания крона? Затем dpkg попытается удалить эти теперь пустые каталоги для чистки. Предотвратить это, cron добавляет .placeholder файлы. sudo добавляет a README кому: /etc/sudoers.d.

Соответственно, dpkg не удалит непустые каталоги. Если:

  1. каталог принадлежал некоторому пакету, и
  2. Вы добавили файл вручную, или некоторый пакет добавил сгенерированный файл к тому каталогу и затем,
  3. удаленный первый пакет,

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, это происходит при чистке пакетов.

1
ответ дан 28 July 2019 в 13:08

Другие вопросы по тегам:

Похожие вопросы: