Php

從 php53 升級到 php53u(epel 到 IUS 儲存庫)- Centos 6.4

  • November 22, 2017

我想將我的 CentOS 6.4 伺服器從 php53(epel 儲存庫)升級到 php53u(ius 儲存庫)。我已經啟用了 ius 儲存庫,但是因為伺服器上有生產網站而猶豫是否只是玩玩。

(因為生產站點在 Drupal 7,所以我想保持在 5.3 的軌道上,但我也想安裝一個 Drupal 8 開發站點,它至少需要 5.3.10 - epel 只給我 5.3.3)

誰能給我一個關於什麼是最安全的方法的提示:

  1. 刪除 php53 (epel) 並安裝 php53u
  2. 只需安裝 php53u 看看會發生什麼
  3. 你的其他建議

幾分鐘的停機時間是可以接受的,但不能更多。

好的,這就是我所做的,有效的和無效的:

三種場景:

  1. 只需安裝 php53u 看看會發生什麼替換 php 但抱怨依賴關係
  2. 刪除 php 並安裝 php53u

那是一個像魅力一樣工作的人:

yum erase php

yum install php53u php53u-common php53u-xml php53u-devel php53u-mysql php53u-pecl php53u-gd 3. 評論者的建議是,首先在測試伺服器上進行測試(感謝您敦促我!)。我在執行 Drupal 7 開發站點(以及一大堆與 PHP 無關的東西)的 CentOS 5.9 伺服器上對其進行了測試。該伺服器執行 mysql 5.6 伺服器,這需要使用 –nodeps 手動安裝 php53u-mysql rpm 以使其工作 - 只需在此處添加它以確保完整性。

最後,沒有停機,只是優雅地重新載入了 httpd。

我假設您的命令應該在兩個單獨的行上。我對其進行了編輯以反映這一點。

這裡的問題是“yum erase php”也會將依賴項拉出來。這意味著您將失去您安裝的任何依賴於 PHP 的軟體包。存在一個名為replace. 但它並不總是存在,有時……驚喜。而不是一個好辦法。

因此,我更喜歡突破yum shell。完成操作的命令如下所示:

yum shell
erase php
install php53u php53u-common php53u-xml php53u-devel php53u-mysql php53u-pecl php53u-gd
ts
run

按順序,我們是:

  1. 發射yum shell
  2. 告訴它擦除 PHP(注意它實際上還不會這樣做
  3. 要求它安裝列出的軟體包(同樣,這只會將它們添加到列表中)
  4. 請求“交易展示”;也就是讓 yum 告訴我們它要做什麼。實際上,這只是一個健全性檢查,我們將在下一步中再次看到這一點。
  5. 告訴 yum 按照列出的方式執行事務。它將檢查依賴關係並生成它打算採取的完整操作列表,並y/n在繼續之前向您顯示傳統的 yum 提示以供批准。

為了確保我真的得到了所有東西,眾所周知,我會寫一些簡短的 bash。就像是:

rpm -qa --queryformat '%{NAME}-%{VERSION}.%{ARCH}\n' | grep -E '^php53[^u].*5\.3' | tr '\n' ' '
rpm -qa --queryformat '%{NAME}-%{VERSION}.%{ARCH}\n' | grep -E '^php53[^u].*5\.3' | sed 's/php53/php53u/;s/-5\.3\..*//'

第一行給出了我erase放在yum shell. 第二行給了我要放在後面的包列表install。請注意,您可能必須手動處理一些輔助包(例如來自 PECL 的包)。使用一些變體rpm -qa | grep php | grep -vE '^php53.*5\.3'來追踪那些。不過,它們應該很少見。

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