从php53升级到php53u(epel到IUS存储库) – Centos 6.4

我想把我的CentOS 6.4服务器从php53(epel repository)升级到php53u(ius repository)。 我已经启用了ius版本库,但是因为在服务器上有生产网站,所以我只是犹豫不决。

(因为生产站点在Drupal 7中,我想要保持在5.3的轨道上,但是我也想安装一个Drupal 8开发站点,这个站点最less需要5.3.10 – epel只给我5.3.3)

有谁能给我一个暗示什么是最安全的方法:

  1. 删除php53(epel)并安装php53u
  2. 只需安装php53u,看看会发生什么
  3. 你的其他build议

几分钟的停机时间是可以接受的,但不是更多。

我假设你的命令应该在两个单独的行上。 我编辑它来反映这一点。

这里的问题是,“百胜擦除PHP”也将拉出依赖。 这意味着你将失去依赖于PHP的安装包。 有一个叫做replace的yum命令。 但它并不总是现在,有时…惊喜。 而不是一个好办法。

因此,我更喜欢打破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运行列出的交易。 它将检查依赖关系,并生成它想要采取的完整行动列表,并在继续之前向您提供一个传统的yum y/n提示符以供审批。

为了确保我真的得到了一切,我已经知道写一些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\..*//' 

第一行给出了我在yum shell里面erase后的包列表。 第二行给出了install后要放置的软件包列表。 请注意,您可能需要手动处理一些辅助包(例如来自PECL的包)。 在rpm -qa | grep php | grep -vE '^php53.*5\.3'上使用一些变体 rpm -qa | grep php | grep -vE '^php53.*5\.3' rpm -qa | grep php | grep -vE '^php53.*5\.3'来跟踪这些。 但是,他们应该是很less见的。

好的,这就是我所做的,什么工作,什么不工作:

三种情况:

  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. 评论者的build议是,首先在testing服务器上进行testing(感谢我的邀请!)。 我在一台运行Drupal 7开发站点的CentOS 5.9服务器(以及一大堆非php相关的东西)上testing了它。 该服务器运行一个MySQL 5.6服务器,需要手动安装php53u-mysql rpm,使用–nodeps才能使其正常工作 – 只需在此处添加完整性即可。

最后,没有停机时间,只是一个优雅的httpd重新加载。

我的问题围绕着“php53常见的与php常见冲突”问题展开。 这个盒子是一个旧的服务器,我将在把它放在生产机器上之前testing一些代码。 它运行的是Centos 5,曾经是生产,但现在已经降级到testing。 现在升级到Centos 6x已经太旧了,没有新的东西,所以我现在还是坚持下来。

所以……几乎没有任何工作,直到我偶然发现在networking上的这个想法:

安装epel和ius版本库。 删除所有的PHP软件包安装所有php53u软件包,如上面的答案中所反映的。

我根本没有使用“yum erase”。

我通常在CentOS 6.x中将5.x默认php升级到ius php53u的是:

 rpm -Uhv https://centos6.iuscommunity.org/ius-release.rpm yum -y install yum-utils yum-plugin-replace yum -y install libtidy yum -y --enablerepo=ius-archive replace php --replace-with php53u yum -y --enablerepo=ius-archive install php53u php53u-common php53u-imap php53u-bcmath php53u-gd php53u-dba php53u-mbstring php53u-mcrypt php53u-mysql php53u-soap php53u-xml php53u-tidy php -v