Dependências desencontradas - mangohud

Boa noite, sou novo no Linux e estou usando o Pop!_OS 22.04 LTS (64 bits). Estou tentando executar o comando sudo apt update && sudo apt upgrade -y, no entanto, estou encontrando o seguinte erro:

Você pode querer executar 'apt --fix-broken install' para corrigí-los.
Os pacotes a seguir têm dependências desencontradas:
 libx11-xcb1 : Depende: libx11-6 (= 2:1.8.7-1+b1) mas 2:1.7.5-1ubuntu0.3 está instalado
               Quebra: libx11-xcb1:i386 (!= 2:1.8.7-1+b1) mas 2:1.7.5-1ubuntu0.3 está instalado
 libx11-xcb1:i386 : Quebra: libx11-xcb1 (!= 2:1.7.5-1ubuntu0.3) mas 2:1.8.7-1+b1 está instalado
 mangoapp : Depende: libc6 (>= 2.36) mas 2.35-0ubuntu3.8 está instalado
            Depende: libglew2.2 (>= 2.2.0-4+b1) mas não está instalado
 mangohud : Depende: libc6 (>= 2.36) mas 2.35-0ubuntu3.8 está instalado
            Recomenda: mangoctl mas não é instalável
            Recomenda: mangoplot mas não é instalável
E: Dependências desencontradas. Tente 'apt --fix-broken install' sem nenhum pacote (ou especifique uma solução).

Tentei executar o comando apt --fix-broken install, mas apareceu outro erro:

Lendo informação de estado... Pronto        
Corrigindo dependências... falhou.
Os pacotes a seguir têm dependências desencontradas:
 libx11-xcb1 : Depende: libx11-6 (= 2:1.8.7-1+b1) mas 2:1.7.5-1ubuntu0.3 está instalado
               Quebra: libx11-xcb1:i386 (!= 2:1.8.7-1+b1) mas 2:1.7.5-1ubuntu0.3 está instalado
 libx11-xcb1:i386 : Quebra: libx11-xcb1 (!= 2:1.7.5-1ubuntu0.3) mas 2:1.8.7-1+b1 está instalado
 mangoapp : Depende: libc6 (>= 2.36) mas 2.35-0ubuntu3.8 está instalado
            Depende: libglew2.2 (>= 2.2.0-4+b1) mas não está instalado
 mangohud : Depende: libc6 (>= 2.36) mas 2.35-0ubuntu3.8 está instalado
            Recomenda: mangoctl mas não é instalável
            Recomenda: mangoplot mas não é instalável
E: Erro, pkgProblemResolver::Resolve gersudo apt remove mangoapp mangohudou falhas, isto pode ser causado por pacotes mantidos (hold).
E: Impossível corrigir dependências

Isso ocorreu após eu tentar instalar o MangoHud e agora não consigo removê-lo nem suas dependências. Alguma sugestão do que possa ser feito?

Parece que vc instalou um .deb não compatível ou adicionou um repositório de terceiro também não compatível com a sua versão de distribuição. A solução vai depender do jeito que vc tentou instalar o mangohud. Como vc fez?

Eu baixei o .deb do mangohud e do mangoapp através do site de pacotes do Debian (o mangoapp foi instalado por engano). No entanto, ao tentar instalar, o instalador relatava erros relacionados a algumas bibliotecas ausentes, as quais fui baixando e instalando (provavelmente causando o problema). Eu havia seguido este tutorial https://www.youtube.com/watch?v=Hj_1MsBT-UU&t=164s, mas durante a instalação, foram identificadas outras bibliotecas ausentes, que estão listadas abaixo.

libspdlog1.12_1.12.0+ds-2+b1_amd64.deb
libglfw3_3.4-1_amd64.deb
libc6_2.38-12_amd64.deb
libfmt9_9.1.0+ds1-2_amd64.deb
libspdlog1.10_1.10.0+ds-0.4_amd64.deb

