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

max*_*kov 5 apt php7

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

mvolchkov@ias-su:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04 LTS
Release:    18.04
Codename:   bionic
Run Code Online (Sandbox Code Playgroud)

我尝试安装 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
Run Code Online (Sandbox Code Playgroud)

比我尝试安装 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.
Run Code Online (Sandbox Code Playgroud)

小智 8

评论中 user535733 的建议非常含糊,在这种情况下实际上不是 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 
Run Code Online (Sandbox Code Playgroud)

为什么这需要发生?

您可能拥有来自 ondrej 存储库的 PHP 7.2.7,但现在拥有来自官方存储库的 7.2.5。但是,libpcre3 和 libssl 可能仍在其他存储库的更高版本中。

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