Назад | Перейти на главную страницу

Почему yum устанавливает устаревшие пакеты на CentOS? (в частности PHP 5.1) Как исправить?

Я работаю над новым сервером CentOS и очень раздражен, узнав, что yum не работает так гладко и блестяще, как "apt-get install" в Ubuntu.

Установив стек 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, хотя текущий выпуск - 5.5.20. Но, надеюсь, mysql 5.0 будет работать. PHP 5.1 не будет.

Итак, настоящий вопрос (ы):

Как мне исправить мой PHP, чтобы он стал последней стабильной версией (5.3.9 согласно PHP.net)? Как мне заставить мою машину CentOS работать больше как Ubuntu, чтобы мне больше не приходилось с этим сталкиваться?

Огромное спасибо.

РЕДАКТИРОВАТЬ: CentOS 5.7 был установлен хостинг-компанией на прошлой неделе, поэтому я не знаю, почему они установили более старую версию CentOS, а не самую последнюю. Мне нужен как минимум PHP 3.2, поэтому я ценю предложения, как это сделать. Я не очень знаком с пакетами и репозиториями, но похоже, что любой может запустить репозиторий, поэтому меня беспокоит установка вещей из какого-то случайного репозитория, которые могут заразить сервер.

CentOS является ПРОИЗВОДСТВОМ очень консервативной Red Hat Enterprise Linux, поэтому обновления пакетов обычно откладываются даже дальше, чем RHEL. Пакеты в любом из дистрибутивов будут немного старше.

Если вы используете CentOS 5, вам следует попробовать CentOS 6, чтобы узнать, подходит ли он вашим потребностям.

Если вам нужно что-то более современное, чем CentOS 6, вам следует изучить Fedora.

Последующие действия: CentOS была внедрена «внутри компании» и более тесно интегрирована. В новых выпусках CentOS будут видны преимущества более жесткого цикла выпуска, но для более старых выпусков этот ответ по-прежнему будет верным.

Они не устарели; они последние из репозиториев CentOS 5.

Red Hat (и Ubuntu, если на то пошло) никогда, никогда не публикует новую основную версию программного обеспечения в своих репозиториях пакетов для данной версии ОС, ради стабильности - вы не хотите запускать обновление, и вдруг ваша конфигурация не работай.

Вместо этого они переносят исправления безопасности и важные исправления в ту версию программного обеспечения, которая была «стабильной» на момент выпуска ОС, избегая введения новых функций (и их ошибок).

Поскольку вы используете CentOS 5, в официальных репозиториях есть довольно старые версии вещей. Но не бойтесь - вы, вероятно, легко найдете сторонний репозиторий с необходимыми вам версиями программного обеспечения.

Или почему бы не перейти на 6?

Я бы сказал, удалите CentOS и установите Ubuntu, если это то, что вы хотите использовать. Но это должна быть более старая версия CentOS, которую вы используете. CentOS 6.2 использует PHP 5.3 и MySQL 5.1.

Ты можешь использовать Репозиторий Реми для получения более новых версий 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, как я сказал выше. Однако, если версия PHP 5.3 в CentOS подходит (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 - единственный MySQL в репозиториях CentOS по умолчанию. Я запускаю 64-битную версию CentOS, если вам не нужно, вместо этого настраивать следующее, чтобы соответствовать 32-битной версии.

Есть несколько способов сделать это, но я выберу репозиторий Реми. Он существует уже много лет, и его легче поддерживать с репо, чем с использованием простых файлов RPM.

Реми требует Репозиторий 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%]

Затем вы устанавливаете RPM Remi repo

[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*

Затем вы можете продолжить и установить MySQL из репозитория Remi:

[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