php8.0-dev 软件包安装 PHP 8.1 依赖项

当我尝试在 Ubuntu 20.04 上安装 php8.0-dev 包 ( apt-get install php8.0-dev ) http://ppa.launchpad.net/ondrej/php/ubuntu 存储库时,它会安装一些 php8.1 依赖项。有什么想法可以解决这个问题吗?谢谢!

以下是依赖项:


  groff-base intltool-debian libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libarchive-cpio-perl libarchive-zip-perl
  libcroco3 libdebhelper-perl libdpkg-perl libelf1 libfakeroot libfile-fcntllock-perl libfile-stripnondeterminism-perl libglib2.0-0
  libglib2.0-data liblocale-gettext-perl libmail-sendmail-perl libpcre2-16-0 libpcre2-32-0 libpcre2-dev libpcre2-posix2 libpipeline1
  libssl-dev libstdc++-9-dev libsub-override-perl libsys-hostname-long-perl libuchardet0 make man-db php-json php-pear php8.0-dev php8.1-cli
  php8.1-common php8.1-opcache php8.1-phpdbg php8.1-readline pkg-config pkg-php-tools po-debconf shared-mime-info shtool xdg-user-dirs``` 

 `` `
stack overflow php8.0-dev package installs PHP 8.1 dependencies
原文答案

答案:

作者头像

sudo apt install... 默认安装推荐的软件包。通过传递 --no-install-recommends 选项,用户可以让APT知道不要将建议的软件包作为安装的依赖项,并仅安装所需依赖项的最小子集。

打开终端和类型:

sudo apt install --no-install-recommends php8.0-dev

无论如何,上面的命令仍将在您的问题中的列表中安装一些软件包,因为它们是php8.0-dev的依赖项。以下软件包是php8.0-dev的依赖项。

Package: php8.0-dev
Source: php8.0
Depends: autoconf (>= 2.63), automake (>= 1.11), libpcre2-dev (>= 10.30), libssl-dev, pkg-config, php8.0-cli (>= 8.0.14-1+ubuntu20.04.1+deb.sury.org+1), php8.0-common (= 8.0.14-1+ubuntu20.04.1+deb.sury.org+1), shtool, libtool (>= 2.4.6-0.1~)

这些依赖项是从 http://ppa.launchpad.net/ondrej/php/ubuntu/dists/focal/main/binary-amd64/ 的packages.gz档案中复制的。来自软件包的依赖项列表。gz档案比问题中的依赖项列表短,因为其中一些依赖关系具有依赖关系本身,还必须安装这些依赖项,才能安装PHP8.0-DEV。

如果您设法成功安装了PHP8.0-DEV,而无需推荐软件包,并改变主意,并想安装推荐的软件包,无论如何您的原始命令都会这样做。

sudo apt install php8.0-dev

根据 rmadison php8.0-dev php8.0-dev的结果,在Ubuntu 21.10的默认存储库中,因此也许它的.deb文件可以安装在Ubuntu 20.04中。我下载了.deb文件并在Ubuntu 20.04中安装它,但我无法安装它。这就是为什么有php ppa的原因之一,但是如果我是,您会考虑升级到最新版本的ubuntu。

如果所有这些基于APT的解决方案都不适合,则必须构建php8.0-dev,并可能从源中构建其某些依赖性。