dpkg -l
перечисляет все установленные пакеты (в списке, когда вы фильтруете его правильно). Вы можете получить тот же список с dpkg --get-selections
(который не требует дополнительной фильтрации).
Это приводит к потере информации о пакетах, устанавливаемых вручную или автоматически. Очень удобно иметь библиотеки и другие пакеты, помеченные как только косвенно необходимые. Пакеты, помеченные как автоматически установленные, могут быть удалены или заменены различными пакетами без суеты. Dpkg не знает об автоматически установленных пакетах, только apt знает.
Чтобы вывести список пакетов, установленных вручную, вы можете использовать aptitude:
aptitude search -F %p '~i !~M' >reinstallList.txt
Без способностей это немного сложнее.
dpkg --get-selections | awk '$2 == "install" {print $1}' >installed.txt
apt-mark showauto >automatic.txt
comm -32 installed.txt automatic.txt >reinstallList.txt
Чтобы установить все ранее установленные пакеты:
apt-get install $(cat reinstallList.txt)
В качестве альтернативы, вы можете использовать более обходной метод копирования списка установленных пакетов, а затем восстановить список пакетов, помеченных как автоматические. Для резервного копирования:
dpkg --get-selections >selections.txt
apt-mark showauto >automatic.txt
Для восстановления:
dpkg --set-selections <selections.txt
apt-get dselect-upgrade
apt-mark markauto $(cat automatic.txt)