Yum不会在Amazon Linux上重新安装PHP

最终,这个问题是关于百胜和亚马逊Linux AMI的(参见该部分的结尾),但首先我将介绍一些我如何处理自己情况的背景知识。

我从源代码安装PHP

我正在使用Amazon Web Services托pipe的Web服务器上设置新的PHP应用程序。 EC2实例正在运行“Amazon Linux AMI release 2012.09”(根据/ etc / issue)。 我不是这台服务器的主要pipe理员,所以我想限制我所做的更改的影响。

已经有一些PHP应用程序在这台服务器上运行。 我需要比他们使用的更新版本的PHP。 他们使用的发行版本是5.3,对我来说太旧了。

我想我会下载PHP源代码,自己构build并与其他版本一起运行。 (我将如何设置这是一个不同的问题,我不会进入这里。)

我用这些选项configuration我的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身份执行这个操作是一个错误,我应该在安装目录上设置用户写入权限,并将其安装为我的用户,这样我就可以确定没有任何文件被安装到安装目录之外。 。)

然后我注意到,Web服务器没有响应。 重新启动后,它工作正常。 我探讨了一下,注意到phpversion ,服务器现在报告我刚刚安装在/opt下的新版本,而不是我原本打算离开的发行版本。 事实certificate, make install继续前进,并取代了现有的libphp5.so 。 RPM报告:

 [root@xxxx etc]# rpm -V php S.5....T. /usr/lib64/httpd/modules/libphp5.so 

就我所知,新版本上的所有function仍然可以正常工作,所以很可能不会造成任何伤害。 不过,我宁愿留下旧版本的PHP,以便软件包仍然可以由软件包pipe理器进行pipe理。 这是我的意图将新版本放在/opt

试图把旧版本,百胜失败

我试图用yum reinstall恢复旧版本的libphp5.so 。 这是输出:

 [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 

从这个消息,我不清楚是什么问题。 它无法在更新服务器上find软件包吗? 服务器本身是否可用(希望是暂时的)? 还是因为优先保护而排除了包裹,拒绝重新安装呢?

什么是这个问题的最佳解决scheme,让我恢复旧版本的PHP,并把它放回包pipe理器的控制下?

亚马逊用一个更新的发行版(用于安全修复等)replace了PHP 5.3.20包。 只需更新它,而不是:

 yum update php 

对皮特来说,不要在生产中做这个东西! 开始一个新的实例,并在那里做实验。