Como removo todos os pacotes de um determinado repositório?

29

Para uma atualização tranquila de 10.04 para 10.10, gostaria de remover todos os pacotes que não estão nos repositórios padrão (por exemplo, PPA do chromium e repositórios de terceiros). Qual é a maneira mais fácil (preferencialmente CLI) para encontrar e remover esses pacotes?

Edit: essa questão não é restrita a PPA's, eu também tenho um repositório x2go, então estou procurando um comando genérico para remover pacotes pertencentes a um determinado repositório. Para os PPAs, a questão Como os PPAs podem ser removidos tem ótimas respostas.

    
por Lekensteyn 28.04.2011 / 14:45

6 respostas

11

Este script pode listar todos os pacotes de um determinado servidor / filial (modificando as duas variáveis declaradas):

#!/bin/bash

server="http://it.archive.ubuntu.com/ubuntu/"
branch="maverick-updates/main"

apt-cache policy $(dpkg -l | awk 'NR >= 6 { print  }') |
  awk -v server="$server" -v branch="$branch" \
    '/^[^ ]/      { split(, a, ":"); pkg = a[1] }
    nextline == 1 { nextline = 0; if ( == server &&  == branch) print pkg }
    /\*\*\*/      { nextline = 1 }'

se você precisar listar todos os pacotes que não vêm de um determinado servidor, independentemente da ramificação, substitua a penúltima linha por:

nextline == 1 { nextline = 0; if ( != server) print pkg }
    
por enzotib 28.04.2011 / 15:07
22

Confira ppa-purge .

Uso:

ppa-purge -purge <nameofppa> [-s hostserver]

O padrão do Hostserver é ppa.launchpad.net .

Aqui está o link para a página de manual do comando ppa-purge para referência.

    
por Vadim Rutkovsky 28.04.2011 / 15:21
17

Superando o erro Multiarch de aptitude para ppa-purge

Normalmente, como Vadim Rutkovsky e Takkat tem explicado , executando ppa-purge com a sintaxe padrão é uma forma eficaz de remover todos os pacotes fornecidos por um PPA, fazendo um downgrade apropriado deles para as versões fornecidas em outras fontes de software configuradas, sempre que possível.

No entanto, como Takkat apontou, o bug 831768 impede que ppa-purge funcionando corretamente para remover pacotes multiarch (como pacotes de 32 bits instalados em sistemas de 64 bits). Isso ocorre porque aptitude não pode lidar com dependências conflitantes em pacotes multiarch (é sobre isso que o erro se refere), e o comportamento padrão de ppa-purge é usar aptitude para fazer downgrade de pacotes.

Felizmente, ppa-purge aceita o sinal -i que faz com que ele prefira apt-get a aptitude como seu back-end. Conforme documentado no relatório de erros, usar apt-get é um alternativa eficaz para invocar manualmente aptitude , portanto, executar ppa-purge com o -i sinalizador deve ser uma solução eficaz para remover / rebaixar todos os pacotes fornecidos por um PPA, incluindo pacotes multiarch .

Como fazer isso

Aqui está a sintaxe:

sudo ppa-purge -i ppa:ppaowner/ppaname

Como de costume (mesmo quando o -i flag não é usado):

  • ppaowner é substituído pelo proprietário do PPA.
  • /ppaname é opcional. Se presente, ppaname é substituído pelo nome do PPA. Caso contrário, o padrão é ppa .

Por exemplo , suponha que eu tenha o PPA para compilações instáveis do qBittorrent instalado, e eu queria removê-lo completamente, desclassificando automaticamente o qBittorrent para qualquer versão disponível através de minhas outras fontes de software usando apt-get nos bastidores, em vez de aptitude . Então eu corria:

sudo ppa-purge -i ppa:hydr0g3n/qbittorrent-unstable

Onde está documentado

Por algum motivo, algumas opções úteis para ppa-purge não estão documentadas em sua página de manual , incluindo -i . Mas você pode obter informações sobre eles executando ppa-purge -h (ou apenas ppa-purge sem argumentos):

