Algumas semanas atrás, tive problemas similares com o oibaf ppa. Mesmo quando ppa-purge
falhar, você pode reverter para a versão oficial do repositório do Ubuntu. Especialmente porque as dependências desses pacotes não são enormes.
Portanto, sugiro apenas anotar os nomes dos pacotes da saída mostrada e usar o comando apt policy package-name
para listar a versão do respectivo repositório. Por exemplo, apt policy libgl1-mesa-dev
pode retornar assim
apt policy libgl1-mesa-dev
libgl1-mesa-dev:
Installed: 1:17.2~git170422012800.d682f8a~z~padoka0
Candidate: 1:17.2~git170422012800.d682f8a~z~padoka0
Version table:
*** 1:17.2~git170422012800.d682f8a~z~padoka0 100
100 /var/lib/dpkg/status
17.2~git1704230730.070072~gd~z 500
500 ppa.launchpad.net/oibaf/… zesty/main amd64 Packages
17.0.3-1ubuntu1 500
500 hr.archive.ubuntu.com/ubuntu zesty/main amd64 Packages
Você pode ver que a versão mais recente do repositório oficial é 17.0.3-1ubuntu1
. Observe esta versão. Faça isso para todos os pacotes ofensivos.
Depois de reunir todos os nomes de pacotes com a versão oficial mais recente, você poderá usar esse tipo de comando sudo apt install libgl1-mesa-dev=version
para todos os pacotes. Vai forçar apt
a instalar os pacotes que você mencionou na versão.
Para mais pacotes aparece para dizer a mesma coisa incluem esses pacotes também.
Depois disso e com alguma sorte, você deve estar no último repositório oficial. Então use ppa-purge
para purgar graciosamente os dois ppas.
Discutimos o problema no chat e parece que este comando funcionou.
sudo apt-get install libgl1-mesa-glx=17.0.3-1ubuntu1 libgl1-mesa-dev=17.0.3-1ubuntu1 libgl1-mesa-glx:i386=17.0.3-1ubuntu1 libglapi-mesa=17.0.3-1ubuntu1 mesa-common-dev=17.0* libglapi-mesa:i386=17.0* libglapi-mesa=17.0* libglapi-mesa=17.0* libgles2-mesa=17.0*
Conselho Eu aconselho a ter sempre aptitude
instalado. Se estiver instalado, ppa-purge
poderá funcionar de forma mais adequada.
Obrigado A Ravexina estava tentando ajudar antes de entrar na sala de bate-papo. Então, graças a ele, especialmente por trabalhar em vários outros truques.
Outro truque descoberto recentemente
Eu recentemente descobri uma maneira mais conveniente de fazer o downgrade / escape do inferno da dependência sem especificar a versão. Estou listando as etapas
Você removeria o ppa e identificaria os pacotes que estão criando o problema de dependência de esse ppa . Esses são geralmente os pacotes que você encontrará no seguinte estilo de mensagens
libgl1-mesa-dev : Depends: libgl1-mesa-glx (= 1:17.2~git170422012800.d682f8a~z~padoka0) but 17.2~git1704220730.d682f8~gd~z is installed
Você sabe que o pacote é libgl1-mesa-glx
, que é superior ao pacote apt
find para corresponder ao requeste libgl1-mesa-dev
, criando um problema.
Uma vez que você identifica os pacotes problemáticos daquele ppa, você usará este apt para instalar o pacote de outro repositório sem usar o nome do release em vez da string de versão como esta (para 16.04, o nome do release é xenial
)
sudo apt install libgl1-mesa-dev/xenial
Isto irá selecionar uma versão de um repositório com o nome do arquivo xenial
(Note que, todos os ppa possuem este xenial
como nome do arquivo). Já que o pacote instalado não é de xenial
archive (Foi, mas após a remoção do ppa, é de versão desconhecida para o apt), apt
irá selecionar uma versão que vem com o mesmo release. Na maioria das vezes, o repositório oficial vem com o Ubuntu (a menos que você tenha esse pacote de outro ppa ou repo).
Surpreendentemente, apt
age de forma mais inteligente neste caso. Em vez de selecionar a versão mais alta para a dependência de libgl1-mesa-dev
, ele selecionará a versão mais alta do release especificado que será do repositório oficial, mesmo que precise de downgrade de outros pacotes instalados, o que efetivamente resolve o problema. problema!