Зачем мне нужно указывать & ldquo;: 80 & rdquo; при использовании & ldquo; apt-key adv & rdquo ;?

Я не видел, чтобы какие-либо решения здесь работали для меня, я установил довольно много deb-пакетов с dpkg, и некоторые из элементов, которые я особенно искал, отсутствовали.

Довольно длинный лайнер, но удобно скопировать и вставить:

export DPKG_INITIAL=$(mktemp) DPKG_INSTALLED=$(mktemp) DPKG_CUSTOM=$(mktemp) DPKG_DEPS=$(mktemp) zgrep -E '^Package' /var/log/installer/initial-status.gz | awk '{ print $2 }' > $DPKG_INITIAL ; awk '$3 !~ /install|remove|purge/ { next } { gsub(/remove|purge/, "uninstall", $3) ; gsub(/:.+/, "", $4) ; a[$4]=$3 } END { for (p in a) { if (a[p] == "install") { print p } } }' /var/log/dpkg.log | sort -u > $DPKG_INSTALLED ; comm -23 installed initial > $DPKG_CUSTOM ; function rdep() { apt-cache rdepends $1 | tail -n +3 | sed -e 's/^ //' -e '/^ /d' | cut -d':' -f1 | sort -u; } ; echo "$(for i in $(cat custom) ; do rdep $i ; done)" | sort -u > $DPKG_DEPS ; comm -23 custom deps > my-packages ; rm $DPKG_INITIAL $DPKG_INSTALLED $DPKG_CUSTOM $DPKG_DEPS

Вышеприведенная команда сохраняет список пакетов в файл в текущем рабочем каталоге с именем my-packages.

Пояснение

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

zgrep -E '^Package' /var/log/installer/initial-status.gz | awk '{ print $2 }' > initial

Далее следует длинный список элементов, установленных вообще.

[ f3]

Затем я сравнил два файла initial и installed, чтобы перечислять только уникальные объекты, которые были установлены.

comm -23 installed initial > custom

Оттуда я хотел отфильтровать зависимости, это где этот метод может пропустить некоторые требуемые пакеты, он не знает о зависимостях, которые также явно установлены.

Я написал быструю функцию bash, чтобы сократить эти шаги при обработке этих элементов.

function rdep() { apt-cache rdepends $1 | tail -n +3 | sed -e 's/^ //' -e '/^ /d' | cut -d':' -f1 | sort -u; }
[d9 ] После этого я передал каждую строку из своего файла custom в эту функцию с помощью xargs.

echo "$(for i in $(cat custom) ; do rdep $i ; done)" | sort -u > deps

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

comm -23 custom deps > manual

И мой законченный список пакетов теперь доступен в файле с именем manual, доступным для просмотра.

1
задан 19 July 2015 в 05:33

0 ответов

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

Похожие вопросы: