web-dev-qa-db-ja.com

curlを更新/インストールできない(「次のパッケージには依存関係が満たされていない」)

依存関係の不一致の問題により、curlを更新またはインストールできません。 (私はそれを助けるかもしれないと考えて、削除して再インストールしようとしました、しかしそれはしませんでした。)

私のcurlの試み:

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.

そして、依存関係の1つでの試み:

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.

私もSudo apt-get update && Sudo apt-get upgrade && Sudo apt-get -f installを試しましたが、それもうまくいきませんでした。どちらもSudo apt-get purgeはしませんでした。

一部のサブ依存関係(libnghttp2-14libpsl5など)が「インストール不可」と表示されているのがわかります。これはそれと関係がありますか?

どうすればこれを乗り越えることができますか?

-EDIT-

コメントでリクエストされたとおり、これが/etc/apt/sources.listapt-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
3
InteXX

あなたのsources.listは、Raspbian Jessieと、現在Stretch(Debian 9)であるDebianの「安定版」を組み合わせています。そのため、この問題が発生しています。curlをインストールすると、Raspbian Jessieの依存関係を使用して、Debian 9からcurlへのセキュリティアップデートをインストールしようとしますが、機能しません。

この問題を修正するには、sources.liststablejessieに置き換えます。

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

これが完了したら、apt updateを実行すると、curlをインストールできるようになります。

安定版のDebianリリースをフォローするときは、「安定版」ではなく、常にリリースコード名を使用する必要があります。後者は、新しいリリースが作成されるとリリースが突然変更されるためです。

2
Stephen Kitt

Distroがこれらの依存関係の候補バージョンでない場合は、Debianリポジトリを/etc/apt/sources.listに追加して、依存関係を自分でインストールできます。

提案通り ここ

/etc/apt/sources.listに次の行があることを確認してください:

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

APTは、コマンド(apt-get source)を提供し、これらのdeb-src行を(プレーンバイナリのdeb行ではなく)調べて、ソースパッケージをダウンロードします。このチュートリアルでは、「apt-get source」の便利なラッパーである「apt-src」を使用します。ステップ2

apt-get update

ステップ3

Sudo aptitude install apt-src

apt-srcは、ソースパッケージのコンパイルを容易にするヘルパープログラムです。必須ではありませんが、あまりにも多くのコマンドを入力する必要がなくなります。ステップ4

 apt-src -bi install $package

'libnghttp2-14'をインストールする場合は、次のコマンドを実行します。

apt-src -bi install libnghttp2-14 

「b」は「ビルド」を表し、「i」は「結果のパッケージをインストールする」を表し、「インストール」という言葉は「sources.listからDebianソース行にあるAlpineのソースをダウンロードする」ことを意味します。 apt-srcはソースを現在のディレクトリに「インストール」し、パッケージをビルドするために必要なすべてのパッケージ(「ビルドの依存関係を満たす」と呼ばれるプロセス)があることを確認し、ビルドして、結果の.debsをインストールします。

0