为什么yum在CentOS上安装了过时的软件包?(特别是PHP 5.1)如何解决?


14

我正在使用一台新的CentOS服务器,并且非常生气地发现yum不能像Ubuntu上的“ apt-get install”那样流畅而出色地工作。

安装LAMP堆栈,我运行以下命令:

$ yum install php
$ yum install mysql

此外:

$ yum install mysql-server
$ yum install mysql-devel
$ yum install php-mysql

现在正在运行:

$ rpm -qa | grep php

...表明我已经安装了各种php 5.1.6软件包,并且最低需要5.2。此外,即使当前版本为5.5.20,我也看到它安装了mysql 5.0.77。但希望mysql 5.0可以工作。PHP 5.1不会。

因此,真正的问题是:

如何修复PHP以使其成为最新的稳定版本(根据PHP.net,为5.3.9)?如何使我的CentOS机器更像Ubuntu,这样我不必再次处理?

非常感谢。

编辑:CentOS 5.7是由托管公司上周安装的,所以我不知道他们为什么会安装较旧版本的CentOS,而不是最新版本。我至少需要PHP 3.2,因此,我感谢有关该操作的建议。我对软件包和存储库不是很熟悉,但是似乎任何人都可以启动存储库,因此我担心从随机的存储库中安装东西可能会感染服务器。


1
可以指出的是,如果您坚持使用LTS版本的Ubuntu,则Hardy使用的是php 5.2,而Lucid使用的是稍稍不太新的5.3.2。在标准Ubuntu LTS存储库中,也有类似的“旧”版本的mysql服务器。RHEL5比Hardy早一年发布,因此它在php 5.1上也就不足为奇了。RHEL和Ubuntu LTS旨在提高程序包的稳定性。如果您想了解更多最新信息,请使用Fedora或非LTS Ubuntu。
cjc 2012年

在这里您可以将PHP版本更新到PHP5.5 webtatic.com/packages/php55
Mirza Selimovic

Answers:


11

CentOS是非常保守的Red Hat Enterprise Linux的衍生产品,因此软件包更新通常比RHEL还要延迟。两种发行版中的软件包都将更旧一些。

如果您正在运行CentOS 5,则应尝试CentOS 6来查看它是否适合您的需求。

如果您需要比CentOS 6更先进的功能,则应考虑使用Fedora。

后续行动:CentOS已经“内部”提供,并且更加紧密地集成在一起。较新的CentOS发行版将看到更紧的发行周期的好处,但是对于较旧的发行版,此答案仍然适用。


2
该线程中的错误信息数量绝对是令人震惊的。CentOS 5已经包含PHP 5.3一年多了,但是由于ABI的考虑,它不是默认安装的版本。yum install php53将带您上路。
jgoldschrafe 2012年

真正。我决定教他如何钓鱼,而不是给他一条鱼。我想这实际上有些狡猾,但我已经36点睡了几个小时,而且由于SPOF中断,这个周末也不会睡很多。
麦哲伦2012年

2
@jgoldschrafe-我建议您写一个自己的答案-比起批注更有效。
EEAA 2012年

它是托管公司的专用服务器。就我个人而言,我本来希望将服务器安装在我们的房屋上,但是老板觉得这种方式更安全。我不知道托管公司为什么会安装CentOS 5.7而不是最新版本。
Buttle Butkus 2012年

4
@jgoldschrafe,对我来说,这个问题似乎并不是专门针对php版本的。看来问题似乎与保守的释放政策有关,我认为该职位试图回答这一问题。我认为称这种错误信息为上策。
Zoredache

6

他们并不落伍;它们是CentOS 5在其存储库中的最新版本。

为了稳定起见,Red Hat(和Ubuntu)从来没有将新的主要软件版本发布到给定OS版本的软件包存储库中,出于稳定性的考虑-您不想运行升级,突然之间没有配置工作。

相反,他们将安全修复程序和重要的错误修复程序移植到发布OS时“稳定”的软件版本中,从而避免引入新功能(及其错误)。

由于您使用的是CentOS 5,因此官方存储库中包含一些相当旧的版本。但是请不要担心-您可能可以轻松找到具有所需软件版本的第三方存储库。

或者,为什么不升级到6?


这不是完全正确的-PHP 5.3在核心存储库中,您只需要这样做即可yum install php53
jgoldschrafe 2012年

1
@jgoldschrafe好电话。尽管看起来更新的MySQL可能仍需要第三方仓库。
Shane Madden

“或者,为什么不升级到6?” 更好的问题是,为什么SingleHop在服务器上给我们5.7?@jgoldschrafe会替换已安装的软件包,还是我会手动删除它们?
Buttle Butkus 2012年

CentOS 6仅在几个月前可用。如果盒子是去年早些时候订购的,那应该是5.7。如果您可以选择使用CentOS 6重新映像机器,则可以这样做。
cjc 2012年

