Почему программное обеспечение записи логов dpkg не удаляется как часть процесса установки?

Манифест для образа Ubuntu 20.04 для рабочего стола доступен здесь здесь . Некоторые из пакетов, перечисленных в манифесте, удаляются в процессе установки. Например, ubiquity , ubiquity-casper , ubiquity-frontend-gtk и ubiquity-slideshow-ubuntu удалены для ( упомянуть только несколько). Это можно увидеть, посмотрев в самом первом history.log , вероятно, к настоящему времени заархивированном, в / var / log / apt / раздел, начинающийся с чего-то вроде:

Start-Date: ...
Requested-By: ubuntu (999)
Purge: ...

Запуск чего-то вроде apt policy ubiquity ubiquity-casper ubiquity-frontend-gtk ubiquity-slideshow-ubuntu подтвердит их отсутствие.

Однако удаление этих пакетов этим автоматическим «Purge:» не является записано в самом первом dpkg.log (охватывающем процесс установки).

Если пользователь запускает

zgrep "status installed ubiquity" /var/log/dpkg.log*

, результат таков (при условии, что соответствующий архивный журнал все еще доступен), создавая впечатление, что пакеты все еще установлены:

$ zgrep "status installed ubiquity" /var/log/dpkg.log*
/var/log/dpkg.log.1:2020-04-23 07:40:38 status installed ubiquity-ubuntu-artwork:all 20.04.15
/var/log/dpkg.log.1:2020-04-23 07:40:43 status installed ubiquity-casper:all 1.445
/var/log/dpkg.log.1:2020-04-23 07:40:43 status installed ubiquity-slideshow-ubuntu:all 160
/var/log/dpkg.log.1:2020-04-23 07:42:15 status installed ubiquity-frontend-gtk:amd64 20.04.15
/var/log/dpkg.log.1:2020-04-23 07:42:18 status installed ubiquity:amd64 20.04.15
$ 

