Генерация списка установленных пакетов в Ubuntu

Я хочу сделать резервную копию моего списка пакетов, выбранных вручную, в Ubuntu, без перечисления пакетов, установленных как зависимости. Например,

dpkg --get-selections

возвращает полный список всех установленных пакетов, выбранных вручную, а также зависимости. Как я могу отфильтровать зависимости?

4 ответа

Я взломал себе решение:)

dpkg --get-selections | cut -f 1 > /tmp/all
apt-mark showauto > /tmp/auto
diff /tmp/all /tmp/auto | grep '<' | sed 's/.* //'

Сначала будет сгенерирован полный список "всех" установленных пакетов, затем список "автоматически" автоматически установленных пакетов, и, наконец, будет создан список отличий от всех и "авто", и это тот список, который мне нужен.

Есть лучшие предложения?

Вы можете отфильтровать пакеты lib и вручную отфильтровать остальные. Я не думаю, что есть стандартный способ сделать это.

dpkg --get-selections |wc -l
1831
dpkg --get-selections |grep -v ^lib | wc -l
1060

# Предполагая, что ваши журналы dpkg возвращаются к первоначальной установке машины

###(может / не работает через dist-upgrade)

apt-mark showauto >/tmp/auto.pkgs

Создать полный журнал временной шкалы dpkg
cp /dev/null /tmp/dpkg.full
for LOG in $(ls -rt /var/log/dpkg.log.[0-9].gz  /var/log/dpkg.log.1[0-9].gz)
do
    test -e $LOG && gunzip -c  $LOG>> /tmp/dpkg.full
done
for LOG in $(ls -rt /var/log/dpkg.log /var/log/dpkg.log.[0-9]  /var/log/dpkg.log.1[0-9]) 
do
    test -e $LOG && cat $LOG >>/tmp/dpkg.full
done
Теперь Filer из пакетов, изначально установленных ОС
awk -v initialinstall=1 '
   / install grub-pc / {initialinstall = 0; next;}                     
   / install / {if ( initialinstall == 0) print $4;}
' /tmp/dpkg.full | grep -vf /tmp/auto.pkgs >~/iInstalled.pkgs

Если вам нужен список пакетов, которые не помечены как автоматически установленные (что не всегда совпадает с отсутствием зависимости), вы можете сделать это более простым способом, используя aptitude вот так:

aptitude search ~i | grep "^i   " | awk '{ print $2 }'

Если вы действительно заинтересованы в устранении всех зависимостей, вы можете посмотреть в ~R а также ~D шаблоны поиска. Я думаю aptitude в настоящее время рекомендуется интерфейс для dpkg и apt. Вы обнаружите, что он имеет ряд действительно полезных параметров командной строки, в дополнение к интерфейсу ncurses.

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