Realmente não sei como reverter essas alterações.

Já tentou desinstalar os pacotes instalados? Use dpkg -P nomedopacote-versao para todos os que vc instalou e o sistema deve “desquebrar”.

Eu não uso o Debian, mas tentando ajudar aqui: no caso do libspdlog1.12_1.12.0+ds-2+b1_amd64.deb, tente as opções:
dpkg -P libspdlog1.12_1.12.0+ds-2+b1_amd64
dpkg -P libspdlog1.12_1.12.0+ds-2+b1
dpkg -P libspdlog1.12_1.12.0+ds-2
dpkg -P libspdlog1.12_1.12.0+ds
dpkg -P libspdlog1.12_1.12.0
dpkg -P libspdlog1.12

e assim por diante em todos os pacotes que vc baixou e instalou manualmente. O apt é um facilitador pro dpkg, mas quando se usa o dpkg manualmente não há checagem nem confirmação para comandos que possam destruir o sistema!!!

Boa parte dos pacotes que você tentou instalar somente existe no Debian sid e no Ubuntu mantic/oracular, então você pode começar removendo os pacotes libspdlog1.12,libspdlog1.10, libfmt9 junto dos pacotes relacionados ao goverlay, mango sei la o que é reverter os pacotes libc6 e libglfw3 as versões respectivas do Ubuntu 22.04.

Da próxima vez, evite misturar pacotes de outras distros para não criar um Frankenstein. Quando for instalar pacotes .deb utilize o apt para isso, apenas use o dpkg -i caso saiba o que esta fazendo.

sudo apt install ./nome_do_pacote.deb

Boa sorte xd

Muito obrigado pelas dicas. Consegui desinstalar os pacotes utilizando o dpkg -P. Vou tomar mais cuidado com os pacotes .deb antes de instalá-los indiscriminadamente.

Eu pensei ter resolvido todos os problemas, mas infelizmente não foi o caso. Estou com duas dependências desencontradas e não ficou muito claro para mim como posso reverter para as versões originais. Além disso, não posso simplesmente desinstalá-las, pois isso quebraria outros programas.

Os pacotes a seguir têm dependências desencontradas:
 libx11-xcb1 : Depende: libx11-6 (= 2:1.8.7-1+b1) mas 2:1.7.5-1ubuntu0.3 está instalado
               Quebra: libx11-xcb1:i386 (!= 2:1.8.7-1+b1) mas 2:1.7.5-1ubuntu0.3 está instalado
 libx11-xcb1:i386 : Quebra: libx11-xcb1 (!= 2:1.7.5-1ubuntu0.3) mas 2:1.8.7-1+b1 está instalado
E: Erro, pkgProblemResolver::Resolve gerou falhas, isto pode ser causado por pacotes mantidos (hold).
E: Impossível corrigir dependências

Acho que o problema é que esse pacote instalado manualmente não consegue ser removido automaticamente por não ser mais necessário. Para ver os pacotes instalados manualmente

apt-mark showmanual

Se aparecer o libx11-xcb1, então marque-o como instalado automaticamente (isso remover o bloqueio e ele poderá ser desisntalado automaticamente).

apt-mark auto libx11-xcb1
apt-mark auto libx11-xcb1:i386

Se der certo então o apt vai conseguir resolver o conflito. Tente um apt autoremove


Se for o caso do pacote estar em hold (bloqueados para instalar e desinstalar), então ele vai aparecer quando vc listar os pacotes com apt-mark showhold

Ele não aparece com o comando apt-mark showmanual; na verdade, aparece: libx11-xcb1:i386 já estava definido para ser instalado automaticamente. E ao tentar sudo apt autoremove, o mesmo erro aparece.

