Limpeza de Primavera PPA - lista pacotes instalados a partir de um PPA?

1

Este é um estilo de perguntas e respostas --- esperando ajudá-lo nesse período de lançamento (ões) de LTS. Há muitos links neste post, siga-os e faça um upvote para dar aos autores os créditos relevantes.

É frequentemente sugerido que remova ou elimine todos os seus PPAs ao fazer uma atualização de versão; Muitas vezes tenho muitos problemas para lembrar quais PPA estão instalados e quais pacotes são "de propriedade" de um PPA em particular --- você em algum momento instala um PPA, mas isso não significa que você tenha instalado todos os pacotes dele.

Para a lista de PPA existem muitos scripts bons ao redor ; e para descobrir os pacotes realmente instalados de um PPA você pode usar apt-cache policy ou comandos similares.

Mas --- o que dizer de um script de uma só vez para listar todos os seus PPAs instalados e todos os pacotes que você instalou deles?

    
por Rmano 18.04.2014 / 17:10

1 resposta

3

O seguinte script lhe dará uma lista como a seguinte:

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

Seguimento do script (copie-o para um arquivo e torne-o executável):

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

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

# 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"
    
por Rmano 18.04.2014 / 17:10