运行 Ubuntu 18.04 的客户希望将 php 从 7.2.24-0ubuntu0.18.04.17(cli)更新到最新的 7.4 版本,并将其锁定在那里(他使用的软件不适用于 php8)。我已经看到其他关于将软件包锁定到某个版本的问题,但我不确定我做错了什么,php 是一个特例吗?
到目前为止我已经完成了以下操作:
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php7.4
php -v 显示版本 7.4.33,这很好。
sudo vi /etc/apt/preferences
我在首选项中添加了以下几行:
Package: php
Pin: version 7.4.*
Pin-Priority: 1000
因此,据我了解,此后每当我跑步时
sudo apt update
sudo apt full-upgrade
sudo apt autoremove
php 版本应该仍为 7.4.*。然而,事实并非如此,php -v 随后显示版本 8.2.4,那么我遗漏了什么?构建名称是否错误,还是什么?
与此相关的是,所有其他以字符串 php 开头的版本(sudo apt list php*)怎么样?我推测它们也应该保留为与 php 7.4.x 兼容的版本,所以只要 php 保持在 7.4.x,它们就会一直保留在那里,还是我也需要将它们全部添加到 apt 首选项中?我可以在那里使用 php* 通配符吗?
或者有没有更好的方法将 php 锁定到 7.4 版本?
编辑:例如
sudo apt-mark hold <package name>
锁定版本是否有更简单的方法?我是否可以使用 php* 作为软件包名称,以便将任何与 php 相关的软件包锁定到其当前版本?这样做有什么缺点吗?