저는 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-common
Ubuntu 저장소에서 사용 가능한 버전으로 다운그레이드해야 합니다.
apt install php-common=1:35ubuntu6.1