Весенняя уборка PPA - список пакетов, установленных с PPA?

Это вопрос в стиле «вопросы и ответы» - в надежде помочь вам в этот период новых выпусков LTS. В этом посте много ссылок, следуйте за ними и поднимайте их, чтобы дать авторам соответствующую оценку.

Часто предлагается удалить или удалить все ваши PPA при обновлении версии; У меня часто возникают проблемы с запоминанием того, какой PPA установлен, а какие пакеты «принадлежат» конкретному PPA - иногда вы устанавливаете PPA, но это не значит, что вы установили все пакеты из него.

Для списка PPA существует довольно много хороших сценариев вокруг ; а для обнаружения пакетов, действительно установленных из PPA , вы можете использовать apt-cache policy или аналогичные команды.

Но --- как насчет универсального скрипта для перечисления всех ваших установленных PPA и всех пакетов, которые вы установили из них?

1
задан 13 April 2017 в 15:24

1 ответ

Следующий сценарий даст Вам список как следующее:

PPA:tualatrix/ppa
--->  ubuntu-tweak
PPA:otto-kesselgulasch/gimp
--->  gimp
--->  gimp-data
--->  gimp-help-common
--->  gimp-help-en
--->  gimp-help-en-gb
--->  gimp-help-es
--->  gimp-help-it
--->  gimp-plugin-registry
--->  libgimp2.0
--->  libopenjpeg-dev
--->  libopenjpeg5

Сценарий после (копируют его в файл и делают его исполняемым файлом):

#! /bin/bash
#
list_all_packages_repos() {
apt-cache policy $(dpkg -l | awk 'NR >= 6 { print $2 }') |
  awk '/^[^ ]/    { split($1, a, ":"); pkg = a[1] }
    nextline == 1 { nextline = 0; printf("%-40s %-50s %s\n", pkg, $2, $3) }
    /\*\*\*/      { nextline = 1 }'
    }

list_packages_of() { #1 is the tmpfile, $2 is the ppa regexp
    grep "$2" "$1" | awk '{print "---> ", $1}'
}

# cache all packages files now 

tmpfile=/tmp/list_pcks.$$.txt
list_all_packages_repos > $tmpfile

# listppa Script to get all the PPA installed on a system ready to share for reininstall
for APT in $(find /etc/apt/ -name "*.list"); do
    grep -o "^deb http://ppa.launchpad.net/[a-z0-9\-]\+/[a-z0-9\-]\+" "$APT" | while read ENTRY ; do
        USER=$(echo "$ENTRY" | cut -d/ -f4)
        PPA=$(echo "$ENTRY" | cut -d/ -f5)
        echo  PPA:$USER/$PPA
    list_packages_of "$tmpfile" "$USER/$PPA"
    done
done

rm "$tmpfile"
3
ответ дан 13 April 2017 в 15:24

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

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