[RESOLVIDO] Atualização de sistema sem remover pacote com depedencias desatualizadas

Ontem caiu uma nova atualização pro meu Manjaro mas estou num impasse.

Eu possuo instalado o pacote do yuzu (o emulador), que veio dos repositórios oficiais, porém acredito que vocês saibam, que ele não está mais sendo atualizado, e por consequência possui dependência em bibliotecas mais antigas.

O problema é que a atualização nova que caiu também atualiza o ffmpeg, e esse por sua vez, as bibliotecas que o yuzu depende para uma versão a qual ele não suporta:

$ sudo pacman -Syu                                                                                                                                                               
:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
 multilib is up to date
:: Starting full system upgrade...
resolving dependencies...
looking for conflicting packages...
error: failed to prepare transaction (could not satisfy dependencies)
:: installing ffmpeg (2:7.0.1-2) breaks dependency 'libavcodec.so=60-64' required by yuzu
:: installing ffmpeg (2:7.0.1-2) breaks dependency 'libavutil.so=58-64' required by yuzu
:: installing ffmpeg (2:7.0.1-2) breaks dependency 'libswscale.so=7-64' required by yuzu

e ao ignorar o pacote do ffmpeg o problema é maior, pois vários pacotes dependem dele:

$ sudo pacman -Syu                                        
:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
 multilib is up to date
:: Starting full system upgrade...
warning: ffmpeg: ignoring package upgrade (2:6.1.1-7 => 2:7.0.1-2)
resolving dependencies...
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavcodec.so=61-64", a dependency of "aubio"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavformat.so=61-64", a dependency of "aubio"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavutil.so=59-64", a dependency of "aubio"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libswresample.so=5-64", a dependency of "aubio"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavcodec.so=61-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavformat.so=61-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavutil.so=59-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libswresample.so=5-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavcodec.so=61-64", a dependency of "aubio"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavformat.so=61-64", a dependency of "aubio"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavutil.so=59-64", a dependency of "aubio"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libswresample.so=5-64", a dependency of "aubio"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavcodec.so=61-64", a dependency of "aubio"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavformat.so=61-64", a dependency of "aubio"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavutil.so=59-64", a dependency of "aubio"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libswresample.so=5-64", a dependency of "aubio"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavcodec.so=61-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavformat.so=61-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavutil.so=59-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libswresample.so=5-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavcodec.so=61-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavformat.so=61-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavutil.so=59-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libswresample.so=5-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavcodec.so=61-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavformat.so=61-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavutil.so=59-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libswresample.so=5-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavcodec.so=61-64", a dependency of "mixxx"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavformat.so=61-64", a dependency of "mixxx"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavutil.so=59-64", a dependency of "mixxx"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavcodec.so=61-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavformat.so=61-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavutil.so=59-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libswresample.so=5-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavcodec.so=61-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavformat.so=61-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavutil.so=59-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libswresample.so=5-64", a dependency of "chromaprint"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavcodec.so=61-64", a dependency of "mpd"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavfilter.so=10-64", a dependency of "mpd"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavformat.so=61-64", a dependency of "mpd"
warning: ignoring package ffmpeg-2:7.0.1-2
warning: cannot resolve "libavutil.so=59-64", a dependency of "mpd"
:: The following packages cannot be upgraded due to unresolvable dependencies:
      aubio  chromaprint  mixxx  mpd

:: Do you want to skip the above packages for this upgrade? [y/N] 

Uma possível solução pra isso seria desinstalar o yuzu e depois instalá-lo novamente, mas ele já não se encontra mais nos repositórios do manjaro e nem mesmo no AUR, e eu não me sinto a vontade de utilizar algum dos seus forks que são no mínimo questionáveis. Eu gostaria de me manter com algo que conheço e confio e de uma fonte que conheço e confio, e por isso o dilema. Como atualizar o sistema sem desinstalar o yuzu e sem ter que abrir mão de outros pacotes?

É possivel editar o manifesto do pacote do yuzu no manjaro para que ele aceite versões mais novas dessas bibliotecas? Se sim como?

Não seria melhor tentar colocar ele num distrobox pra ficar isolado do sistema principal? Aqui faço isso quando preciso de algo mais antigo.

1 curtida

Situação difícil, pois esse é um dos problemas dos pacotes binários: a dependência dele é travada. Para manter ele no sistema, vc teria que pensar em obter o código fonte e compilá-lo (caso ele suporte a nova versão do ffmpeg), ou mesmo ter que dar uma de programador para fazer os patches e a compilação não dar erro com as novas versões. Manter um sistema desatualizado (via distrobox ou chroot) também pode ser uma saída.

1 curtida

Eu acabei resolvendo de uma forma meio inusitada.

Ao invés de isolar um sistema desatualizado eu editei o arquivo desc em /var/lib/pacman/local/yuzu-1706-1. Esse é um arquivo de texto que controla o limite das versões das bibliotecas que o yuzu aceita e é de onde o pacman tirou a informação de que não poderia atualizar pois isso quebraria o yuzu. Ao modificar o arquivo para aceitar versões mais novas o sistema aceitou atualizar.

Dito isso, após o update o yuzu estava quebrado, e faltando várias bibliotecas que tinham sido atualizadas para versões mais novas, e por isso ele se recusava a abrir. Listei quais não foram encontradas com o ldd e pra minha sorte todas as que faltavam (+/- umas 23 bibliotecas) estão no repositório online do Debian nas versões que eu precisava.

Baixei todas e as coloquei em /lib e /usr/lib, e com isso o sistema agora pode ser atualizado indefinidamente sem interferir no funcionamento do yuzu, que agora funciona normalmente.

Como bibliotecas mais velhas podem ser um problema de segurança também criei um script para copiá-las e um para removê-las de lá, assim elas só ficam em uso quando foram necessárias.

1 curtida

Parabéns! Virou praticamente um AppImage, mas com script!

2 curtidas

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