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 porque aptitude
não é possível lidar com dependências conflitantes em pacotes multiarch (esse é o problema do bug) e o comportamento padrão ppa-purge
é usar aptitude
para fazer o downgrade de pacotes.
Felizmente, ppa-purge
aceita a -i
bandeira que faz com que preferem apt-get
a aptitude
como seu backend. Conforme documentado no relatório de erros, o uso de apt-get
é uma alternativa eficaz à chamada manual aptitude
, portanto, executar ppa-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:
sudo ppa-purge -i ppa:ppaowner/ppaname
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:
sudo ppa-purge -i ppa:hydr0g3n/qbittorrent-unstable
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 executando ppa-purge -h
(ou apenas ppa-purge
sem argumentos):
ek@Del:~$ 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 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 preferir aptitude
a apt-get
, ea -i
bandeira inverte essa preferência.