Манифест для образа 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 для пакетов, удаленных во время установки. Почему это так?
Что касается меня - это сделано для безопасности данных и для получения некоторых подсказок после установки, если что-то пошло не так. [126 Технически такая очистка или удаление выполняется с помощью package.prerm
или package.postrm
сценариев обслуживания , расположенных в / var / lib / dpkg /
(расположенный здесь, если пакет в настоящее время установлен).
Например, у меня в системе установлен пакет sysstat
, его скрипт sysstat.postrm
содержит строку для удаляя его журналы из / var / log / sysstat
при его очистке.
Затем давайте проанализируем пакеты из вашего поста:
ubiquity
, ubiquity-frontend-gtk
- не владеет файлами в / var / log
, не имеет упоминаний о / var / log
в файлах *. * Rm
; ubiquity-casper
- не владеет любые файлы в / var / log
, не имеют файлов *. * Rm
; ubiquity-slideshow-ubuntu
- не владеет файлами в / var / log
, , не имеет файлов *. * rm
. Таким образом, эти пакеты не имеют пост-удаления директивы для удаления лог-файлов.
Таким образом, эти пакеты не имеют директив после удаления для удаления лог-файлов.
Таким образом, эти пакеты не имеют директив после удаления для удаления лог-файлов.