Lendo listas de pacotes... Pronto
Construindo árvore de dependências... Pronto
Lendo informação de estado... Pronto        
Você pode querer executar 'apt --fix-broken install' para corrigí-los.
Os pacotes a seguir têm dependências desencontradas:
 libx11-xcb1 : Depende: libx11-6 (= 2:1.8.7-1+b1) mas 2:1.7.5-1ubuntu0.3 está instalado
               Quebra: libx11-xcb1:i386 (!= 2:1.8.7-1+b1) mas 2:1.7.5-1ubuntu0.3 está instalado
 libx11-xcb1:i386 : Quebra: libx11-xcb1 (!= 2:1.7.5-1ubuntu0.3) mas 2:1.8.7-1+b1 está instalado
E: Dependências desencontradas. Tente 'apt --fix-broken install' sem nenhum pacote (ou especifique uma solução).

Também já tentei o apt --fix-broken install, mas sem sucesso.

Um monte de pacotes depende dessa biblioteca. Teria que desinstalá-la manualmente mas somente a versão mais nova. Imagino que seja com:

apt-get remove libx11-xcb1=2:1.8.7-1+b1

Ah, confira que só vai desinstalar um pacote. Talvez com o dpkg seja possível. Liste todas as versões instaladas pra pegar a versão certa:
dpkg -l | grep libx11-xcb1
Desinstale (com -r ou -P):
dpkg -r libx11-xcb1:amd64=2:1.8.7-1

Tenho essas duas versões da biblioteca:

pU  libx11-xcb1:amd64                                 2:1.8.7-1+b1                                                      amd64        Xlib/XCB interface library
pF  libx11-xcb1:i386                                  2:1.7.5-1ubuntu0.3                                                i386         Xlib/XCB interface library

Ao tentar desistalar com apt-get remove libx11-xcb1=2:1.8.7-1+b1 , dpkg -r libx11-xcb1:amd64 ou dpkg -P libx11-xcb1:amd64, aparece o seguinte erro:

dpkg: problemas com dependências previnem a remoção de libx11-xcb1:amd64:
 xserver-xorg-video-intel depende de libx11-xcb1 (>= 2:1.7.2).
 xserver-xephyr depende de libx11-xcb1 (>= 2:1.7.5).
 x11-utils depende de libx11-xcb1 (>= 2:1.7.2).
 pulseaudio-utils depende de libx11-xcb1 (>= 2:1.7.5).
 mesa-vulkan-drivers:amd64 depende de libx11-xcb1 (>= 2:1.7.5).
 mesa-vdpau-drivers:amd64 depende de libx11-xcb1 (>= 2:1.7.5).
 mesa-va-drivers:amd64 depende de libx11-xcb1 (>= 2:1.7.5).
 libstartup-notification0:amd64 depende de libx11-xcb1 (>= 2:1.7.2).
 libreoffice-core depende de libx11-xcb1 (>= 2:1.7.5).
 libqt5webenginecore5:amd64 depende de libx11-xcb1 (>= 2:1.7.5).
 libqt5gui5:amd64 depende de libx11-xcb1 (>= 2:1.7.5).
 libpulse0:amd64 depende de libx11-xcb1 (>= 2:1.7.5).
 libmutter-10-0:amd64 depende de libx11-xcb1 (>= 2:1.7.5).
 libimlib2:amd64 depende de libx11-xcb1 (>= 2:1.7.2).
 libgstreamer-gl1.0-0:amd64 depende de libx11-xcb1 (>= 2:1.7.5).
 libglx-mesa0:amd64 depende de libx11-xcb1 (>= 2:1.7.5).
 libglfw3:amd64 depende de libx11-xcb1 (>= 2:1.8.7).
 libegl-mesa0:amd64 depende de libx11-xcb1 (>= 2:1.7.5).
 firefox depende de libx11-xcb1 (>= 2:1.7.5).

dpkg: erro ao processar o pacote libx11-xcb1:amd64 (--purge):
 problemas de dependência - não removendo
Erros foram encontrados durante o processamento de:
 libx11-xcb1:amd64

Pelo que percebi o libx11-xcb1:amd64 tem somente uma versão instalada, e essa versão é a 2:1.8.7-1+b1

