したがって、apt-getは、依存関係が「インストールされない」ためパッケージのインストールが失敗したという悪名高いメッセージで再び私を悩ませました。
~ $ Sudo apt-get install php-apcu
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:
php-apcu : Depends: phpapi-20151012
Recommends: php-apcu-bc but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
私が理解しているように、デフォルトでは、不足しているすべての依存関係と要求されたパッケージをインストールします。 apt-getが特定の依存関係のインストールを拒否する原因は何ですか? (そして、これにつながるものが複数ある場合、どのようにしてそれを見つけることができますか?)
TL; DR:<foobar> is not going to be installed
は、<foobar>
依存関係自体に、何らかの理由で満たされない依存関係があることを示すヒントです。
apt-get
を再実行し、問題のある依存関係をコマンドラインに明示的に含めると、問題の場所がよくわかります。
上記の場合、私はこれを得ました:
~ $ Sudo apt-get install php-apcu php-apcu-bc
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:
php-apcu : Depends: phpapi-20151012
php-apcu-bc : Depends: phpapi-20151012
E: Unable to correct problems, you have held broken packages.
そして:
~ $ Sudo apt-get install php-apcu php-apcu-bc phpapi-20151012
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package phpapi-20151012 is a virtual package provided by:
php7.0-phpdbg 7.0.22-3
php7.0-fpm 7.0.22-3
php7.0-cli 7.0.22-3
php7.0-cgi 7.0.22-3
libphp7.0-embed 7.0.22-3
libapache2-mod-php7.0 7.0.22-3
You should explicitly select one to install.
E: Package 'phpapi-20151012' has no installation candidate
したがって、ここでの問題は、最初に要求されたパッケージphp-apcu
がphp-apcu-bc
に依存し、それがphpapi-20151012
に依存することです。後者は直接インストール可能なパッケージではなく、複数のパッケージによって提供される機能であるため、apt-getはインストールする必要があるものを自動的に決定できません。
この特定のケースの根本的な原因は、正しいパッケージがphp-apcu
であるPHP5を実行しているシステムに、PHP7パッケージであるphp5-apcu
をインストールしようとしたことです。