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

我正在研究一个新的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最低。 另外,我看到它安装了mysql 5.0.77,尽pipe目前的版本是5.5.20。 但希望MySQL 5.0将工作。 PHP 5.1不会。

所以真正的问题是():

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

非常感谢。

编辑:CentOS 5.7上周由托pipe公司安装,所以我不知道他们为什么要安装CentOS的旧版本,而不是最新版本。 我至less需要PHP 3.2,所以我很欣赏如何做到这一点的build议。 我对包和存储库不是很熟悉,但似乎任何人都可以启动一个存储库,所以我很担心从一些可能感染服务器的随机存储库中安装东西。

CentOS是非常保守的红帽企业Linux的衍生产品,所以软件包更新通常比RHEL更进一步延迟。 这两种版本的软件包都会稍微老一点。

如果你正在运行CentOS 5,你应该试试CentOS 6来看看它是否适合你的需求。

如果你需要一些比CentOS 6更先进的东西,你应该看看Fedora。

后续措施:CentOS已经被“内部”带入,并且更加紧密地集成在一起。 较新的CentOS版本将会看到更严格的发布周期的好处,但是对于较早版本,这个答案仍然适用。

他们不过时; 他们是CentOS 5在其仓库中的最新版本。

为了稳定性,Red Hat(和Ubuntu)永远不会在其软件仓库中发布一个新的主要版本的软件,为了稳定性 – 你不想运行升级,并突然让你的configuration不是工作。

相反,他们将安全修复和重要的错误修复移植到操作系统发布时“稳定”的软件版本中,避免引入新function(及其错误)。

由于你在CentOS 5上,官方的软件库有一些相当老的版本。 但是不要害怕 – 你可能很容易find一个第三方仓库和你需要的软件版本。

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

我会说卸载CentOS和安装Ubuntu,如果这就是你想使用的。 但是它必须是你使用的CentOS的老版本。 CentOS 6.2使用PHP 5.3和MySQL 5.1。

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

而且你不会让你的CentOS机器更像Ubuntu,因为它不是 Ubuntu。 这就像是说“我怎样让克莱斯勒的驾驶更像福特”。


更新回应:

我在这方面得到了一些赞成票,所以我觉得我的意图被误解了,让我试着去纠正这个问题。

我已经在我们的环境中build立了一个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文件比使用repo更容易维护。

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服务器(否则在尝试安装新服务器时会发生冲突)。 如果你有那里的数据库,做这个之前做一个备份!

 [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