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

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 身份执行此操作是一个错误,我应该在安装目录上设置用户写权限并以我的用户身份安装,这样我就可以确保没有任何文件被放在安装目录之外。现在为时已晚。)

然后我注意到 Web 服务器没有响应。重新启动后,它工作正常。我仔细查看了一下,发现对于phpversion,服务器现在报告我刚刚在 下安装的新版本/opt,而不是我打算保留的发行版版本。事实证明make install继续并替换了现有的libphp5.so。RPM 报告:

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

据我所知,新版本上的一切仍然运行良好,因此很可能没有造成任何损害。但是,我宁愿保留旧版本的 PHP,以便包管理器仍可以管理包。这就是我将新版本放入 的目的/opt

尝试恢复旧版本,Yum 失败

libphp5.so我尝试使用恢复旧版本yum 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 并将其重新置于包管理器的控制之下吗?

答案1

Amazon 用较新的版本(用于安全修复等)替换了 PHP 5.3.20 软件包。只需更新到该版本即可:

yum update php

看在上帝的份上,不要在生产中做这些事情!启动一个新实例并在那里进行实验。

相关内容