问题:
无需赘述,我有两台几乎完全相同的服务器。但是,一台的 yum 存储库配置为可以安装 php 7.2 软件包 imagick 和 soap,而另一台则不能。
完全相同的内核版本:
CentOS Linux release 7.5.1804 (Core)
类似的 PHP 版本:
服务器 A:
PHP 7.2.18 (cli)
服务器B:
PHP 7.2.20 (cli)
服务器 A:
$ sudo yum search sodium imagick
...
php72u-sodium.x86_64 : Wrapper for the Sodium cryptographic library
php72u-pecl-imagick.x86_64 : Provides a wrapper to the ImageMagick library
...
服务器B:
$ sudo yum search sodium imagick
[only versions for php 7.3 and 7.4 shown]
我相信这是由于 yum 存储库的配置造成的,特别是ius
存储库:
服务器 A:
$ sudo yum repolist
Loaded plugins: fastestmirror, replace
Loading mirror speeds from cached hostfile
* base: d36uatko69830t.cloudfront.net
* epel: iad.mirror.rackspace.com
* extras: d36uatko69830t.cloudfront.net
* ius: ius.mirror.constant.com <================ THIS ONE
* updates: d36uatko69830t.cloudfront.net
...
服务器B:
$ sudo yum repolist
Loaded plugins: fastestmirror, replace
Loading mirror speeds from cached hostfile
* base: d36uatko69830t.cloudfront.net
* epel: dl.fedoraproject.org
* extras: d36uatko69830t.cloudfront.net
* updates: d36uatko69830t.cloudfront.net
...
简而言之,我需要弄清楚如何配置服务器 B 以拥有相同的 IUS 存储库(同一版本所以它有 PHP 7.2 包可用!)
我尝试过的事情
- 按照他们的指示从头开始安装 IUS repo。
- 将完整
/etc/yum.repos.d/
目录从服务器 A 复制到服务器 B,然后运行yum clean all
- 使用 pecl 手动安装这些模块
但这些尝试都没有奏效。结果:
- 最新的 IUS 仍然没有提供这些软件包。
- 似乎没有什么区别(或者可能破坏了 IUS 存储库,我现在记不清了)。
- 同样,Pecl 也没有提供这些模块的 PHP 7.2 版本。
答案1
升级到较新的 PHP,截至 2021 年 6 月 7.3 或 7.4。并订阅 IUS 的通知和测试存储库,以便将来的版本更新不会令人意外。
IUS 不再提供 PHP 7.2随着上游支持结束。事实上,repo 名称代表与上游稳定一致. 软件包名称中的版本号方案允许选择版本(php74-pecl-imagick
)。另请参阅IUS 常见问题。
CentOS 和相关存储库不会保留旧软件包,而是将其归档。考虑维护一个包含特定版本软件包副本的私人镜像。这有限制,旧软件包不会有修复,包括安全更新。
由于 CentOS 7.5 支持已结束,因此请升级其余软件包。如果您希望在较长时间内使用次要版本,请考虑具有扩展更新支持的 RHEL。