PPA弹簧清洗 – 从PPA安装的包装清单?

这是一个Q&A风格的东西—希望在这个新的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"