OpenSUSE: Encontre todos os Pacotes sem um repositório

3

Acabei de atualizar para o OpenSUSE 12.2 do OpenSUSE 12.1 alterando todos os meus repositórios para o alvo 12.2 (em vez de 12.1). Agora que atualizei, encontrei vários pacotes que não têm repositório *, que o Gerenciador de Software YaST marca com texto em vermelho na coluna da versão. Eu posso percorrê-las e remover todas, mas estou pensando se a pesquisa zypper ( zypper se ) ou o Gerenciador de Software tem como segmentar / selecionar todos de uma vez.

* - Esses pacotes tinham um repositório (algo do OpenSUSE 12.1), mas desde que eu substituí os repositórios com os repositórios 12.2, eles não têm mais uma associação de repositório. Isso não cria um problema, porque os repositórios 12.2 devem conter tudo que eu preciso para executar o meu sistema.

    
por palswim 31.10.2012 / 23:01

3 respostas

2

Usando a resposta de Martin / guidance, escrevi um script rápido para remover uma seqüência de pacotes, zremove.sh :

#!/bin/sh

pkgs=""
while read line
do
        pkgs="$pkgs $line"
done

zypper rm $pkgs

Depois de perceber que todos os meus pacotes "sem um repositório" tinham uma distribuição do openSUSE 12.1 na consulta rpm , emiti este comando para localizar e remover todos eles:

rpm -qa --qf '%{DISTRIBUTION} : %{NAME}\n' | grep "openSUSE 12.1 :" | sed 's/openSUSE 12.1 : //' | sudo zremove.sh

Isso geralmente não responde à pergunta de como encontrar todos os pacotes sem um repositório de apoio, mas resolveu o meu problema inicial.

    
por 01.11.2012 / 17:53
4
rpm -qa --qf '%-30{DISTRIBUTION} %{NAME}\n'| sort

fornece uma lista de todos os repositórios usados pelos seus pacotes. Encontrar os que você não quer é deixado como um exercício para o leitor. :-) .

    
por 01.11.2012 / 14:33
1

Pacotes que "perderam" seus repositórios ou foram instalados diretamente de um arquivo .rpm mostrarão Repository: @System quando você executar um zypper info neles. Então, em teoria, deve ser possível encontrá-los todos com zypper packages --repo @System --installed-only , mas isso ainda está faltando na libzypp ( openSUSE Bug 770239 - 'zypper pa' não tem suporte para @System repo ).

Como solução, é necessário fazer um zypper info em cada pacote instalado e filtrar aqueles que têm o repositório @System :

rpm -qa --queryformat="%{n}\n" | while read p; do zypper info $p | grep -q '^Repository: @System' && echo $p; done

Bastante lento, mas faz o trabalho.

    
por 17.05.2014 / 21:20