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


14

Я работаю на новом сервере 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 как минимум, поэтому я благодарен за предложения о том, как это сделать. Я не очень знаком с пакетами и репозиториями, но похоже, что любой может запустить репозиторий, и поэтому я обеспокоен установкой вещей из некоторого случайного репозитория, который может заразить сервер.


1
Можно отметить, что, если вы придерживаетесь версии Ubuntu для LTS, Hardy работает на php 5.2, а Lucid - на немного не совсем блестящем 5.3.2. В стандартных репозиториях Ubuntu LTS есть аналогично «старые» версии сервера mysql. RHEL5 вышел за год до Hardy, поэтому неудивительно, что он на php 5.1. RHEL и Ubuntu LTS созданы для стабильности пакета. Если вы хотите что-то более современное, используйте Fedora или не-LTS Ubuntu.
CJC

Здесь вы можете обновить свою версию PHP до PHP5.5 webtatic.com/packages/php55
Мирза Селимович

Ответы:


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

Правда. Я решил научить его ловить рыбу, а не давать ему рыбу. И я полагаю, что это было немного странно, но я спал пару часов из 36 и не буду много спать в эти выходные из-за перебоев с SPOF.
Магеллан

2
@jgoldschrafe - я бы предложил написать свой собственный ответ - это было бы более продуктивно, чем просто комментировать с исправлениями.
EEAA

Это выделенный сервер в хостинговой компании. Лично я хотел бы иметь сервер в нашей собственности, но босс чувствовал себя безопаснее. Интересно, почему хостинговая компания установит CentOS 5.7 вместо самой последней?
Баттл Буткус

4
@jgoldschrafe, для меня вопрос, похоже, не касался конкретно версии php. Похоже, вопрос был о консервативной политике выпуска, на которую, я думаю, пост пытается ответить. Я думаю, что называть эту недостоверную информацию непростой задачей.
Zoredache

6

Они не устарели; они последние, что CentOS 5 имеет в своих хранилищах.

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

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

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

Или почему бы не обновить до 6?


Это не совсем верно - PHP 5.3 находится в репозитории ядра, и вам просто нужно yum install php53.
jgoldschrafe

1
@jgoldschrafe Хороший звонок. Хотя похоже, что для более новой версии MySQL все еще может понадобиться стороннее репо.
Шейн Мэдден

"Или почему бы не обновить до 6?" Лучший вопрос: почему SingleHop дал нам 5,7 на сервере? @jgoldschrafe, это заменит установленные пакеты, или я должен удалить их вручную?
Баттл Буткус

CentOS 6 стал доступен только несколько месяцев назад. Если бы коробка была заказана ранее в прошлом году, она была бы 5.7. Если у вас есть возможность изменить образ машины с помощью CentOS 6, вы, безусловно, можете это сделать.
CJC

@cjc Это было только что заказано около 2 недель назад. У меня уже есть FTP около 80 ГБ, так что я думаю, что было бы проще сделать эту установку работающей. Я пытаюсь использовать то, что рекомендовал jgoldschrafe: yum установить php53, но это не работает, потому что php уже установлен.
Баттл Буткус

4

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

Вы можете использовать репозиторий Remi для получения более новых версий Apache / PHP / MySQL

И вы не заставляете свою машину CentOS работать больше как Ubuntu, потому что это не Ubuntu. Это все равно, что сказать: «Как мне сделать так, чтобы мой Chrysler ездил больше как Ford».


Обновленный ответ:

Я получил несколько отрицательных голосов по этому вопросу, поэтому я думаю, что мои намерения были неправильно поняты, позвольте мне попытаться исправить это.

Я установил 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-битной.

Есть несколько способов сделать это, но я собираюсь пойти с репозиторием 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%]

Далее вы устанавливаете RPM-репозиторий Remi

[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

1
Welp, это в основном вопрос о том, есть ли способ получить современные пакеты, а не устаревшие пакеты.
Баттл Буткус

@ButtleButkus Я не знаю, если вы получите уведомление, когда я обновлюсь, поэтому я пишу комментарий, чтобы убедиться, что вы делаете :)
Frands Hansen

Только что увидел ваше обновление. Я решил проблему, и ваш ответ выглядит так, как если бы я закончил. Нужно перепроверить мои записи, хотя.
Баттл Буткус

1
Есть еще несколько источников для современных rpms. Rackspace IUS iuscommunity.org/pages/About.html и webtatic webtatic.com/projects/yum-repository
txyoji
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.