Ubuntu Server 20.04 上的 PHP 默认版本是 7.4.3,我想将其升级到 7.4.30。我已将 ppa:ondrej/php 添加到 apt 存储库,但 apt upgrade 显示它将升级 PHP 到 8.1。我该如何告诉 apt 我不想跳到 PHP 8?
答案1
总结:
sudo apt install php7.4=1:7.4.30-5+ubuntu20.04.1+deb.sury.org+1
完整解释:
由于您已经添加了ppa:ondrej/php
存储库(通过sudo add-apt-repository ppa:ondrej/php
),您可以使用apt-cache
列出可安装的可用版本,然后apt install
安装特定版本。
该apt
工具使用别名来简化流行应用程序的安装。正如您无意中发现的,apt install php
现在是 的别名apt install php8.1
。 ondrej/php 存储库添加了php8.1
、php8.0
和的软件包,并添加了指向 的php7.4
别名。php
php8.1
因为您要安装 php 7.4.30,所以您需要在命令中明确包含版本号apt install
。该apt-cache
命令将列出所有可用版本。我更喜欢使用,apt-cache madison
因为我发现输出比apt-cache showpkg
或更容易阅读apt-cache policy
,但其中任何一个都可以提供您需要的信息——使用您喜欢的任何命令。
apt-cache madison php7.4
将返回如下内容:
php7.4 | 1:7.4.30-5+ubuntu20.04.1+deb.sury.org+1 | http://ppa.launchpad.net/ondrej/php/ubuntu focal/main amd64 Packages
php7.4 | 7.4.3-4ubuntu2.12 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
php7.4 | 7.4.3-4ubuntu2.12 | http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages
php7.4 | 7.4.3-4ubuntu1 | http://archive.ubuntu.com/ubuntu focal/main amd64 Packages
这些列的组织方式如下:
<package name> | <version> | <repository>
apt
支持使用可选语法安装包的特定版本package=version
。在本例中,所需版本是1:7.4.30-5+ubuntu20.04.1+deb.sury.org+1
,它来自 ondrej/php 存储库。
综合起来:
sudo apt install php7.4=1:7.4.30-5+ubuntu20.04.1+deb.sury.org+1
答案2
Ubuntu 维护人员在官方软件包中包含了错误修复和安全更新。他们保留主要版本。因此无需升级到上游次要版本。
可以看到Ubuntu 20.04有7.4.3-4ubuntu2.12
PHP的版本。
您可以参考更新日志
寻找此类“升级”是一个常见的错误。