Это вопрос в стиле «вопросы и ответы» - в надежде помочь вам в этот период новых выпусков LTS. В этом посте много ссылок, следуйте за ними и поднимайте их, чтобы дать авторам соответствующую оценку.
Часто предлагается удалить или удалить все ваши PPA при обновлении версии; У меня часто возникают проблемы с запоминанием того, какой PPA установлен, а какие пакеты «принадлежат» конкретному PPA - иногда вы устанавливаете PPA, но это не значит, что вы установили все пакеты из него.
Для списка PPA существует довольно много хороших сценариев вокруг ; а для обнаружения пакетов, действительно установленных из PPA , вы можете использовать apt-cache policy
или аналогичные команды.
Но --- как насчет универсального скрипта для перечисления всех ваших установленных PPA и всех пакетов, которые вы установили из них?
Следующий сценарий даст Вам список как следующее:
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"