我正在新安装的 Ubuntu 20.04 上安装 php/apache:
apt install apache2 php7.4 php7.4-mysql php7.4-json php7.4-apcu php7.4-memcached php7.4-imap php7.4-mbstring
然后我注意到这些消息:
Note, selecting 'php-apcu' instead of 'php7.4-apcu'
Note, selecting 'php-memcached' instead of 'php7.4-memcached'
安装的php包:
apt list --installed | grep php
libapache2-mod-php7.4/focal-updates,focal-security,focal-updates,focal-security,now 7.4.3-4ubuntu2.2 amd64 [installed,automatic]
php-apcu/focal,focal,now 5.1.18+4.0.11-1build1 amd64 [installed]
php-common/focal,focal,focal,focal,now 2:75 all [installed,automatic]
php-igbinary/focal,focal,now 3.1.2+2.0.8-1build1 amd64 [installed,automatic]
php-memcached/focal,focal,now 3.1.4+2.2.0-1 amd64 [installed]
php-msgpack/focal,focal,now 2.1.0beta1-0ubuntu2 amd64 [installed,automatic]
php7.4-cli/focal-updates,focal-security,focal-updates,focal-security,now 7.4.3-4ubuntu2.2 amd64 [installed]
php7.4-common/focal-updates,focal-security,focal-updates,focal-security,now 7.4.3-4ubuntu2.2 amd64 [installed,automatic]
php7.4-imap/focal-updates,focal-security,focal-updates,focal-security,now 7.4.3-4ubuntu2.2 amd64 [installed]
php7.4-json/focal-updates,focal-security,focal-updates,focal-security,now 7.4.3-4ubuntu2.2 amd64 [installed]
php7.4-mbstring/focal-updates,focal-security,focal-updates,focal-security,now 7.4.3-4ubuntu2.2 amd64 [installed]
php7.4-mysql/focal-updates,focal-security,focal-updates,focal-security,now 7.4.3-4ubuntu2.2 amd64 [installed]
php7.4-opcache/focal-updates,focal-security,focal-updates,focal-security,now 7.4.3-4ubuntu2.2 amd64 [installed,automatic]
php7.4-readline/focal-updates,focal-security,focal-updates,focal-security,now 7.4.3-4ubuntu2.2 amd64 [installed,automatic]
php7.4/focal-updates,focal-updates,focal-security,focal-security,focal-updates,focal-updates,focal-security,focal-security,now 7.4.3-4ubuntu2.2 all [installed]
据我了解:当新版本的 php 到来时,我无法控制是否安装了没有版本的 php 包。如果我想自己决定(通过替代方案)何时使用新版本的 php,我必须在安装它们时在包名称中包含版本号。
因此我想知道为什么没有 php7.4-memcached 包。
但是查看版本后,apt list
我注意到四个未命名为 php7.4-* 的包在信息中具有不同的版本,例如:
php-memcached/focal,focal,now 3.1.4+2.2.0-1 amd64 [installed]
假设这四个 php 包没有遵循 php 版本控制,而是其他东西,例如 php-memcached 而是遵循 memcached 是否正确?还是有其他解释?
这很正常——这些
php
包在幕后引用了特定于版本的包,无论如何你都应该安装未版本化的 PHP 包。这些不太可能从系统上的 PHP 版本改变,特别是因为它是您正在使用的 LTS 版本。现在,Focal 中不可能有一个“新”的 PHP 版本。这是预期行为。相信我,它会从 PHP 7.4 安装 memcached(或者无论如何是 7.4 兼容的 memcached)。并非所有 PHP 包都源自 PHP 源代码,并且有些包是单独编译的(并且具有单独的源包),因此它们必须使用未版本化的
php
包名称语法进行安装。