由于未满足依赖关系,无法在 Ubuntu 18 上安装 PHP7.2-dev

由于未满足依赖关系,无法在 Ubuntu 18 上安装 PHP7.2-dev

我有 Ubuntu 18 发行版,但我需要安装 php7.2-dev 来进行 PECL 扩展。

mvolchkov@ias-su:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04 LTS
Release:    18.04
Codename:   bionic

我尝试安装 php7.2-dev:

mvolchkov@ias-su:~$ sudo apt-get install php7.2-dev
Unresolved packages:
 php7.2-dev : Depend on: libpcre3-dev (>= 2:8.35) but will not be installed
              Depend on: libssl-dev but will not be installed
But it depends on: libpcre3-dev

然后我尝试安装 libpcre3-dev,但出现以下错误:

mvolchkov@ias-su:~$ sudo apt-get install libpcre3-dev
 libpcre3-dev : Depend on: libpcre3 (= 2:8.39-9) но 2:8.41-4+ubuntu17.10.1+deb.sury.org+1 will be installed
E: Impossible to resolve problems, you have held packages.

答案1

用户 535733 在评论中给出的建议非常模糊,实际上在这种情况下并非 100% 可行,因为这意味着卸载libpcre3。这样做会删除大量的软件包。

关键在于问题用户无法安装的位置libpcre3-dev(这是您在安装时遇到困难的依赖项之一)。

我假设由于您拥有的版本libpcre3-dev比预期的要高,那么您之前一定拥有第三方(ondrej)ppa。

所以您需要做的不是卸载非 Ubuntu 软件包,而是降级 php7.2-dev 依赖项。

就我而言,删除第三方 PPA 后,执行以下操作可以解决问题:

sudo apt install libpcre3=2:8.39-9 libpcre3-dev=2:8.39-9
sudo apt install libssl1.1=1.1.0g-2ubuntu4.1 libssl-dev=1.1.0g-2ubuntu4.1 

为什么会发生这种情况?

您可能从 ondrej 存储库中获得了 PHP 7.2.7,但现在从官方存储库中获得了 7.2.5。但是,libpcre3 和 libssl 可能仍在其他存储库的更高版本中。

因此,这些命令应该可以为您解决问题,并且您应该能够成功安装php7.2-dev

相关内容