Где Debian хранит список установленных пакетов?

Используйте параметр -C, чтобы позволить tar chdirвойти в каталог перед началом архивирования файлов:

tar -czf archive.tar.gz -C /usr/hdp/2.6.4.0-91/spark2/jars.

Не забывайте точку в качестве последнего аргумента

Обратите внимание, что первый аргумент после аргумента f— это имя файла для вывода архива, а следующая опция -Cпринимает имя каталога в качестве аргумента (, где tar chdirs to )и затем точка — это каталог для начала архивирования.

1
15.06.2021, 16:54
1 ответ

Как приблизительно `dpkg --получить -выборки `из резервной копии /etc и /var? решает вашу основную проблему.

Список установленных пакетов хранится в /var/lib/dpkg/status.Найдите строки Status: install ok installed— это указывает на то, что пакет установлен правильно.

Следующий вызов AWK извлечет имена установленных пакетов из файла status:

awk '/^Package:/ { package = $2 }
     /^Status: install ok installed/ { print package }' /path/to/status

Если система поддерживает несколько архитектур, это тоже нужно отслеживать:

awk '/^Package:/ { p = $2; i = 0 }
     /^Status: install ok installed/ { i = 1 }
     i && /^Architecture: all/ { print p; next }
     i && /^Architecture/ { printf "%s:%s\n", p, $2 }' /path/to/status

Еще один интересный файл — /var/lib/apt/extended_states, в котором записан флаг «автоматической установки» для установленных пакетов. Вы можете восстановить флаги, запустив что-то вроде

awk '/^Package:/ { p = $2 }
     /^Architecture/ { a = $2 }
     /^Auto-Installed: 1/ { printf "%s:%s\n", p, a }' /path/to/extended_states |
xargs sudo apt-mark auto

Вы можете объединить оба файла, чтобы получить список пакетов, которые были установлены вручную, и полагаться на управление зависимостями для установки автоматически -установленных пакетов (, хотя это не обязательно приведет к установке одного и того же набора пакетов):

awk 'FNR == NR && /^Package:/ { p = $2 }
     /^Status: install ok installed/ { i = 1 }
     FNR == NR && i && /^Architecture: all/ { ps[p] = 1; next }
     FNR == NR && i && /^Architecture/ { ps[p ":" $2] = 1}
     FNR != NR && /^Package:/ { p = $2 }
     FNR != NR && /^Architecture:/ { a = $2 }
     /^Auto-Installed: 1/ { delete ps[p ":" a] }
     END { for (p in ps) print p }' /path/to/status /path/to/extended_states

См. раздел «ФАЙЛЫ» в man dpkg:

.

/var/lib/dpkg/status
Statuses of available packages. This file contains information about whether a package is marked for removing or not, whether it is installed or not, etc.

1
28.07.2021, 11:24

Теги

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