
Já vi muitas respostas sobre como consertar um pacote quebrado em múltiplas distribuições, o que parece ser muito útil e resolver os problemas. Mas estou curioso para saber como um pacote é quebrado.
Eu estava solucionando problemas em um pipeline que usava um apt-get install
comando e não foi possível instalar algumas dependências. Depois de algumas tentativas, consegui fazer o pipeline funcionar. Mas pesquisando soluções, descobri que o apt-get tem um --fix-broken
sinalizador muito útil, que resolveu meu problema. Mas a questão permanece,qual era o problema? Não está claro para mim como encontrar o problema exato que --fix-broken
foi resolvido para mim.
Olhando através de sua página de manual, há algumas informações genéricas sobre:
Fix; attempt to correct a system with broken dependencies in place. This option, when
used with install/remove, can omit any packages to permit APT to deduce a likely
solution. If packages are specified, these have to completely correct the problem. The
option is sometimes necessary when running APT for the first time; APT itself does not
allow broken package dependencies to exist on a system. It is possible that a system's
dependency structure can be so corrupt as to require manual intervention.
No caso de um pipeline, cujo sistema está instanciado no momento, o que poderia ter acontecido com o pacote que o quebrou? Alguém consegue se aprofundar em como esses sinalizadores funcionam? E mais especificamente, como um pacote é quebrado?
Responder1
A falha típica que apt install --fix-broken
aborda é a falta de dependências. A maneira usualqueacontece é usar dpkg
para instalar diretamente um pacote: dpkg
saberá se as dependências estão faltando, mas não pode recuperar as dependências faltantes, então o pacote acabará parcialmente instalado (instalado, mas não configurado). apt install --fix-broken
resolve dependências quebradas e instala quaisquer pacotes necessários — ou remove pacotes totalmente quebrados se suas dependências não puderem ser resolvidas.
Se vocêsãousando dpkg
diretamente, normalmente é melhor usar apt install
- você pode apontá-lo para um pacote local e ele resolverá suas dependências durante a instalação.
Responder2
Um pacote é apenas um software com uma lista de dependências. Se o seu sistema tiver algumas instalações não padrão (construídas a partir do código-fonte, por exemplo), ou se você tiver vinculado uma versão específica de um pacote (usando "dpkg hold" ou "dnf --exclude") para evitar quebrar alguma outra instalação , a tentativa de instalar um pacote que requer um estado diferente de todos esses pacotes dependentes falhará, resultando em um pacote "quebrado".
É importante observar que pode não haver nada de errado com o pacote ou com o estado do seu sistema. O pacote original pode ser adequado para o seu compilado manualmente (seja qual for), mas como não é o que éesperadoé visto como quebrado.