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

我有Ubuntu 18分配,但我需要为PECL extenssions安装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 

我尝试安装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. 

来自用户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 repos获得了PHP 7.2.7,但现在从官方回购中获得7.2.5。 但是,libpcre3和libssl可能仍在其他repo的更高版本中。

所以这些命令应该为你解决问题,你应该能够成功安装php7.2-dev