Encontre quais pacotes estão instalados a partir de um repositório

15

Estou tentando encontrar quais pacotes eu instalei de um repositório usando comandos de terminal.

Encontrei um post em algum lugar dizendo que eu poderia usar aptitude search "?origin (<repository>) ?installed", mas não consegui fazê-lo funcionar. Eu tentei procurar por pacotes que vieram do ppa: ubuntu-wine / ppa e não obtive nada com estes:

aptitude search "?origin (http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu/) ?installed"
aptitude search "?origin (http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu/) ?installed"
aptitude search "?origin (http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu/ raring/main) ?installed"

Seria bom se eu conseguisse algo que funcionasse com PPAs.

Enkouyami
fonte

Respostas:

12

Entre parênteses, você deve usar apenas o nome do repositório, não o URI ou outra coisa. Por exemplo, no seu caso:

aptitude search "?origin (ubuntu-wine) ?installed"

Execute apt-cache policypara ver os repositórios e os nomes (também conhecidos como origem o) desses:

$ apt-cache policy | grep wine
 500 http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu xenial/main i386 Packages
     release v=16.04,o=LP-PPA-ubuntu-wine,a=xenial,n=xenial,l=Wine Team PPA,c=main,b=i386
 500 http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu xenial/main amd64 Packages
     release v=16.04,o=LP-PPA-ubuntu-wine,a=xenial,n=xenial,l=Wine Team PPA,c=main,b=amd64

Como a string de pesquisa é um padrão de expressão regular que corresponde a qualquer lugar da string, você pode usar uma substring conveniente como ubuntu-wine, ou mesmo apenas wine.

Consulte também: Como posso obter uma lista de todos os repositórios e PPAs da linha de comando em um script de instalação?

Radu Rădeanu
fonte
1
Obrigado, isso fez o comando funcionar e me deu o que estava procurando.
Enkouyami
Isso não listou pacotes para mim: aptitude search "?origin (multiverse) ?installed"- não deveria? ("multiverso" está ativado)
Volker Siegel
@VolkerSiegel não, mas use aptitude search "?section (multiverse) ?installed".
Jarno
5

Aqui está um script do Bash que escrevi para exibir pacotes instalados de diferentes origens, exceto o Ubuntu. Ele usa o dpkg -lformato de saída comum . Funciona mais rápido que as aptitudesoluções.

#!/bin/bash

# Print packages installed from different origins.
# Exclude standard Ubuntu repositories.

