Como posso identificar os pacotes com dependências conflitantes?

0

Ao executar sudo apt upgrade , recebo a seguinte mensagem de erro:

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libcurl4 : Conflicts: libcurl3 but 7.60.0-1 is to be installed
E: Broken packages

Eu entendo isso como:

  • Você instalou anteriormente o pacote X, que depende de libcurl4 (portanto, libcurl4 já está instalado).
  • Sua atualização inclui um pacote Y com uma nova dependência em libcurl3 (versão 7.60.0-1).
  • libcurl3 não pode ser instalado porque está em conflito com libcurl4 .

Eu usei o GNOME Packages para ver as listas de pacotes que requerem libcurl3 e libcurl4, mas as listas são muito longas e não podem ser reduzidas (especificamente, elas não indicam quais pacotes já estão instalados ou quais são para ser instalado).

Eu tentei depurar o apt, mas não parece adicionar nenhuma informação:

$ sudo apt -o Debug::pkgProblemResolver=yes upgrade                                                                                                           
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Entering ResolveByKeep 10%
  Dependencies are not satisfied for libcurl4:amd64 < 7.60.0-2 @ii mK Ib >
Keeping package libcurl4:amd64
  Dependencies are not satisfied for libcurl4:amd64 < 7.60.0-2 @ii mK Ib >
Package libcurl4:amd64 libcurl4:amd64 Conflicts on libcurl3:amd64 < none -> 7.60.0-1 @un uN >
  Dependencies are not satisfied for libcurl4:amd64 < 7.60.0-2 @ii mK Ib >
  Dependencies are not satisfied for libcurl4:amd64 < 7.60.0-2 @ii mK Ib >
  Dependencies are not satisfied for libcurl4:amd64 < 7.60.0-2 @ii mK Ib >
Calculating upgrade... Done
<repeats previous error message>

Como posso identificar o pacote X (o pacote existente) e o pacote Y (o novo pacote ou um pacote existente com uma nova dependência)?

    
por d3vid 30.07.2018 / 14:04

2 respostas

1

Para identificar pacotes que causam conflitos (ou outros problemas) durante um upgrade de pacote, acho que a abordagem mais útil é ativar o modo de depuração do resolvedor:

apt -o Debug::pkgProblemResolver=yes upgrade

Isso mostrará todos os problemas que o resolvedor executa, juntamente com os pacotes que o levaram a considerar as dependências problemáticas.

    
por 30.07.2018 / 14:29
1

Outra sugestão para adicionar ao @StephenKitt excelente resposta é instalar e usar aptitude .

aptitude é geralmente um pouco mais inteligente no gerenciamento de pacotes e especialmente ajudando e sugerindo alternativas quando há conflitos.

O uso também é muito semelhante a apt como no uso, aptitude install , aptitude update e aptitude upgrade . Se você chamar aptitude sem argumentos, ele invocará uma interface de menu de texto.

De man aptitude

aptitude - high-level interface to the package manager

aptitude is a text-based interface to the Debian GNU/Linux package system.

It allows the user to view the list of packages and to perform package management tasks such as installing, upgrading, and removing packages. Actions may be performed from a visual interface or from the command-line.

Para mais detalhes, consulte aptitude - Referência da linha de comando

    
por 30.07.2018 / 15:05