[email protected]:~$ ppa-purge -h
Usage: sudo ppa-purge [options] <ppa:ppaowner>[/ppaname]

ppa-purge will reset all packages from a PPA to the standard
versions released for your distribution.

Options:
    -p [ppaname]        PPA name to be disabled (default: ppa)
    -s [host]       Repository server (default: ppa.launchpad.net)
    -d [distribution]   Override the default distribution choice.
    -y          Pass -y --force-yes to apt-get or -y to aptitude
    -i          Reverse preference of apt-get upon aptitude.
    -h          Display this help text

Example usage commands:
    sudo ppa-purge xorg-edgers
    will remove https://launchpad.net/~xorg-edgers/+archive/ppa

    sudo ppa-purge -p xorg-testing sarvatt
    will remove https://launchpad.net/~sarvatt/+archive/xorg-testing

    sudo ppa-purge ppa:ubuntu-x-swat/x-updates
    will remove https://launchpad.net/~ubuntu-x-swat/+archive/x-updates

Notice: If ppa-purge fails for some reason and you wish to try again,
(For example: you left synaptic open while attempting to run it) simply
uncomment the PPA from your sources, run apt-get update and try again.

"A preferência inversa do apt-get no aptitude" é um pouco enigmática. Ao olhar para a parte relevante do código-fonte ( ppa-purge é apenas um script de shell, afinal), podemos ver Isso significa que o comportamento padrão é preferir aptitude a apt-get , e a -i sinaliza essa preferência.

    
por Eliah Kagan 23.07.2012 / 08:55
3

Para pelo menos encontrá-los, comece desabilitando os PPA's e execute apt-get update . Em seguida, instale apt-show-versions . A execução de apt-show-versions | grep 'No available' fornecerá uma lista de todos os seus pacotes instalados que não podem ser encontrados nos repositórios configurados. Com alguma mágica de linha de comando, você provavelmente pode remover apenas os nomes dos pacotes e passá-los para apt-get remove :

 for i in 'apt-show-versions | grep 'No available' | cut -d' ' -f 1' ; do  sudo apt-get remove -y $i ; done

Observe que isso passará pela lista retornada de apt-show-versions e os removerá um por um. Dependendo do que encontrar, isso pode desinstalar algo não intencional devido a dependências, portanto, verifique primeiro.

    
por Egil 28.04.2011 / 14:59
3

Aqui estão as maneiras da GUI para fazer isso. Espero que ajudaria para aqueles que não preferem o CLI. Os passos são simples e fáceis de seguir.

  1. Abra o gerenciador de pacotes synaptic . Se não estiver instalado, instale-o por:

    sudo apt-get install synaptic
    
  2. Quando aberto, clique no botão Origem no canto inferior esquerdo. Ele listará todos os repositórios no lado superior esquerdo. Selecione o repositório específico para o qual os pacotes devem ser removidos. Ele listará todos os pacotes sob esse repositório. Clique no primeiro campo i, e S ou Versão Instalada para mostrar os pacotes instalados primeiro.

  3. Agora, selecione todos os pacotes para remover.

    Dicas para marcar a remoção:

    1. Selecione o primeiro pacote e segure a tecla Shift e selecione novamente o último pacote para selecionar todos. Em seguida, clique com o botão direito do mouse na caixa square e selecione marca para remoção ou marca para remoção completa .

    2. ou Selecione quaisquer pacotes e pressione Ctrl + A para selecionar todos. Em seguida, clique com o botão direito do mouse na caixa square e escolha a marca para remoção ou para remoção completa.

É isso. Ele irá remover sem nenhum problema. Eu também anexei a imagem para torná-la mais clara. Espero que ajude. :)

    
por Saurav Kumar 08.03.2014 / 12:44
0

Eu achei que o uso de ppa-purga era difícil.

Abra o Gerenciador de Pacotes Synaptic em Sistema e selecione Configurações, Repositórios.

Remova os que você não quer.

Feito!

    
por Joe 09.05.2013 / 18:58