Como posso listar todos os pacotes que instalei de um repositório específico?

51

Como posso listar todos os pacotes que instalei de um repositório específico?

Como posso listar todos os pacotes instalados que não estão disponíveis nos principais arquivos do Ubuntu e também ver de quais repositórios eles vieram? (Se eu soubesse a resposta para essa pergunta, poderia fazer uma lista dessa lista com um nome de PPA específico para descobrir a resposta para minha primeira pergunta.)

Marius Gedminas
fonte
Como não parece haver uma ferramenta de linha de comando para isso (infelizmente), aceitarei uma das respostas da GUI.
Marius Gedminas 15/10/10

Respostas:

24

Expanda o item "Software instalado" no Ubuntu Software Center. Você verá uma lista de todos os diferentes repositórios que você ativou. Clicar no repositório mostra os pacotes que você instalou de cada um.

texto alternativo

andrewsomething
fonte
Receio que essa opção esteja disponível apenas no Ubuntu 10.10 ou estou perdendo alguma coisa? Meu Centro de Software não exibe fontes abaixo desse menu.
lovinglinux
2
Na minha versão, tenho um menu suspenso "Instalado" na parte superior. Quando seleciono essa opção, posso escolher as várias fontes (núcleo, para compra, PPA ...) #
Alexis Wilke
No Ubuntu 16.04, esta página não está mais disponível. No entanto, o sináptico tem um recurso semelhante - clique em "Origem" no canto inferior esquerdo.
21917 Josh
26

Parece não haver registro da origem de um pacote instalado .

Se você não conseguir obter a localização de onde um pacote com o mesmo nome seria baixado, isso estará disponível em apt-cache policy. O seguinte script (bastante feio) faz o truque para mim:

LC_ALL=C dpkg-query --showformat='${Package}:${Status}\n' -W '*' \
  | fgrep ':install ok installed' \
  | cut -d: -f1 \
  | (while read pkg; do 
       inst_version=$(apt-cache policy $pkg \
                                | fgrep Installed: \
                                | awk '{ print $2 }'); 
       origin=$(apt-cache policy "$pkg" \
                          | fgrep " *** ${inst_version}" -C1 \
                          | tail -n 1 \
                          | cut -c12-); 
       echo $pkg $origin; 
     done)

Observe que é bastante frágil, pois faz suposições sobre a saída de apt-cache policy, que pode mudar entre as versões ...

Riccardo Murri
fonte
Sim, isso basicamente significaria escrever uma ferramenta do zero. E acho que analisar / var / lib / apt / lists com Perl ou Python seria mais rápido e mais robusto.
Marius Gedminas 15/10/10
Funciona normalmente aqui, em 2018 :) Obrigado!
N0rbert
Eu desenvolvi uma solução semelhante testada no Ubuntu e Debian.
Famzah 24/0418
23

Abra o Synaptic Package Manager e clique no botão "Origem" na parte inferior da barra lateral esquerda. Ele listará suas fontes. Selecione uma fonte para ver os pacotes disponíveis / instalados.

lovinglinux
fonte
4

Este script lista os pacotes que estão instalados e disponíveis no PPA:

#!/bin/sh
# Give PPA name as an argument, e.g. ppa:oibaf/graphics-drivers

name1="$(echo "$1"|cut -d: -f2|cut -d/ -f1)"
name2="$(echo "$1"|cut -d/ -f2)"

awk '$1 == "Package:" { if (a[$2]++ == 0) print $2; }' \
/var/lib/apt/lists/*"$name1"*"$name2"*Packages |
xargs dpkg-query -W -f='${Status} ${Package}\n' 2>/dev/null  | awk '/^[^ ]+ ok installed/{print $4}'

Eu apliquei isso .

Entre para remover o PPA de uso, use o programa ppa-purge; Eu criei uma versão melhorada aqui .

jarno
fonte
3

Em Quantal (12.10), o espaço na linha de origem precisa ser removido.

LC_ALL=C dpkg-query --showformat='${Package}:${Status}\n' -W '*' \
 | fgrep ':install ok installed' \
 | cut -d: -f1 \
 | (while read pkg; do 
   inst_version=$(apt-cache policy $pkg \
                            | fgrep Installed: \
                            | cut -d: -f2-); 
   origin=$(apt-cache policy "$pkg" \
                      | fgrep " ***${inst_version}" -C1 \
                      | tail -n 1 \
                      | cut -c12-); 
   echo $pkg $origin; 
 done)
Graham Dunn
fonte