從 php53 升級到 php53u(epel 到 IUS 儲存庫)- Centos 6.4
我想將我的 CentOS 6.4 伺服器從 php53(epel 儲存庫)升級到 php53u(ius 儲存庫)。我已經啟用了 ius 儲存庫,但是因為伺服器上有生產網站而猶豫是否只是玩玩。
(因為生產站點在 Drupal 7,所以我想保持在 5.3 的軌道上,但我也想安裝一個 Drupal 8 開發站點,它至少需要 5.3.10 - epel 只給我 5.3.3)
誰能給我一個關於什麼是最安全的方法的提示:
- 刪除 php53 (epel) 並安裝 php53u
- 只需安裝 php53u 看看會發生什麼
- 你的其他建議
幾分鐘的停機時間是可以接受的,但不能更多。
好的,這就是我所做的,有效的和無效的:
三種場景:
- 只需安裝 php53u 看看會發生什麼替換 php 但抱怨依賴關係
- 刪除 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
按順序,我們是:
- 發射
yum shell
- 告訴它擦除 PHP(注意它實際上還不會這樣做)
- 要求它安裝列出的軟體包(同樣,這只會將它們添加到列表中)
- 請求“交易展示”;也就是讓 yum 告訴我們它要做什麼。實際上,這只是一個健全性檢查,我們將在下一步中再次看到這一點。
- 告訴 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'
來追踪那些。不過,它們應該很少見。