Yum 不會在 Amazon Linux 上重新安裝 PHP
歸根結底,這個問題是關於 Yum 和 Amazon Linux AMI(請參閱該部分的末尾),但首先我將介紹一些背景知識,說明我是如何陷入這種境地的。
我從原始碼安裝了 PHP
我正在使用 Amazon Web Services 託管的 Web 伺服器上設置一個新的 PHP 應用程序。EC2 實例正在執行“Amazon Linux AMI 版本 2012.09”(根據 /etc/issue)。我不是此伺服器的主要管理員,因此我想限制我所做更改的影響。
該伺服器上已經執行了一些 PHP 應用程序。我需要比他們使用的更新版本的 PHP。他們使用的是發行包中的 5.3 版本,對我來說太舊了。
我想我會下載 PHP 原始碼,自己建構它並與其他版本一起執行。(我將如何設置是另一回事,我不會在這裡討論。)
我使用以下選項配置了我的 PHP 建構:
--prefix=/opt/php-5.5.9 --with-openssl --with-mcrypt --with-mysql --with-pdo-mysql --enable-fpm --with-apxs2=/usr/sbin/apxs
然後,我切換到 root 並執行
make install
. (回想起來,以 root 身份執行此操作是一個錯誤,我應該在安裝目錄上設置使用者寫入權限並以我的使用者身份安裝,這樣我就可以確定沒有文件被放在安裝目錄之外。現在為時已晚.)然後我注意到網路伺服器沒有響應。重新啟動後,它工作正常。我看了看,注意到對於
phpversion
,伺服器現在報告我剛剛安裝的新版本/opt
,而不是我打算保留的發行版。事實證明,make install
繼續前進並取代了現有的libphp5.so
. RPM 報告:[root@xxxx etc]# rpm -V php S.5....T. /usr/lib64/httpd/modules/libphp5.so
據我所知,新版本的一切仍然正常,所以很可能沒有造成任何傷害。但是,我寧願保留舊版本的 PHP,這樣包仍然可以由包管理器管理。這是我將新版本放入
/opt
.試圖放回舊版本,百勝失敗
我試圖恢復舊版本的
libphp5.so
withyum reinstall
。這是輸出:[root@xxxx etc]# yum reinstall php Loaded plugins: fastestmirror, local, priorities, security, update-motd, upgrade-helper Setting up Reinstall Process Loading mirror speeds from cached hostfile * amzn-main: packages.us-east-1.amazonaws.com * amzn-updates: packages.us-east-1.amazonaws.com amzn-main | 2.1 kB 00:00 amzn-updates | 2.3 kB 00:00 265 packages excluded due to repository priority protections Installed package php-5.3.20-1.29.amzn1.x86_64 (from amzn-updates) not available. Nothing to do
從這條消息中,我不清楚問題是什麼。是不是在更新伺服器上找不到包?伺服器本身是否不可用(希望是暫時的)?還是由於優先保護而將軟體包排除在外,因此拒絕重新安裝它?
這個問題的最佳解決方案是什麼,可以讓我恢復舊版本的 PHP 並將其重新置於包管理器的控制之下?
Amazon 將 PHP 5.3.20 包替換為更新的點版本(用於安全修復等)。只需更新它:
yum update php
看在皮特的份上,不要在生產中做這些事情!啟動一個新實例並在那裡進行實驗。