Centos

需要添加舊版本的 IUS repo 才能安裝特定的 PHP 7.2 包

  • June 22, 2021

問題:

沒有不必要的細節,我有兩台幾乎相同的伺服器。然而,一個配置了它的 yum 儲存庫,以便可以安裝 php 7.2 軟體包 imagick 和鈉,而另一個則沒有。

相同的核心版本:

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 repos 的配置,特別是iusrepo:

伺服器 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 儲存庫。
  • /etc/yum.repos.d/將完整目錄從伺服器 A複製到 B,然後執行yum clean all
  • 使用 pecl 手動安裝這些模組

但這些嘗試都沒有奏效。結果:

  • 最新的 IUS 仍然沒有這些軟體包可用。
  • 似乎沒有什麼不同(或者可能破壞了 IUS 回購,我現在不記得了)。
  • Pecl 同樣沒有這些模組的 PHP 7.2 版本。

從 2021 年 6 月起升級到更新的 PHP 7.3 或 7.4。並訂閱 IUS 的通知和測試回購,以便將來版本更新不會令人意外。

由於上游支持終止,IUS 不再提供 PHP 7.2 。實際上,repo 名稱代表Inline with Upstream Stable。他們在包名稱中的版本號方案允許選擇版本 ( php74-pecl-imagick)。另請參閱IUS 常見問題解答

CentOS 和相關的軟體庫不會保留舊的軟體包,它們是存檔的。考慮維護一個私有鏡像,其中包含特定版本的包副本。這有限制,較舊的軟體包不會有修復,包括安全更新。

由於 CentOS 7.5 支持已結束,請同時升級其餘的軟體包。如果您想要長時間發布次要版本,請考慮RHEL 擴展更新支持

引用自:https://serverfault.com/questions/1067375