依存関係の不一致の問題により、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-14
、libpsl5
など)が「インストール不可」と表示されているのがわかります。これはそれと関係がありますか?
どうすればこれを乗り越えることができますか?
-EDIT-
コメントでリクエストされたとおり、これが/etc/apt/sources.list
と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
あなたのsources.list
は、Raspbian Jessieと、現在Stretch(Debian 9)であるDebianの「安定版」を組み合わせています。そのため、この問題が発生しています。curl
をインストールすると、Raspbian Jessieの依存関係を使用して、Debian 9からcurl
へのセキュリティアップデートをインストールしようとしますが、機能しません。
この問題を修正するには、sources.list
のstable
をjessie
に置き換えます。
deb http://security.debian.org jessie/updates main
deb-src http://security.debian.org jessie/updates main
これが完了したら、apt update
を実行すると、curl
をインストールできるようになります。
安定版のDebianリリースをフォローするときは、「安定版」ではなく、常にリリースコード名を使用する必要があります。後者は、新しいリリースが作成されるとリリースが突然変更されるためです。
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をインストールします。