Não é possível atualizar / instalar o curl (“os seguintes pacotes possuem dependências não atendidas”)

3

Não é possível atualizar ou instalar curl devido a um problema de incompatibilidade de dependência. (Eu tentei remover e reinstalar, pensando que poderia ajudar, mas isso não aconteceu.)

Minha curl tentativa:

pi@RECOVERY:~ $ sudo apt-get install curl
Reading package lists... Done
Building dependency tree       
Reading state information... Done
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:
 curl : Depends: libcurl3 (= 7.52.1-5+deb9u1) but 7.38.0-4+deb8u5 is to be installed
E: Unable to correct problems, you have held broken packages.

E, em seguida, uma tentativa em uma das dependências:

pi@RECOVERY:~ $ sudo apt-get install libcurl3
Reading package lists... Done
Building dependency tree       
Reading state information... Done
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:
 libcurl3 : Depends: libgssapi-krb5-2 (>= 1.14+dfsg) but 1.12.1+dfsg-19+deb8u2 is to be installed
            Depends: libnghttp2-14 (>= 1.12.0) but it is not installable
            Depends: libpsl5 (>= 0.13.0) but it is not installable
            Depends: libssh2-1 (>= 1.7.0) but 1.4.3-4.1+deb8u1 is to be installed
            Depends: libssl1.0.2 (>= 1.0.2d) but it is not installable
E: Unable to correct problems, you have held broken packages.

Eu também tentei sudo apt-get update && sudo apt-get upgrade && sudo apt-get -f install , mas isso também não funcionou. Nem sudo apt-get purge

Vejo que algumas das subdependências (por exemplo, libnghttp2-14 , libpsl5 , etc.) são mostradas como "não instaláveis". Isso poderia ter algo a ver com isso?

Como posso superar isso?

- EDITAR

Conforme solicitado nos comentários, aqui está meu /etc/apt/sources.list , bem como a saída de apt-cache policy curl :

sources.list

deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspbian.org/raspbian/ jessie main contrib non-free rpi
deb http://security.debian.org stable/updates main
deb-src http://security.debian.org/ stable/updates main

apt-cache

pi@RECOVERY:~ $ apt-cache policy curl
curl:
  Installed: (none)
  Candidate: 7.52.1-5+deb9u1
  Version table:
     7.52.1-5+deb9u1 0
        500 http://security.debian.org/ stable/updates/main armhf Packages
     7.38.0-4+deb8u6 0
        500 http://mirrordirector.raspbian.org/raspbian/ jessie/main armhf Packages
        500 http://archive.raspbian.org/raspbian/ jessie/main armhf Packages
    
por InteXX 10.10.2017 / 06:41

2 respostas

2

Seu sources.list mistura Jessie Raspbian e Debian "stable", que agora é o Stretch (Debian 9); é por isso que você está enfrentando este problema: a instalação de curl tenta instalar a atualização de segurança em curl do Debian 9, usando dependências do Raspbian Jessie, o que não funciona.

Para corrigir o problema, substitua stable por jessie in sources.list :

deb http://security.debian.org jessie/updates main
deb-src http://security.debian.org jessie/updates main

Depois disso, execute apt update e você poderá instalar curl .

Ao seguir as versões estáveis do Debian, você deve sempre usar o nome do código do release em vez de “estável”, já que o último irá mudar repentinamente quando um novo lançamento for feito.

    
por 12.10.2017 / 19:28
0

Se o seu Distro não é candidato a versões dessas dependências, você pode adicionar o repositório Debian ao seu /etc/apt/sources.list e instalar as dependências sozinho

como sugerido aqui

Certifique-se de ter esta linha em /etc/apt/sources.list:

deb-src http://ftp.debian.org/debian/ stable main non-free contrib

O APT fornece um comando "apt-get source" que procura nestas linhas deb-src (ao invés de linhas simples de binário deb) e baixa pacotes de fontes. Neste tutorial, você usará o "apt-src", que é um wrapper conveniente para o "apt-get source". Etapa 2

apt-get update

Etapa 3

sudo aptitude install apt-src

apt-src é um programa auxiliar que facilita a compilação de pacotes fonte. Não é necessário, mas impede que você tenha que digitar muitos comandos. Etapa 4

 apt-src -bi install $package

Se você quiser instalar o 'libnghttp2-14', execute isto:

apt-src -bi install libnghttp2-14 

O "b" significa "construir", o "i" significa "instalar o pacote resultante", e a palavra "instalar" significa "baixar a fonte para alpine como encontrado em uma linha de código-fonte do Debian em sources.list ". apt-src irá "instalar" a fonte no diretório atual, certifique-se de ter todos os pacotes necessários para construir o pacote (um processo chamado "satisfazendo as dependências de compilação"), construí-lo e instalar o .debs resultante.

    
por 10.10.2017 / 07:14