Я хочу создать резервную копию моего списка пакетов, выбранных вручную в Ubuntu, без перечисления пакетов, установленных как зависимости. Например,
dpkg --get-selections
возвращает полный список всех установленных пакетов, выбранных вручную, а также зависимостей. Как отфильтровать зависимости?
Я взломал себе решение :)
dpkg --get-selections | cut -f 1 > /tmp/all
apt-mark showauto > /tmp/auto
diff /tmp/all /tmp/auto | grep '<' | sed 's/.* //'
Это сначала сгенерирует полный список «все» установленных пакетов, затем список «авто» автоматически установленных пакетов и, наконец, создаст список отличий от всех и авто, который является списком, который мне нужен.
Есть лучшие предложения?
# ПРЕДПОЛАГАЯ, что ваши журналы dpkg возвращаются к начальной установке машины
### (Может / вероятно НЕ работать с дистрибутивными обновлениями)
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
Now Filer out the packages initially installed by the OS 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
Вы можете отфильтровать пакеты lib и вручную отфильтровать оставшиеся. Я не думаю, что есть стандартный способ сделать это.
dpkg --get-selections |wc -l
1831
dpkg --get-selections |grep -v ^lib | wc -l
1060
Если вам нужен список пакетов, которые не отмечены как автоматически устанавливаемые (что не всегда означает отсутствие зависимости), вы можете сделать это более простым способом, используя aptitude
вот так:
aptitude search ~i | grep "^i " | awk '{ print $2 }'
Если вы действительно заинтересованы в устранении всех зависимостей, вы можете изучить ~R
и ~D
шаблоны поиска. думаю aptitude
в настоящее время является рекомендуемым интерфейсом для dpkg и apt. Вы обнаружите, что в нем есть ряд действительно полезных параметров командной строки в дополнение к интерфейсу ncurses.