Назад | Перейти на главную страницу

Создание списка установленных пакетов в Ubuntu

Я хочу создать резервную копию моего списка пакетов, выбранных вручную в 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

Create a full dpkg timeline log
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.