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

Обновление с php53 до php53u (epel в репозитории IUS) - Centos 6.4

Я хочу обновить свой сервер CentOS 6.4 с php53 (репозиторий epel) до php53u (репозиторий ius). Я уже включил репозиторий ius, но не решаюсь просто поиграть, потому что на сервере есть производственные веб-сайты.

(Поскольку производственные сайты находятся в Drupal 7, я хочу остаться на треке 5.3, но я также хочу установить сайт разработки Drupal 8, для которого требуется минимум 5.3.10 - epel дает мне только 5.3.3)

Может ли кто-нибудь подсказать мне, какой подход будет наиболее безопасным:

  1. удалите php53 (epel) и установите php53u
  2. просто установите php53u и посмотрите, что произойдет
  3. ваша другая рекомендация

Пара минут простоя вполне приемлема, но не более.

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

Проблема здесь в том, что «yum erase php» также извлекает зависимости. Это означает, что вы потеряете все установленные вами пакеты, зависящие от PHP. Существует команда yum под названием replace. но это не всегда присутствует и иногда ... удивляет. И не в лучшую сторону.

Таким образом, я предпочитаю вырваться 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\..*//'

Первая строка дает мне список пакетов, которые я поставил после erase Внутри yum shell. Вторая строка дает мне список пакетов, которые нужно поставить после install. Обратите внимание, что вам, возможно, придется обрабатывать некоторые вспомогательные пакеты (например, из PECL) вручную. Используйте какой-нибудь вариант на rpm -qa | grep php | grep -vE '^php53.*5\.3' чтобы выследить их. Однако они должны быть редкими.

Что я обычно делаю в CentOS 6.x для обновления php по умолчанию с 5.x до 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

Моя проблема вращалась вокруг проблемы "общие конфликты php53 с общими php". Коробка - старый сервер, и я собирался протестировать код, прежде чем поместить его на производственную машину. Он работает под управлением Centos 5 и раньше был производственным, но теперь его отправили на тестирование. Он слишком стар, чтобы переходить на Centos 6x без новых внутренностей, поэтому я пока не могу его использовать.

Итак ... практически ничего не работало, пока я не наткнулся на эту идею в сети:

Установите репозитории epel и ius. Удалите все пакеты php. Установите все пакеты php53u, как указано в ответе выше.

Я вообще не использовал "yum erase".

Хорошо, вот что я сделал, что сработало, а что нет:

Три сценария:

  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. Комментаторы рекомендовали сначала протестировать это на тестовом сервере (спасибо, что подбадривали меня!). Я тестировал его на сервере CentOS 5.9, на котором запущен сайт разработки Drupal 7 (и целая куча вещей, не связанных с php). На этом сервере работает сервер mysql 5.6, который требует установки rpm php53u-mysql вручную с помощью --nodeps, чтобы заставить его работать - просто добавив это здесь для полноты картины.

В конце концов, простоя не было, просто была аккуратная перезагрузка httpd.