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):
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 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.