Генерация списка установленных пакетов в 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
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.