Является ли установка программного обеспечения обработанной dpkg , но этот шаг Purge не обрабатывается dpkg ? Или по какой причине журнал dpkg не показывает, что эти различные пакеты были удалены (как правильно показано в apt's history.log)?




Я задаю тот же вопрос, но другим способом.

Это аннотированный фрагмент (с усеченными длинными строками) моего /var/log/history.log со дня, когда я установил Ubuntu 20.04.
2: , 3: и т. д. для удобства использования включены номера строк:

2: Start-Date: 2020-04-23  07:34:03
3: Commandline: apt-get --yes -oDebug::pkgDepCache::AutoInstall=yes install linux-generic-hwe-20.04 adduser apt apt-utils ...
4: Install: speech-dispatcher-espeak-ng:amd64 (0.9.1-4)Install: speech-dispatcher-espeak-ng:amd64 (0.9.1-4)
5: End-Date: 2020-04-23  07:39:30

7: Start-Date: 2020-04-23  07:39:39
8: Commandline: apt-get --yes -oDebug::pkgDepCache::AutoInstall=yes install lupin-casper ...
9: Install: hunspell-en-gb:amd64 (1:6.4.3-1), cryptsetup-bin:amd64 ...
10: End-Date: 2020-04-23  07:42:21

12: Start-Date: 2020-04-26  16:12:11
13: Requested-By: ubuntu (999)
14: End-Date: 2020-04-26  16:12:12

16: Start-Date: 2020-04-26  16:13:28
17: Requested-By: ubuntu (999)
18: End-Date: 2020-04-26  16:13:29

20: Start-Date: 2020-04-26  16:14:08
21: Requested-By: ubuntu (999)
22: Purge: hunspell-en-gb:amd64 ...
23: End-Date: 2020-04-26  16:19:54

25: Start-Date: 2020-04-26  16:19:57
26: Requested-By: ubuntu (999)
27: End-Date: 2020-04-26  16:19:58

29: Start-Date: 2020-04-26  16:20:00
30: Requested-By: ubuntu (999)
31: End-Date: 2020-04-26  16:20:00

33: Start-Date: 2020-04-26  16:24:48
34: Commandline: aptdaemon role='role-commit-packages' sender=':1.105'
35: Upgrade: netplan.io:amd64 (0.99-0ubuntu1, 0.99-0ubuntu2), distro-info-data:amd64 (0.43ubuntu1, 0.43ubuntu1.1), libnetplan0:amd64 (0.99-0ubuntu1, 0.99-0ubuntu2)
36: End-Date: 2020-04-26  16:25:01

Возьмем пример hunspell-en-gb , который можно установить без каких-либо зависимостей. (Вы можете предпочесть использовать версию на другом языке, которая была удалена из вашей системы в строке # 22.)

Была установлена ​​ согласно строке # 9. Позже этот же пакет очищается в соответствии со строкой 22.

Отсутствие этого пакета в моей системе можно проверить, запустив apt policy 2> / dev / null hunspell-en-gb , который показывает

hunspell-en-gb:
  Installed: (none)
  Candidate: 1:6.4.3-1

Я ожидал бы, что запрос /var/log/dpkg.log.1 (или соответствующий архивированный журнал) будет отражать это.

$ zgrep hunspell-en-gb /var/log/dpkg*
dpkg.log.1:2020-04-23 07:39:54 install hunspell-en-gb:all <none> 1:6.4.3-1
dpkg.log.1:2020-04-23 07:39:54 status half-installed hunspell-en-gb:all 1:6.4.3-1
dpkg.log.1:2020-04-23 07:39:54 status unpacked hunspell-en-gb:all 1:6.4.3-1
dpkg.log.1:2020-04-23 07:40:43 configure hunspell-en-gb:all 1:6.4.3-1 <none>
dpkg.log.1:2020-04-23 07:40:43 status unpacked hunspell-en-gb:all 1:6.4.3-1
dpkg.log.1:2020-04-23 07:40:43 status half-configured hunspell-en-gb:all 1:6.4.3-1
dpkg.log.1:2020-04-23 07:40:43 status installed hunspell-en-gb:all 1:6.4.3-1
$ 

Нет строки с "status" не установлен », который обычно присутствует, если пакет был успешно удален с помощью sudo apt purge ... . Вы можете проверить это для любого пакета , указанного в строке № 22.

Обычно,
- если пакет присутствует в одной системе и был установлен с помощью sudo apt install , журналы dpkg в / var / log показывают, что пакет со статусом : установлен один раз для первоначальной установки, а затем повторно для каждого обновления этого пакета - если этот пакет был удален с помощью sudo apt purge , журналы dkpg обычно отражают это, когда статус не установлен (каждый раз, когда этот пакет удаляется).

Только для подтверждения, Теперь запустите sudo apt install hunspell-en-gb , а затем sudo apt purge hunspell-en-gb . Затем снова выполните запрос к журналам dpkg:

$ zgrep -E "status (not -)? Установлен hunspell-en-gb:" /var/log/dpkg.log* | sed 's /: /: /' | сортировка -k2,3 -r | столбец -t /var/log/dpkg.log: 2020-05-20 15:36:09 статус не установлен hunspell-en-gb: все /var/log/dpkg.log: 2020-05-20 15:36:08 статус установлен hunspell-en-gb: все 1: 6.4.3-1 /var/log/dpkg.log: 2020-05-20 15:35:51 статус установлен hunspell-en-gb: все 1: 6.4.3-1 /var/log/dpkg.log.1: 2020-04-23 07:40:43 статус установлен hunspell-en-gb: все 1: 6.4.3-1 $

Обратите внимание, что первая строка (из-за сортировки) имеет статус не установлен . И это именно то, чего не хватает в журналах dpkg для пакетов, удаленных во время установки. Почему это так?

1
задан 20 May 2020 в 13:49

1 ответ

Что касается меня - это сделано для безопасности данных и для получения некоторых подсказок после установки, если что-то пошло не так. [126 Технически такая очистка или удаление выполняется с помощью package.prerm или package.postrm сценариев обслуживания , расположенных в / var / lib / dpkg / (расположенный здесь, если пакет в настоящее время установлен).

Например, у меня в системе установлен пакет sysstat , его скрипт sysstat.postrm содержит строку для удаляя его журналы из / var / log / sysstat при его очистке.

Затем давайте проанализируем пакеты из вашего поста:

Таким образом, эти пакеты не имеют пост-удаления директивы для удаления лог-файлов.

Таким образом, эти пакеты не имеют директив после удаления для удаления лог-файлов.

Таким образом, эти пакеты не имеют директив после удаления для удаления лог-файлов.

0
ответ дан 19 June 2020 в 21:38

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

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