종속성이 충족되지 않아 Ubuntu 16에 php-memcached를 설치할 수 없습니다.

종속성이 충족되지 않아 Ubuntu 16에 php-memcached를 설치할 수 없습니다.

저는 3개의 웹 서버를 관리하고 있으며 모두 Ubuntu 16.04를 실행하고 있습니다. 현재 우리는 서버를 18.04 또는 20.04로 업그레이드하기 전에 php-memcache에서 php-memcached로 마이그레이션하려고 합니다.

성공적으로 설치했습니다PHP-memcached3개의 웹 서버 중 1개에서는 다른 두 서버에서는 종속성 오류가 발생합니다.

# apt-get install php-memcached

[...]
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 create or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
php-memcached: Depends: php-common (>= 1:7.0+33~) but it is not going to be installed

Depends: phpapi-20151012
E: Unable to correct problems, you have held broken packages.

update->dist-upgrade를 시도하고 재부팅을 시도했지만 문제가 해결되지 않았습니다.

다음을 기반으로 하는 저장소는 다음과 같습니다 apt-get update.

# apt-get update
Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [109 kB]
Hit:2 http://us.archive.ubuntu.com/ubuntu xenial InRelease                            
Get:3 http://us.archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu xenial-backports InRelease [107 kB]
Fetched 325 kB in 0s (364 kB/s)             

문제는 phpapi-20151012에 있는 것 같습니다.

# apt-get -o Debug::pkgProblemResolver=yes install 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.33-0ubuntu0.16.04.15
  php7.0-fpm 7.0.33-0ubuntu0.16.04.15
  libphp7.0-embed 7.0.33-0ubuntu0.16.04.15
  php7.0-cli 7.0.33-0ubuntu0.16.04.15
  php7.0-cgi 7.0.33-0ubuntu0.16.04.15
  libapache2-mod-php7.0 7.0.33-0ubuntu0.16.04.15
You should explicitly select one to install.

E: Package 'phpapi-20151012' has no installation candidate

내가 이해한 바에 따르면 위의 메시지 phpapi-20151012는 나열된 패키지 중 하나와 함께 제공되어야 합니다. 2개를 설치했지만 여전히 phpapi가 없습니다. 그래서 제가 가지고 있지 않은 것을 설치해 보았으나 그것도 작동하지 않았습니다.

php-common 패키지에는 문제가 없는 것 같습니다.

# apt-get -o Debug::pkgProblemResolver=yes install php-common
Reading package lists... Done
Building dependency tree       
Reading state information... Done
php-common is already the newest version (1:62+ubuntu14.04.1+deb.sury.org+1).
Starting pkgProblemResolver with broken count: 0
Starting 2 pkgProblemResolver with broken count: 0
Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

또한 PHP 7.1 패키지가 Ubuntu 14에서 그대로 유지되는 것으로 나타났습니다.

php7.1-cli/now 7.1.19-1+ubuntu14.04.1+deb.sury.org+1 amd64 [installed,local]
php7.1-common/now 7.1.19-1+ubuntu14.04.1+deb.sury.org+1 amd64 [installed,local]
php7.1-json/now 7.1.19-1+ubuntu14.04.1+deb.sury.org+1 amd64 [installed,local]
php7.1-opcache/now 7.1.19-1+ubuntu14.04.1+deb.sury.org+1 amd64 [installed,local]
php7.1-readline/now 7.1.19-1+ubuntu14.04.1+deb.sury.org+1 amd64 [installed,local]

Apache는 php 7.0을 사용하고 cli는 7.1을 사용하고 있습니다. 먼저 php cli를 7.0으로 다운그레이드했습니다.

# update-alternatives --config php
There are 3 choices for the alternative php (providing /usr/bin/php).

  Selection    Path             Priority   Status
------------------------------------------------------------
* 0            /usr/bin/php7.1   71        auto mode
  1            /usr/bin/php5.6   56        manual mode
  2            /usr/bin/php7.0   70        manual mode
  3            /usr/bin/php7.1   71        manual mode

Press <enter> to keep the current choice[*], or type selection number: 2

# update-alternatives --config php
There are 3 choices for the alternative php (providing /usr/bin/php).

  Selection    Path             Priority   Status
------------------------------------------------------------
  0            /usr/bin/php7.1   71        auto mode
  1            /usr/bin/php5.6   56        manual mode
* 2            /usr/bin/php7.0   70        manual mode
  3            /usr/bin/php7.1   71        manual mode

Press <enter> to keep the current choice[*], or type selection number: 

다음으로 7.1 패키지를 제거했습니다.

apt-get remove php7.1-cli
apt-get autoremove

그 후 모든 php7.1 패키지가 사라졌습니다.

그런 다음 이것을 시도했습니다.

apt-get update --fix-missing
Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [109 kB]
Hit:2 http://us.archive.ubuntu.com/ubuntu xenial InRelease                            
Get:3 http://us.archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu xenial-backports InRelease [107 kB]
Get:5 http://us.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages [802 kB]
Get:6 http://us.archive.ubuntu.com/ubuntu xenial-updates/universe i386 Packages [723 kB]
Fetched 1,850 kB in 1s (1,091 kB/s)                      
Reading package lists... Done

# apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

아직도 운이 없군요... 모르겠어요. 어떤 제안이 있으십니까?


고쳐 쓰다:

의견에서 요청한 대로:

# apt policy php-common
php-common:
  Installed: 1:62+ubuntu14.04.1+deb.sury.org+1
  Candidate: 1:62+ubuntu14.04.1+deb.sury.org+1
  Version table:
 *** 1:62+ubuntu14.04.1+deb.sury.org+1 100
        100 /var/lib/dpkg/status
     1:35ubuntu6.1 500
        500 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages
        500 http://us.archive.ubuntu.com/ubuntu xenial-updates/main i386 Packages
     1:35ubuntu6 500
        500 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
        500 http://us.archive.ubuntu.com/ubuntu xenial/main i386 Packages
        500 http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages
        500 http://archive.ubuntu.com/ubuntu xenial/main i386 Packages

답변1

PHP 7.1 패키지의 나머지 부분이 하나 이상 있습니다. php-commonUbuntu 저장소에서 사용 가능한 버전으로 다운그레이드해야 합니다.

apt install php-common=1:35ubuntu6.1

관련 정보