Precisa então instalar a versão oficial do repositório (1.7.5). Para isso vc vai precisar fazer um downgrade dessa versão.
Pra ter a certeza de qual versão é a disponível, use apt-cache showpkg libx11-xcb1
Daí veja o nome completo da versão 1.7.5 disponível e instale-a com algo como:
apt install libx11-xcb1=1.7.5
apt install libx11-xcb1=2:1.7.5-ubuntu0

Caso instale, leia atentamente se ele vai remover a versão superior e instalar a inferior (a), ou se vai apenas instalar a versão inferior (b).

Caso (a): veja se resolveu com apt --fix-broken install.
Caso (b): remova a versão superior apt-get remove libx11-xcb1=2:1.8.7-1+b1 (imagino que daí ele vai deixar pois já tem outra versão que não vai deixar quebrar a dependência)

Ao utilizar o comando apt install libx11-xcb1=2:1.7.5-1ubuntu0.3, ele inicia o processo de sobrescrição, mas, em seguida, outro erro é apresentado:

dpkg: erro ao processar o arquivo /var/cache/apt/archives/libx11-xcb1_2%3a1.7.5-1ubuntu0.3_amd64.deb (--unpa
ck):
 a tentar sobreescrever '/usr/share/doc/libx11-xcb1/changelog.Debian.gz' partilhado, que é diferente de outr
as instâncias do pacote libx11-xcb1:amd64
Erros foram encontrados durante o processamento de:
 /var/cache/apt/archives/libx11-xcb1_2%3a1.7.5-1ubuntu0.3_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Tente:

apt --fix-broken install libx11-xcb1=2:1.7.5-1ubuntu0.3
ou
apt -o Dpkg::Options::="--force-overwrite" install libx11-xcb1=2:1.7.5-1ubuntu0.3

Ah, sabe que as chances de quebrar de uma vez são grandes né? Tenha backup de tudo.

Estava com medo dessa segunda resposta kkkkk. Rodei o update e o upgrade e até o momento está tudo funcionando normalmente, mas por segurança fiz backup de tudo. Muito obrigado pela paciência!

Mas chegou a usar essa última resposta? Precisou do “force-overwrite”?

Pra mim tava meio difícil de ajudar porque eu parei de usar o debian faz 2 anos e tava com dificuldades de refrescar minha memória. Também não preparei uma VM com ele quebrada pra testar pra ter certeza dos comandos.

Precisei usar o ‘force-overwrite’. Na verdade, estou usando o Pop!_OS, mas inventei de instalar alguns pacotes manualmente.

1 curtida

Positivo! Então acredito que entendi o problema e qual foi a solução. Resumindo aqui:

  1. Foi instalado um programa de uma versão da distribuição superior. Nesse caso foi instalado manualmente o mangohud para o ubuntu noble (24.04LTS) com o dpgk numa instalação baseada no ubuntu jammy (22.04LTS).
  2. Esse novo pacote gerou dependências desencontradas de alguns pacotes novos e alguns pacotes que precisavam estar em versão superior.
  3. Os pacotes necessários foram instalados também manualmente, mas chegou num ponto de inconsistência de versões, algo bem comum quando se misturam pacotes de diferentes versões da distribuição ou diferentes distribuições que usam a mesma base.

Solução:

  1. Desinstalar todos os novos pacotes instalados. Os pacotes que foram novas instalações foram removidos sem problemas com o dpkg -P , mas aqueles que foram atualizados não são possíveis de serem desinstalados por quebra de dependências.
  2. Para o segundo caso, é necessário fazer o retorno da versão do pacote para a versão original. O apt e o dpkg não fazem isso, a menos que seja informada a opção “force-overwrite”. Isso acontece pois no upgrade de versão, ele aceita sobrescrever os arquivos, mas no downgrade somente forçando.

Este tópico foi fechado automaticamente 3 dias depois da última resposta. Novas respostas não são mais permitidas.