grep -H '^Origin:' /var/lib/apt/lists/*Release | grep -v ' Ubuntu$' | sort -u \
| while read -r line; do
    origin=${line#* }    
    echo $origin:

    list=${line%%:*}
    sed -rn 's/^Package: (.*)$/\1/p' ${list%_*Release}*Packages | sort -u \
    | xargs dpkg -l 2>/dev/null | grep '^.i '
    echo
 done

Observe que também pode haver pacotes instalados que não têm essa origem disponível; consulte isso para encontrá-los.

jarno
fonte
1

Na linha de comando Se você gosta de fazer, significa

awk '$1 == "Package:" { if (a[$2]++ == 0) print $2; }' /var/lib/apt/lists/*PPA-FIRST-PART*PPA-SECOND-PART*Packages

por exemplo: Todos os pacotes do noobslab

 jai@frank-Jai:~$ awk '$1 == "Package:" { if (a[$2]++ == 0) print $2; }' /var/lib/apt/lists/*noobslab*Packages

python-logilab-common
synapse
ubuntuone-client
python-ubuntuone-storageprotocol
ubuntuone-client-gnome
python-ubuntuone-client
lives
libweed0
libweed-dev
lives-data
converseen
minitube
libsyncdaemon-1.0-1
libsyncdaemon-1.0-dev
ubuntu-sso-client
python-ubuntuone-devtools
ubuntuone-dev-tools
ubuntuone-control-panel
python-ubuntuone-control-panel
synapse-dbg
gir1.2-syncdaemon-1.0
libweed-dbg
lives-dbg
umplayer
umplayer-translations
libgranite-dev
deepin-software-center
ubuntuone-control-panel-qt
python-dirspec
rhythmbox-ubuntuone
python-ubuntu-sso-client
ubuntu-sso-client-qt
python-ubuntu-sso-client.tests
granite-demo
ubuntuone-client-proxy
python-oauthlib
slidewall
python3-dirspec
python3-oauthlib
ubuntuone-client-data
libgranite1
libgranite1-dbg
gir1.2-granite-1.0
libgranite-common
curlew
fbmessenger
open-as-administrator
indicator-synapse
indicator-synapse-dbg
wallpaper-manager
awoken-icon-theme
malys-uniblack
malys-uniblue
malys-ex
acyl-icons
nitrux-icons
piratunbu-icons
azenis-green-icons
nouvegnome-color
nouvegnome-gray
hi-lights-icons
matrilineare
zoncolor-icons
royal-linux-icons
elementary-icons
myhumanity
myelementary
glass-icons
osx-nostalgie
sky-blue-cinnamon
sky-blue-gnome
sky-blue-unity
wine-blue-remix
lubuntubox
windows7-icons
appleart-icons
magical-lights-icons
colored-plastic-icons
numix-utouch-icon-theme
ubudao-style
artnet-icons
high-delight-icons
snow-sabre-icons
trevilla-icons
aery-icons
ambiance-blue
zukitwo
gnomishbeige-theme
salience-theme
zukiwi
gnomishgray
delorean-dark
smoothly-theme
ambiance-ds-blue
ambiance-lime
gnomishdark
zukitwo-cupertino-gs
mediterranean-theme
elementaryish
borderline
boje
wow-2
zoncolor-themes
omg-suite
simplex
leopard-steel
dorian-theme
daylight
adwaita-elements
uncomplicated
trevilla-jmhzonedark
trevilla-dark
trevilla-white
trevilla-whiteblue
trevilla-whiteorange
trevilla-white2
ambiancep-set
ambiance-crunchy
trevilla-gray
siva-series-gtk
cobibird
elegant-brit
mac-ithemes-noobslab
mac-icons-noobslab
ubuntu-touch-themes
windows8-theme
bigfootblue-cinnamon
windows8-cinnamon
eliza1-cinnamon
bigfootred-cinnamon
plus1-theme
futura
blo-theme
darkair-theme
plane-gtk3
deepin-gtk-theme
nokto-theme
numix-theme
neptune-theme
trevilla-themes
jai@frank-Jai:~$ 

O crédito vai aqui

rɑːdʒɑ
fonte
Eu recebi este erro: bash: awk: Não
existe
@Enkouyami, quais são os ls de / var / lib / apt / lists /
rɑːdʒɑ
Aqui está um link para o que eu tenho pastebin.com/AmiH9E9n
Enkouyami
@Enkouyami oops pesaroso, eu quero dizer o comando que você digitou
rɑːdʒɑ
1
@Enkouyami Ok, isso não se trata de comando, posicionamento. do as awk '$1 == "Package:" { if (a[$2]++ == 0) print $2; }' /var/lib/apt/lists/*haguichi*webupd8team*Packages
rɑːdʒɑ
1

Então você pode usar o gerenciador Y-PPA. Abra seu terminal e digite:

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager

Em seguida, abra seu traço do Unity e pesquise com Y -PPA e, em seguida, abra o ícone.

insira a descrição da imagem aqui

Clique em gerenciar PPAs conforme mostrado na imagem e selecione um PPA e ele fornecerá os detalhes do PPA e de seus pacotes.

rɑːdʒɑ
fonte
Você poderia fornecer algumas instruções para usar o gerenciador de Y-PPA?
Seth
@ Seth meu amigo. feito.
rɑːdʒɑ
Eu estava procurando uma solução de linha de comando.
Enkouyami
Esta solução não é uma linha de comando nem responde à pergunta principal - como listar pacotes instalados a partir de um determinado repositório? Ele mostra apenas TODOS os pacotes disponíveis em um PPA.
Viacheslav Rodionov
1

Origem não é URL do repositório. Para encontrar a Origem do repositório, procure o arquivo e /var/lib/apt/lists/termine com Release.

Por exemplo

grep "Origin" /var/lib/apt/lists/linux.dropbox.com_debian_dists_wheezy_Release

Mostrará:

Origin: Dropbox.com

Então, aptitude search "?origin(dropbox.com) ?installed"irá me mostrar o pacote instalado do repositório do dropbox.

sorgel
fonte
Não era isso que eu estava procurando.
Enkouyami
Pode ser necessário escapar de alguns caracteres no nome de origem, se forem especiais na expressão regular.
jarno