Como um pacote Debian é quebrado?

Como um pacote Debian é quebrado?

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 installcomando 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-brokensinalizador 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-brokenfoi 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-brokenaborda é a falta de dependências. A maneira usualqueacontece é usar dpkgpara instalar diretamente um pacote: dpkgsaberá 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-brokenresolve 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 dpkgdiretamente, 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.

informação relacionada