@cjc这是大约2周前订购的。我已经通过FTP下载了大约80GB,因此我认为仅进行此安装会更容易。我正在尝试使用jgoldschrafe建议的方法:yum install php53,但是由于已经安装了php,所以它不起作用。
Buttle Butkus 2012年

4

如果您要使用的话,我会说卸载CentOS并安装Ubuntu。但是它必须是您使用的CentOS的旧版本。CentOS 6.2使用PHP 5.3和MySQL 5.1。

您可以使用Remi存储库来获取Apache / PHP / MySQL的较新版本

而且您不会使您的CentOS计算机更像Ubuntu,因为它不是 Ubuntu。这就像在说“如何使克莱斯勒的驱动器更像福特”。


更新的响应:

我对此表示反对,所以我认为我的意图被误解了,让我设法纠正这一点。

我已经在我们的环境中设置了VPS并安装了软件包,所以我现在应该在您所在的位置:

[root@centos5 /]# cat /etc/issue
CentOS release 5.7 (Final)
Kernel \r on an \m

[root@centos5 /]# rpm -qa |grep php
php-common-5.1.6-27.el5_7.4
php-mysql-5.1.6-27.el5_7.4
php-cli-5.1.6-27.el5_7.4
php-pdo-5.1.6-27.el5_7.4
php-5.1.6-27.el5_7.4

在我的第一个回复中,我假设您想要最新版本,那么您应该使用如上所述的Remi存储库。但是,如果centOS内的PHP 5.3版本很好(5.3.3),请继续阅读。

尝试安装php53时,它抱怨存在冲突,因为此软件包将涵盖与PHP 5.1软件包相同的内容。为了解决这个问题,您需要删除所有与PHP相关的软件包,以以下内容开始:

[root@centos5 /]# yum remove php*
[root@centos5 /]# rpm -qa |grep php
[root@centos5 /]# 

接下来要做的是使用php53安装等效的软件包:

[root@centos5 /]# yum install php53 php53-cli php53-mysql
[root@centos5 /]# rpm -qa |grep php
php53-common-5.3.3-1.el5_7.5
php53-cli-5.3.3-1.el5_7.5
php53-pdo-5.3.3-1.el5_7.5
php53-5.3.3-1.el5_7.5
php53-mysql-5.3.3-1.el5_7.5

因此,PHP非常简单。但是MySQL是另一回事,因为MySQL 5.0是默认CentOS存储库中的唯一MySQL。我运行的是64位版本的CentOS,如果您不这样做,则需要调整以下内容以适合32位。

有几种方法可以做到这一点,但我将使用Remi存储库。它已经存在多年了,使用回购协议比使用普通的RPM文件更容易维护。

Remi需要EPEL存储库,因此请先安装它:

[root@centos5 /]# rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
Retrieving http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
warning: /var/tmp/rpm-xfer.lvLBMJ: Header V3 DSA signature: NOKEY, key ID 217521f6
Preparing...                ########################################### [100%]
   1:epel-release           ########################################### [100%]

接下来,安装Remi repo RPM

[root@centos5 /]# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
Retrieving http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
warning: /var/tmp/rpm-xfer.ztjinG: Header V3 DSA signature: NOKEY, key ID 00f97f56
Preparing...                ########################################### [100%]
   1:remi-release           ########################################### [100%]

接下来,删除当前的MySQL服务器(否则,在尝试安装新的MySQL服务器时会发生冲突)。注意!如果那里有数据库,请先进行备份!

[root@centos5 /]# yum remove mysql*

然后,您可以继续从Remi存储库安装MySQL:

[root@centos5 /]# yum --enablerepo=remi install mysql.x86_64 mysql-server.x86_64

现在,当您尝试启动MySQL时,它可能会失败,因为旧的mysql留下了一些东西,而摆脱它可能会很痛苦。就我而言,我需要删除一些东西才能使其正常工作。这些为我做到了:

# rm -rf /usr/share/mysql
# rm -rf /var/lib/mysql
# yum --enablerepo=remi reinstall mysql-libs
# /usr/libexec/mysqld --skip-grant &
# mysql_install_db
# /etc/init.d/mysqld stop
# /etc/init.d/mysqld start

1
Welp,这基本上是一个问题,即是否有办法获取最新的软件包而不是过期的软件包。
Buttle Butkus 2012年

@ButtleButkus我不知道您是否在更新时收到通知,所以我正在写评论以确保您这样做:)
Frands Hansen 2012年

刚刚看到您的更新。我确实解决了问题,您的答案似乎可能与我最终所做的事情相符。不过需要仔细检查我的笔记。
Buttle Butkus 2012年

1
还有更多其他来源提供最新的rpm。IUS 机架空间iuscommunity.org/pages/About.html和webtatic webtatic.com/projects/yum-repository
txyoji 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.