Para uma atualização suave do 10.04 para o 10.10, eu 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) de encontrar e remover esses pacotes?
Edit: esta questão não se restringe aos PPAs, 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 PPAs, a pergunta Como remover PPAs tem ótimas respostas.
package-management
Lekensteyn
fonte
fonte
Respostas:
Este script pode listar todos os pacotes de um servidor / filial específico (modificando as duas variáveis declaradas):
se você precisar listar todos os pacotes que não são de um servidor específico, independentemente da ramificação, substitua a penúltima linha por:
fonte
$2 == server && $3 == branch
por$2 != server
, minha pergunta é respondida. Coloque isso na sua resposta :) (abranch=
linha pode ser removida) Nota: assume-se que todos os pacotes vêm de um único servidor de repositório.libvpx0
pacote existia tanto no repositório principal quanto no PPA diário com cromo. Depois de remover os repositórios a partir/etc/apt/sources.list.d
, eu ainda tinha um pacote de esquerda-over:libvpx0
. I "reparado" isso da seguinte forma: remover a biblioteca com dpkg, ignorando dependências:sudo dpkg --ignore-depends=libvpx0 --remove libvpx0
. Em seguida, instalá-lo novamente a partir do repo principal:sudo apt-get install libvpx0
.sudo apt-get install libvpx0=$version_string
, supondo que os dois pacotes disponíveis tenham cadeias de versão diferentes.apt-cache policy $(dpkg -l | awk '/^ii/{print $2}') > policy.txt; awk '!/^ /{pkg=$1}check{print pkg, $2;check=0}/\*\*\*/{check=1} ' policy.txt | grep -v archive.ubuntu
é um bom começo (adicione maisgrep -v
para excluir determinados PPAs). As versões do pacote que não são conhecidas em nenhum repositório são exibidas como/var/lib/dpkg/status
.Confira ppa-purge .
Uso:
O servidor de hosts padrão é
ppa.launchpad.net
.Aqui está o link para a página de manual do
ppa-purge
comando para referência.fonte
Superando
aptitude
o Bug Multiarch parappa-purge
Normalmente, como Vadim Rutkovsky e Takkat ter explicado , correndo
ppa-purge
com a sintaxe padrão é uma maneira eficaz para remover todos os pacotes fornecidos por um PPA, degradando-os corretamente para versões fornecidas em outras fontes de software configurados sempre que possível.No entanto, como Takkat apontou, o bug 831768 impede que
ppa-purge
funcione corretamente para remover pacotes multiarch (como pacotes de 32 bits instalados em sistemas de 64 bits). Isso ocorre porqueaptitude
não é possível lidar com dependências conflitantes em pacotes multiarch (esse é o problema do bug) e o comportamento padrãoppa-purge
é usaraptitude
para fazer o downgrade de pacotes.Felizmente,
ppa-purge
aceita a-i
bandeira que faz com que preferemapt-get
aaptitude
como seu backend. Conforme documentado no relatório de erros, o uso deapt-get
é uma alternativa eficaz à chamada manualaptitude
, portanto, executarppa-purge
o-i
sinalizador deve ser uma solução eficaz para remover / desclassificar todos os pacotes fornecidos por um PPA, incluindo pacotes multiarch .Como fazer isso
Aqui está a sintaxe:
Como sempre (o mesmo que quando a
-i
bandeira não é usada):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 instalado para versões instáveis do qBittorrent instalado e deseje removê-lo completamente, fazendo o downgrade automático do qBittorrent para qualquer versão disponível nas minhas outras fontes de software, usando
apt-get
nos bastidores em vez deaptitude
. Então eu corria:Onde está documentado
Por alguma razão, algumas opções úteis para
ppa-purge
não estão documentadas em sua página de manual , inclusive-i
. Mas você pode obter informações sobre eles executandoppa-purge -h
(ou apenasppa-purge
sem argumentos):"A preferência reversa do apt-get upon aptitude" é um pouco enigmática. Ao olhar para a parte relevante do código fonte (
ppa-purge
é apenas um shell script, depois de tudo), podemos ver que isto significa que o comportamento padrão é a preferiraptitude
aapt-get
, ea-i
bandeira inverte essa preferência.fonte
ppa-purge
irá não remover ou pacotes de downgrade que já não são fornecidos pelo PPA a ser "purgado". No entanto, você pode postar uma pergunta separada sobre isso, para obter uma resposta mais autorizada ou bem documentada.ppa:username/path
. Além disso, o PPA deve ser ATIVADO antes de você tentar limpá-lo, mesmo que o script seja desativado imediatamente após a atualização da lista de pacotes a serem removidos, ele não "encontrará" os PPAs já desativados.aptitude search ~o
para encontrar pacotes órfãos sem fonte de instalação, se precisar remover algo que foi removido de um PPA (ou foi instalado como únicodpkg -i
).Aqui estão maneiras GUI de fazer isso. Espero que ajude para aqueles que não preferem CLI. Os passos são simples e fáceis de seguir.
Abra o gerenciador de pacotes sinápticos . Se não estiver instalado, instale-o:
Quando aberto, clique no botão Origem na parte inferior esquerda. 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 nesse repositório. Clique no primeiro campo i, e S ou no Versão Instalada para mostrar primeiro os pacotes instalados.
Agora selecione todos os pacotes para remover.
Dicas para marcar para remoção:
Selecione o primeiro pacote, mantenha pressionada a Shifttecla e novamente selecione o último pacote para selecionar todos. Em seguida, clique com o botão direito na caixa quadrada e selecione a marca para remoção ou a marca para remoção completa .
ou Selecione todos os pacotes e pressione Ctrl+ Apara selecionar todos. Em seguida, clique com o botão direito na caixa quadrada e escolha a marca para remoção ou a marca para remoção completa.
É isso aí. Ele será removido sem nenhum problema. Também anexei a imagem para torná-la mais clara. Espero que ajude. :)
fonte
Para pelo menos encontrá-los, comece desativando os PPAs e execute
apt-get update
. Então instaleapt-show-versions
. A execuçãoapt-show-versions | grep 'No available'
fornecerá uma lista de todos os pacotes instalados que não podem ser encontrados nos repositórios configurados. Com alguma mágica da linha de comando, você provavelmente pode remover apenas os nomes dos pacotes e passá-los paraapt-get remove
:Observe que isso percorrerá a lista retornada
apt-show-versions
e os removerá um a um. Dependendo do que encontrar, isso pode desinstalar algo não intencional devido a dependências, portanto verifique-o primeiro.fonte
libvpx0
pacote do PPA diário com cromo. A resposta do @ enzotib mostrou este pacote.apt-show-versions
como não raiz, ele precisarásudo apt-show-versions -i
atualizar seu cache e ver as alterações dos repositórios / PPAs removidos recentemente (caso contrário, ele será atualizado apenas por meio de um trabalho cron.daily)Achei difícil usar o ppa-purge.
Abra o Synaptic Package Manager em Sistema e selecione Configurações, Repositórios.
Remova os que você não deseja.
Feito!
fonte